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

29
db/queries/cabinet.sql Normal file
View File

@@ -0,0 +1,29 @@
-- name: GetCabinetByID :one
SELECT * FROM cabinets
WHERE id = sqlc.arg(id);
-- name: ListCabinets :many
SELECT * FROM cabinets
ORDER BY created_at DESC;
-- name: CreateCabinet :one
INSERT INTO cabinets (room_id,name, description, created_at)
VALUES (
sqlc.arg(room_id),
sqlc.arg(name),
sqlc.arg(description),
sqlc.arg(created_at)
)
RETURNING *;
-- name: UpdateCabinet :one
UPDATE cabinets
SET name = coalesce(sqlc.arg(name), name),
description = coalesce(sqlc.arg(description), description),
updated_at = sqlc.arg(updated_at)
WHERE id = sqlc.arg(id)
RETURNING *;
-- name: DeleteCabinet :exec
DELETE FROM cabinets
WHERE id = sqlc.arg(id);

View File

26
db/queries/roles.sql Normal file
View File

@@ -0,0 +1,26 @@
-- name: GetRoleByID :one
SELECT * FROM roles
WHERE id = sqlc.arg(id);
-- name: ListRoles :many
SELECT * FROM roles
ORDER BY created_at DESC;
-- name: CreateRole :one
INSERT INTO roles (name, description, created_by)
VALUES (
sqlc.arg(name),
sqlc.arg(description),
sqlc.arg(created_by))
RETURNING *;
-- name: UpdateRole :one
UPDATE roles
SET name = sqlc.arg(name),
description = sqlc.arg(description)
WHERE id = sqlc.arg(id)
RETURNING *;
-- name: DeleteRole :exec
DELETE FROM roles
WHERE id = sqlc.arg(id);

29
db/queries/room.sql Normal file
View File

@@ -0,0 +1,29 @@
-- name: GetRoomByID :one
SELECT * FROM rooms
WHERE id = sqlc.arg(id);
-- name: ListRooms :many
SELECT * FROM rooms
ORDER BY created_at DESC;
-- name: CreateRoom :one
INSERT INTO rooms (warehouse_id,name, description, created_at)
VALUES (
sqlc.arg(warehouse_id),
sqlc.arg(name),
sqlc.arg(description),
sqlc.arg(created_at)
)
RETURNING *;
-- name: UpdateRoom :one
UPDATE rooms
SET name = coalesce(sqlc.arg(name), name),
description = coalesce(sqlc.arg(description), description),
updated_at = sqlc.arg(updated_at)
WHERE id = sqlc.arg(id)
RETURNING *;
-- name: DeleteRoom :exec
DELETE FROM rooms
WHERE id = sqlc.arg(id);

36
db/queries/user_roles.sql Normal file
View File

@@ -0,0 +1,36 @@
-- name: GetUserRolesByUserID :many
SELECT ur.*, 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 = sqlc.arg(user_id)
ORDER BY ur.assigned_at DESC;
-- name: GetUserRolesByRoleID :many
SELECT ur.*, u.username, u.email, u.full_name
FROM user_roles ur
JOIN users u ON u.id = ur.user_id
WHERE ur.role_id = sqlc.arg(role_id)
ORDER BY ur.assigned_at DESC;
-- name: GetUserRole :one
SELECT * FROM user_roles
WHERE user_id = sqlc.arg(user_id) AND role_id = sqlc.arg(role_id);
-- name: AssignRoleToUser :one
INSERT INTO user_roles (user_id, role_id)
VALUES (
sqlc.arg(user_id),
sqlc.arg(role_id))
RETURNING *;
-- name: RemoveRoleFromUser :exec
DELETE FROM user_roles
WHERE user_id = sqlc.arg(user_id) AND role_id = sqlc.arg(role_id);
-- name: RemoveAllRolesFromUser :exec
DELETE FROM user_roles
WHERE user_id = sqlc.arg(user_id);
-- name: CountUsersByRoleID :one
SELECT COUNT(*) FROM user_roles
WHERE role_id = sqlc.arg(role_id);

23
db/queries/users.sql Normal file
View File

@@ -0,0 +1,23 @@
-- name: GetUserByID :one
SELECT * FROM users
WHERE id = sqlc.arg(id);
-- name: GetUserByEmail :one
SELECT * FROM users
WHERE email = sqlc.arg(email)
LIMIT 1;
-- name: GetUserByUsername :one
SELECT * FROM users
WHERE username = sqlc.arg(username)
LIMIT 1;
-- name: CreateUser :one
INSERT INTO users (username, email, password_hash, full_name, created_by)
VALUES (
sqlc.arg(username),
sqlc.arg(email),
sqlc.arg(password_hash),
sqlc.arg(full_name),
sqlc.arg(created_by))
RETURNING id;

30
db/queries/warehouse.sql Normal file
View File

@@ -0,0 +1,30 @@
-- name: GetWarehouseByID :one
SELECT * FROM warehouses
WHERE id = sqlc.arg(id);
-- name: ListWarehouses :many
SELECT * FROM warehouses
ORDER BY created_at DESC;
-- name: CreateWarehouse :one
INSERT INTO warehouses (name, description, address, created_at)
VALUES (
sqlc.arg(name),
sqlc.arg(description),
sqlc.arg(address),
sqlc.arg(created_at)
)
RETURNING *;
-- name: UpdateWarehouse :one
UPDATE warehouses
SET name = CASE WHEN sqlc.arg(name) = '' THEN name ELSE sqlc.arg(name) END,
description = coalesce(sqlc.arg(description), description),
address = coalesce(sqlc.arg(address), address),
updated_at = sqlc.arg(updated_at)
WHERE id = sqlc.arg(id)
RETURNING *;
-- name: DeleteWarehouse :exec
DELETE FROM warehouses
WHERE id = sqlc.arg(id);