71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			SQL
		
	
	
	
	
	
| -- name: CreateSysDepartment :one
 | |
| INSERT INTO sys_department (
 | |
|   name,
 | |
|   parent_id,
 | |
|   parent_path,
 | |
|   status,
 | |
|   sort,
 | |
|   created_at,
 | |
|   updated_at
 | |
| ) VALUES (
 | |
|   $1, $2, $3, $4, $5, $6, $7
 | |
| ) RETURNING *;
 | |
| 
 | |
| -- name: UpdateSysDepartment :one
 | |
| UPDATE sys_department 
 | |
| SET name = $2,
 | |
|     parent_id = $3,
 | |
|     parent_path = $4,
 | |
|     status = $5,
 | |
|     sort = $6,
 | |
|     updated_at = $7
 | |
| WHERE id = $1
 | |
| RETURNING *;
 | |
| 
 | |
| -- name: GetSysDepartment :one
 | |
| SELECT * FROM sys_department 
 | |
| WHERE id = $1 LIMIT 1;
 | |
| 
 | |
| -- name: ListSysDepartment :many
 | |
| SELECT * FROM sys_department 
 | |
| WHERE status = 0;
 | |
| 
 | |
| -- name: CountSysDepartmentCondition :one
 | |
| SELECT COUNT(*) FROM sys_department
 | |
| 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 (@name::text = '' OR name ILIKE '%' || @name || '%');
 | |
| 
 | |
| -- name: ListSysDepartmentCondition :many
 | |
| SELECT * FROM sys_department
 | |
| 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 (@name::text = '' OR name ILIKE '%' || @name || '%')
 | |
| ORDER BY created_at DESC
 | |
| OFFSET @skip
 | |
| LIMIT @size;
 | |
| 
 | |
| -- name: AllSysDepartment :many
 | |
| SELECT * FROM sys_department 
 | |
| WHERE status = 0
 | |
| ORDER BY sort DESC;
 | |
| 
 | |
| -- name: ExistsSysDepartment :one
 | |
| SELECT EXISTS (
 | |
|     SELECT 1 FROM sys_department
 | |
| );
 | |
| 
 | |
| -- name: ListSysDepartmentRecursive :many
 | |
| WITH RECURSIVE dist AS (SELECT sys_department.*
 | |
|                         FROM sys_department
 | |
|                         WHERE status = 0
 | |
|                         UNION ALL
 | |
|                         SELECT sys_department.*
 | |
|                         FROM sys_department,
 | |
|                              dist
 | |
|                         WHERE sys_department.id = dist.parent_id)
 | |
| SELECT DISTINCT *
 | |
| FROM dist
 | |
| ORDER BY sort DESC; |