Base Project

This commit is contained in:
Tran Anh Tuan
2026-05-08 14:32:24 +07:00
parent 5a9249c9ea
commit 6a4a96e0ca
74 changed files with 6749 additions and 0 deletions

173
sqlc_gen/user_roles.sql.go Normal file
View File

@@ -0,0 +1,173 @@
// 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
}