174 lines
4.7 KiB
Go
174 lines
4.7 KiB
Go
// Code generated by sqlc. DO NOT EDIT.
|
|
// versions:
|
|
// sqlc v1.30.0
|
|
// source: user_roles.sql
|
|
|
|
package db
|
|
|
|
import (
|
|
"context"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/jackc/pgx/v5/pgtype"
|
|
)
|
|
|
|
const assignRoleToUser = `-- name: AssignRoleToUser :one
|
|
INSERT INTO user_roles (user_id, role_id)
|
|
VALUES (
|
|
$1,
|
|
$2)
|
|
RETURNING user_id, role_id, assigned_at
|
|
`
|
|
|
|
type AssignRoleToUserParams struct {
|
|
UserID uuid.UUID `db:"user_id" json:"userId"`
|
|
RoleID uuid.UUID `db:"role_id" json:"roleId"`
|
|
}
|
|
|
|
func (q *Queries) AssignRoleToUser(ctx context.Context, arg AssignRoleToUserParams) (UserRole, error) {
|
|
row := q.db.QueryRow(ctx, assignRoleToUser, arg.UserID, arg.RoleID)
|
|
var i UserRole
|
|
err := row.Scan(&i.UserID, &i.RoleID, &i.AssignedAt)
|
|
return i, err
|
|
}
|
|
|
|
const countUsersByRoleID = `-- name: CountUsersByRoleID :one
|
|
SELECT COUNT(*) FROM user_roles
|
|
WHERE role_id = $1
|
|
`
|
|
|
|
func (q *Queries) CountUsersByRoleID(ctx context.Context, roleID uuid.UUID) (int64, error) {
|
|
row := q.db.QueryRow(ctx, countUsersByRoleID, roleID)
|
|
var count int64
|
|
err := row.Scan(&count)
|
|
return count, err
|
|
}
|
|
|
|
const getUserRole = `-- name: GetUserRole :one
|
|
SELECT user_id, role_id, assigned_at FROM user_roles
|
|
WHERE user_id = $1 AND role_id = $2
|
|
`
|
|
|
|
type GetUserRoleParams struct {
|
|
UserID uuid.UUID `db:"user_id" json:"userId"`
|
|
RoleID uuid.UUID `db:"role_id" json:"roleId"`
|
|
}
|
|
|
|
func (q *Queries) GetUserRole(ctx context.Context, arg GetUserRoleParams) (UserRole, error) {
|
|
row := q.db.QueryRow(ctx, getUserRole, arg.UserID, arg.RoleID)
|
|
var i UserRole
|
|
err := row.Scan(&i.UserID, &i.RoleID, &i.AssignedAt)
|
|
return i, err
|
|
}
|
|
|
|
const getUserRolesByRoleID = `-- name: GetUserRolesByRoleID :many
|
|
SELECT ur.user_id, ur.role_id, ur.assigned_at, u.username, u.email, u.full_name
|
|
FROM user_roles ur
|
|
JOIN users u ON u.id = ur.user_id
|
|
WHERE ur.role_id = $1
|
|
ORDER BY ur.assigned_at DESC
|
|
`
|
|
|
|
type GetUserRolesByRoleIDRow struct {
|
|
UserID uuid.UUID `db:"user_id" json:"userId"`
|
|
RoleID uuid.UUID `db:"role_id" json:"roleId"`
|
|
AssignedAt pgtype.Timestamptz `db:"assigned_at" json:"assignedAt"`
|
|
Username string `db:"username" json:"username"`
|
|
Email string `db:"email" json:"email"`
|
|
FullName pgtype.Text `db:"full_name" json:"fullName"`
|
|
}
|
|
|
|
func (q *Queries) GetUserRolesByRoleID(ctx context.Context, roleID uuid.UUID) ([]GetUserRolesByRoleIDRow, error) {
|
|
rows, err := q.db.Query(ctx, getUserRolesByRoleID, roleID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []GetUserRolesByRoleIDRow
|
|
for rows.Next() {
|
|
var i GetUserRolesByRoleIDRow
|
|
if err := rows.Scan(
|
|
&i.UserID,
|
|
&i.RoleID,
|
|
&i.AssignedAt,
|
|
&i.Username,
|
|
&i.Email,
|
|
&i.FullName,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const getUserRolesByUserID = `-- name: GetUserRolesByUserID :many
|
|
SELECT ur.user_id, ur.role_id, ur.assigned_at, r.name AS role_name, r.description AS role_description
|
|
FROM user_roles ur
|
|
JOIN roles r ON r.id = ur.role_id
|
|
WHERE ur.user_id = $1
|
|
ORDER BY ur.assigned_at DESC
|
|
`
|
|
|
|
type GetUserRolesByUserIDRow struct {
|
|
UserID uuid.UUID `db:"user_id" json:"userId"`
|
|
RoleID uuid.UUID `db:"role_id" json:"roleId"`
|
|
AssignedAt pgtype.Timestamptz `db:"assigned_at" json:"assignedAt"`
|
|
RoleName string `db:"role_name" json:"roleName"`
|
|
RoleDescription pgtype.Text `db:"role_description" json:"roleDescription"`
|
|
}
|
|
|
|
func (q *Queries) GetUserRolesByUserID(ctx context.Context, userID uuid.UUID) ([]GetUserRolesByUserIDRow, error) {
|
|
rows, err := q.db.Query(ctx, getUserRolesByUserID, userID)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
defer rows.Close()
|
|
var items []GetUserRolesByUserIDRow
|
|
for rows.Next() {
|
|
var i GetUserRolesByUserIDRow
|
|
if err := rows.Scan(
|
|
&i.UserID,
|
|
&i.RoleID,
|
|
&i.AssignedAt,
|
|
&i.RoleName,
|
|
&i.RoleDescription,
|
|
); err != nil {
|
|
return nil, err
|
|
}
|
|
items = append(items, i)
|
|
}
|
|
if err := rows.Err(); err != nil {
|
|
return nil, err
|
|
}
|
|
return items, nil
|
|
}
|
|
|
|
const removeAllRolesFromUser = `-- name: RemoveAllRolesFromUser :exec
|
|
DELETE FROM user_roles
|
|
WHERE user_id = $1
|
|
`
|
|
|
|
func (q *Queries) RemoveAllRolesFromUser(ctx context.Context, userID uuid.UUID) error {
|
|
_, err := q.db.Exec(ctx, removeAllRolesFromUser, userID)
|
|
return err
|
|
}
|
|
|
|
const removeRoleFromUser = `-- name: RemoveRoleFromUser :exec
|
|
DELETE FROM user_roles
|
|
WHERE user_id = $1 AND role_id = $2
|
|
`
|
|
|
|
type RemoveRoleFromUserParams struct {
|
|
UserID uuid.UUID `db:"user_id" json:"userId"`
|
|
RoleID uuid.UUID `db:"role_id" json:"roleId"`
|
|
}
|
|
|
|
func (q *Queries) RemoveRoleFromUser(ctx context.Context, arg RemoveRoleFromUserParams) error {
|
|
_, err := q.db.Exec(ctx, removeRoleFromUser, arg.UserID, arg.RoleID)
|
|
return err
|
|
}
|