// 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 }