Files
blog-server/internal/db/query/sys_roles.sql

94 lines
2.1 KiB
SQL

-- name: CreateRole :exec
INSERT INTO sys_roles (name, code, status)
VALUES ($1, $2, $3);
-- name: ListAllRoles :many
SELECT *
from sys_roles;
-- name: ListRoles :many
SELECT *
FROM sys_roles
ORDER BY id
LIMIT $1 OFFSET $2;
-- name: CountRoles :one
SELECT COUNT(*)
FROM sys_roles;
-- name: GetRoleByID :one
SELECT *
FROM sys_roles
WHERE id = $1;
-- name: ExistsRoleCode :one
SELECT EXISTS(SELECT 1
FROM sys_roles
WHERE code = sqlc.arg(code)
AND (
sqlc.narg(id)::integer IS NULL
OR id <> sqlc.narg(id)::integer
));
-- name: UpdateRole :execrows
UPDATE sys_roles
SET name = coalesce(sqlc.narg('name'), name),
status = coalesce(sqlc.narg('status'), status)
WHERE id = sqlc.arg('id');
-- name: DeleteRole :execrows
DELETE
FROM sys_roles
WHERE id = $1;
-- name: CreateRolePermission :copyfrom
INSERT INTO sys_role_permission (role_id, permission_id)
VALUES ($1, $2);
-- name: ListPermissionIDsByMenuIDs :many
SELECT permission_id
FROM sys_menu_permission
WHERE menu_id = ANY ($1::int[]);
-- name: ListPermissionIDsByApiIDs :many
SELECT permission_id
FROM sys_api_permission
WHERE api_id = ANY ($1::int[]);
-- name: ListRoleMenus :many
SELECT m.id, m.name
FROM sys_role_permission rp
JOIN sys_menu_permission mp ON mp.permission_id = rp.permission_id
JOIN sys_menus m ON m.id = mp.menu_id
WHERE rp.role_id = $1;
-- name: ListRoleApis :many
SELECT a.id, a."name"
FROM sys_role_permission rp
JOIN sys_api_permission ap ON ap.permission_id = rp.permission_id
JOIN sys_apis a ON a.id = ap.api_id
WHERE rp.role_id = $1;
-- name: DeleteRolePermissionsByType :exec
DELETE
FROM sys_role_permission rp USING sys_permissions p
WHERE rp.permission_id = p.id
AND rp.role_id = $1
AND p."type" = $2;
-- name: DeleteRolePermissionsByRoleID :exec
DELETE
FROM sys_role_permission
WHERE role_id = $1;
-- name: DeleteRolePermissionByPermissionID :exec
DELETE
FROM sys_role_permission
WHERE permission_id = $1;
-- name: DeleteUserRoleByRoleID :exec
DELETE
FROM sys_user_role
WHERE role_id = $1;