Add delete workgroup query & repo

This commit is contained in:
2020-03-24 23:48:11 +01:00
parent e85c8a3d55
commit 8c25f7633e
3 changed files with 19 additions and 0 deletions

View File

@@ -40,6 +40,10 @@ class Workgroup(override var requester: Requester) : RepositoryI {
.getFunction("upsert_workgroup") .getFunction("upsert_workgroup")
.selectOne("resource" to workgroup) ?: error("query 'upsert_workgroup' return null") .selectOne("resource" to workgroup) ?: error("query 'upsert_workgroup' return null")
fun delete(workgroup: WorkgroupRef) = requester
.getFunction("delete_workgroup")
.perform("id" to workgroup.id)
fun addMember(workgroup: WorkgroupI, member: CitizenI): List<CitizenBasic> = fun addMember(workgroup: WorkgroupI, member: CitizenI): List<CitizenBasic> =
addMembers(workgroup, listOf(member)) addMembers(workgroup, listOf(member))

View File

@@ -0,0 +1,9 @@
create or replace function delete_workgroup(_id uuid) returns void
language plpgsql as
$$
begin
update workgroup set deleted_at = now()
where id = _id;
end;
$$;

View File

@@ -86,6 +86,12 @@ begin
select find_workgroup_by_id((created_workgroup->>'id')::uuid) into selected_workgroup; select find_workgroup_by_id((created_workgroup->>'id')::uuid) into selected_workgroup;
assert json_array_length(selected_workgroup->'members') = 1, 'Workgroup must have members'; assert json_array_length(selected_workgroup->'members') = 1, 'Workgroup must have members';
perform delete_workgroup((created_workgroup->>'id')::uuid);
select find_workgroup_by_id((created_workgroup->>'id')::uuid) into selected_workgroup;
assert selected_workgroup is null, 'Workgroup must be null after deleted';
select m into members from find_workgroup_members((created_workgroup->>'id')::uuid) m;
assert json_array_length(members) = 0, 'The members count must be equal to 0 on deleted workgroup';
rollback; rollback;
raise notice 'workgroup test pass'; raise notice 'workgroup test pass';
end end