-- name: CreateSysUser :exec INSERT INTO sys_users (account, username, password_hash, avatar_id) VALUES ($1, $2, $3, $4); -- name: GetSysUserByID :one SELECT u.id, u.account, u.username, u.avatar_id, f.file_path AS avatar_url, u.created_at, u.updated_at FROM sys_users u LEFT JOIN files f ON u.avatar_id = f.id WHERE u.id = $1; -- name: GetSysUserByAccount :one SELECT u.id, u.account, u.username, u.password_hash, u.avatar_id, f.file_path AS avatar_url, u.created_at, u.updated_at FROM sys_users u LEFT JOIN files f ON u.avatar_id = f.id WHERE u.account = $1; -- name: ListSysUsers :many SELECT u.id, u.account, u.username, u.avatar_id, f.file_path AS avatar_url, u.created_at, u.updated_at FROM sys_users u LEFT JOIN files f ON u.avatar_id = f.id ORDER BY u.id LIMIT $1 OFFSET $2; -- name: CountSysUsers :one SELECT COUNT(*) FROM sys_users; -- name: UpdateSysUser :execrows UPDATE sys_users SET username = coalesce(sqlc.narg('username'), username), avatar_id = CASE WHEN @update_avatar_id::boolean THEN @avatar_id ELSE avatar_id END WHERE id = sqlc.arg('id'); -- name: UpdateSysUserPassword :execrows UPDATE sys_users SET password_hash = $2 WHERE id = $1; -- name: DeleteSysUser :execrows DELETE FROM sys_users WHERE id = $1 AND id <> 1; -- name: ClearSysUserRoles :exec DELETE FROM sys_user_role WHERE user_id = $1; -- name: CreateSysUserRole :exec INSERT INTO sys_user_role (user_id, role_id) VALUES ($1, $2); -- name: GetSysUserRoles :many SELECT r.* FROM sys_roles r JOIN sys_user_role ur ON r.id = ur.role_id WHERE ur.user_id = $1; -- name: GetSysAdminMenus :many SELECT * FROM sys_menus ORDER BY sort, id; -- name: GetSysUserMenus :many SELECT DISTINCT m.* FROM sys_users u JOIN sys_user_role ur ON ur.user_id = u.id JOIN sys_roles r ON r.id = ur.role_id JOIN sys_role_permission rp ON rp.role_id = r.id JOIN sys_permissions p ON p.id = rp.permission_id JOIN sys_menu_permission mp ON mp.permission_id = p.id JOIN sys_menus m ON m.id = mp.menu_id WHERE u.id = $1 ORDER BY m.sort, m.id; -- name: GetSysUserApis :many SELECT DISTINCT a.id, a.PATH, a.METHOD FROM sys_users u JOIN sys_user_role ur ON u.id = ur.user_id JOIN sys_role_permission rp ON rp.role_id = ur.role_id JOIN sys_permissions p ON p.id = rp.permission_id AND p.TYPE = 1 JOIN sys_api_permission ap ON ap.permission_id = p.id JOIN sys_apis a ON a.id = ap.api_id WHERE u.id = $1;