projectx/internal/db/query/sys_role.sql
2025-03-31 11:59:42 +08:00

77 lines
1.7 KiB
SQL

-- name: CreateSysRole :one
INSERT INTO sys_role (
name,
display_name,
vip,
parent_id,
parent_path,
status,
sort,
created_at,
updated_at
) VALUES (
$1, $2, $3, $4, $5, $6, $7, $8, $9
) RETURNING *;
-- name: UpdateSysRole :one
UPDATE sys_role
SET display_name = $2,
status = $3,
parent_id = $4,
parent_path = $5,
sort = $6,
updated_at = $7
WHERE id = $1
RETURNING *;
-- name: GetSysRole :one
SELECT * FROM sys_role
WHERE id = $1 LIMIT 1;
-- name: CountSysRole :one
SELECT count(*) FROM sys_role
WHERE status = 0;
-- name: ListSysRole :many
SELECT * FROM sys_role
WHERE status = 0;
-- name: AllSysRole :many
SELECT * FROM sys_role
WHERE status = 0
ORDER BY sort DESC;
-- name: GetSysRoleByUserID :one
SELECT * FROM sys_role
WHERE id = (SELECT role_id
FROM sys_user
WHERE sys_user.id = $1);
-- name: ExistsVipRole :one
SELECT EXISTS (
SELECT 1 FROM sys_role
WHERE vip = true
);
-- name: GetFirstVipRole :one
SELECT * FROM sys_role
WHERE vip = true
ORDER BY id ASC
LIMIT 1;
-- name: CountSysRoleCondition :one
SELECT COUNT(*) FROM sys_role
WHERE (NOT @is_status::Boolean OR status = @status)
AND (NOT @is_id::Boolean OR id = @id)
AND (NOT @is_parent_id::Boolean OR parent_id = @parent_id)
AND (@display_name::text = '' OR display_name ILIKE '%' || @display_name || '%');
-- name: ListSysRoleCondition :many
SELECT * FROM sys_role
WHERE (NOT @is_status::Boolean OR status = @status)
AND (NOT @is_id::Boolean OR id = @id)
AND (NOT @is_parent_id::Boolean OR parent_id = @parent_id)
AND (@display_name::text = '' OR display_name ILIKE '%' || @display_name || '%')
ORDER BY created_at DESC
OFFSET @skip
LIMIT @size;