Test openapi schema of route /workgroup/*

add test and fix update workgroup
This commit is contained in:
2021-03-24 00:59:43 +01:00
parent 89b2abc10e
commit 66fa1ba840
4 changed files with 100 additions and 60 deletions

View File

@@ -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:

View File

@@ -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,