diff --git a/src/main/kotlin/fr/dcproject/repository/Workgroup.kt b/src/main/kotlin/fr/dcproject/repository/Workgroup.kt index 4a06911..6d76668 100644 --- a/src/main/kotlin/fr/dcproject/repository/Workgroup.kt +++ b/src/main/kotlin/fr/dcproject/repository/Workgroup.kt @@ -40,6 +40,10 @@ class Workgroup(override var requester: Requester) : RepositoryI { .getFunction("upsert_workgroup") .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 = addMembers(workgroup, listOf(member)) diff --git a/src/main/resources/sql/functions/workgroup/delete_workgroup.sql b/src/main/resources/sql/functions/workgroup/delete_workgroup.sql new file mode 100644 index 0000000..0308896 --- /dev/null +++ b/src/main/resources/sql/functions/workgroup/delete_workgroup.sql @@ -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; +$$; + diff --git a/src/test/sql/workgroup.sql b/src/test/sql/workgroup.sql index becd57f..406fe02 100644 --- a/src/test/sql/workgroup.sql +++ b/src/test/sql/workgroup.sql @@ -86,6 +86,12 @@ begin select find_workgroup_by_id((created_workgroup->>'id')::uuid) into selected_workgroup; 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; raise notice 'workgroup test pass'; end