Test openapi schema of route /workgroup/*
add test and fix update workgroup
This commit is contained in:
@@ -1207,62 +1207,38 @@ paths:
|
||||
$ref: '#/components/schemas/Workgroup'
|
||||
404:
|
||||
description: Workshop not exist or are deleted
|
||||
# put:
|
||||
# summary: Edit one workgroup
|
||||
# security:
|
||||
# - JWTAuth: [ ]
|
||||
# tags:
|
||||
# - workgroup
|
||||
# requestBody:
|
||||
# content:
|
||||
# application/json:
|
||||
# schema:
|
||||
# required:
|
||||
# - name
|
||||
# properties:
|
||||
# name:
|
||||
# type: string
|
||||
# example: Les partisants du RIC
|
||||
# description:
|
||||
# type: string
|
||||
# example: Group formé pour la conception d'un RIC
|
||||
# logo:
|
||||
# type: string
|
||||
# nullable: true
|
||||
# anonymous:
|
||||
# type: boolean
|
||||
# example: false
|
||||
# nullable: true
|
||||
# default: true
|
||||
# owner:
|
||||
# type: string
|
||||
# format: uuid
|
||||
# example: 6434f4f9-f570-f22a-c134-8668350651ff
|
||||
# nullable: true
|
||||
# responses:
|
||||
# 200:
|
||||
# description: Workgroup updated
|
||||
# content:
|
||||
# application/json:
|
||||
# schema:
|
||||
# properties:
|
||||
# id:
|
||||
# type: string
|
||||
# format: uuid
|
||||
# name:
|
||||
# type: string
|
||||
# example: Les partisants du RIC
|
||||
# description:
|
||||
# type: string
|
||||
# example: Group formé pour la conception d'un RIC
|
||||
# logo:
|
||||
# type: string
|
||||
# anonymous:
|
||||
# type: boolean
|
||||
# example: false
|
||||
# owner:
|
||||
# type: string
|
||||
# format: uuid
|
||||
put:
|
||||
summary: Edit one workgroup
|
||||
security:
|
||||
- JWTAuth: [ ]
|
||||
tags:
|
||||
- workgroup
|
||||
requestBody:
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
example: Les partisants du RIC
|
||||
description:
|
||||
type: string
|
||||
example: Group formé pour la conception d'un RIC
|
||||
logo:
|
||||
type: string
|
||||
nullable: true
|
||||
anonymous:
|
||||
type: boolean
|
||||
example: false
|
||||
nullable: true
|
||||
default: true
|
||||
responses:
|
||||
200:
|
||||
description: Workgroup updated
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/Workgroup'
|
||||
delete:
|
||||
summary: Delete one workgroup
|
||||
security:
|
||||
|
||||
@@ -3,7 +3,7 @@ create or replace function upsert_workgroup(inout resource json)
|
||||
$$
|
||||
declare
|
||||
new_id uuid = coalesce((resource->>'id')::uuid, uuid_generate_v4());
|
||||
exists boolean = case when (select true from workgroup where id = new_id) is null then true else false end;
|
||||
exists boolean = case when (select true from workgroup where id = new_id) is null then false else true end;
|
||||
begin
|
||||
insert into workgroup (id, created_by_id, name, description, anonymous, logo)
|
||||
select
|
||||
@@ -20,15 +20,25 @@ begin
|
||||
anonymous = excluded.anonymous,
|
||||
logo = excluded.logo;
|
||||
|
||||
-- remove old members
|
||||
delete from citizen_in_workgroup cw
|
||||
where cw.workgroup_id = new_id
|
||||
and cw.citizen_id not in (
|
||||
select (m#>>'{citizen,id}')::uuid
|
||||
from json_array_elements(resource->'members') m
|
||||
);
|
||||
|
||||
-- insert new members
|
||||
insert into citizen_in_workgroup (workgroup_id, citizen_id, roles)
|
||||
select
|
||||
new_id::uuid,
|
||||
(m#>>'{citizen,id}')::uuid,
|
||||
json_to_array(m#>'{roles}')
|
||||
from json_array_elements(resource->'members') m;
|
||||
from json_array_elements(resource->'members') m
|
||||
on conflict do nothing;
|
||||
|
||||
-- insert master if no members
|
||||
if (exists) then
|
||||
if (exists = false) then
|
||||
insert into citizen_in_workgroup (workgroup_id, citizen_id, roles)
|
||||
select
|
||||
new_id::uuid,
|
||||
|
||||
Reference in New Issue
Block a user