97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			97 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| -- name: CreateSysMenu :one
 | |
| INSERT INTO sys_menu (
 | |
|     name, 
 | |
|     display_name, 
 | |
|     url, 
 | |
|     type, 
 | |
|     parent_id, 
 | |
|     parent_path, 
 | |
|     avatar, 
 | |
|     style, 
 | |
|     visible, 
 | |
|     is_list, 
 | |
|     status, 
 | |
|     sort, 
 | |
|     created_at, 
 | |
|     updated_at
 | |
| ) VALUES (
 | |
|     $1, $2, $3, $4, $5, $6, $7, $8, $9, $10, $11, $12, $13, $14
 | |
| ) RETURNING *;
 | |
| 
 | |
| -- name: UpdateSysMenu :one
 | |
| UPDATE sys_menu
 | |
| SET name         = $2,
 | |
|     display_name = $3,
 | |
|     url          = $4,
 | |
|     type         = $5,
 | |
|     parent_id    = $6,
 | |
|     parent_path  = $7,
 | |
|     avatar       = $8,
 | |
|     style        = $9,
 | |
|     visible      = $10,
 | |
|     is_list      = $11,
 | |
|     status       = $12,
 | |
|     sort		     = $13,
 | |
|     updated_at   = $14
 | |
| WHERE id = $1
 | |
| RETURNING *;
 | |
| 
 | |
| -- name: GetSysMenu :one
 | |
| SELECT * FROM sys_menu
 | |
| WHERE id = $1 LIMIT 1;
 | |
| 
 | |
| -- name: GetSysMenuByUrl :one
 | |
| SELECT * FROM sys_menu
 | |
| WHERE url = $1 LIMIT 1;
 | |
| 
 | |
| -- name: AllSysMenu :many
 | |
| SELECT * FROM sys_menu
 | |
| WHERE status = 0
 | |
| ORDER BY sort DESC;
 | |
| 
 | |
| -- name: ListSysMenuByRoleID :many
 | |
| SELECT * FROM sys_menu
 | |
| WHERE id IN (SELECT menu_id
 | |
|             FROM sys_role_menu
 | |
|             WHERE role_id = $1);
 | |
| 
 | |
| -- name: ListSysMenuIDByRoleID :many
 | |
| SELECT menu_id
 | |
| FROM sys_role_menu
 | |
| WHERE role_id = $1;
 | |
| 
 | |
| -- name: ExistsMenu :one
 | |
| SELECT EXISTS (
 | |
|     SELECT 1 FROM sys_menu
 | |
| );
 | |
| 
 | |
| -- name: RecursiveSysMenus :many
 | |
| WITH RECURSIVE dist AS (SELECT sys_menu.*
 | |
|                         FROM sys_menu
 | |
|                         WHERE status = 0
 | |
|                           AND is_list = true
 | |
|                         UNION ALL
 | |
|                         SELECT sys_menu.*
 | |
|                         FROM sys_menu,
 | |
|                              dist
 | |
|                         WHERE sys_menu.id = dist.parent_id)
 | |
| SELECT *
 | |
| FROM dist
 | |
| ORDER BY dist.sort DESC, dist.id ASC;
 | |
| 
 | |
| -- name: RecursiveSysMenusByRoleID :many
 | |
| WITH RECURSIVE dist AS (SELECT sys_menu.*
 | |
|                         FROM sys_menu
 | |
|                         WHERE status = 0
 | |
|                           AND is_list = true
 | |
|                           AND id IN (SELECT menu_id
 | |
|                                      FROM sys_role_menu
 | |
|                                      WHERE role_id = $1)
 | |
|                         UNION ALL
 | |
|                         SELECT sys_menu.*
 | |
|                         FROM sys_menu,
 | |
|                              dist
 | |
|                         WHERE sys_menu.id = dist.parent_id)
 | |
| SELECT *
 | |
| FROM dist
 | |
| ORDER BY dist.sort DESC, dist.id ASC; |