#48 Can view workgroup of citizen
This commit is contained in:
@@ -20,7 +20,9 @@ class Citizen(
|
|||||||
override val user: User
|
override val user: User
|
||||||
) : CitizenFull,
|
) : CitizenFull,
|
||||||
CitizenBasic(id, name, email, birthday, voteAnonymous, followAnonymous, user),
|
CitizenBasic(id, name, email, birthday, voteAnonymous, followAnonymous, user),
|
||||||
EntityCreatedAt by EntityCreatedAtImp()
|
EntityCreatedAt by EntityCreatedAtImp() {
|
||||||
|
var workgroups: List<WorkgroupSimple<CitizenRef>> = emptyList()
|
||||||
|
}
|
||||||
|
|
||||||
open class CitizenBasic(
|
open class CitizenBasic(
|
||||||
id: UUID = UUID.randomUUID(),
|
id: UUID = UUID.randomUUID(),
|
||||||
|
|||||||
@@ -5,12 +5,14 @@ declare
|
|||||||
begin
|
begin
|
||||||
select to_json(t) into resource
|
select to_json(t) into resource
|
||||||
from (
|
from (
|
||||||
select
|
select
|
||||||
z.*,
|
z.*,
|
||||||
find_user_by_id(z.user_id) as "user"
|
find_user_by_id(z.user_id) as "user",
|
||||||
|
array_agg(find_workgroup_by_id_simple(ciw.workgroup_id)) as "workgroups"
|
||||||
from citizen as z
|
from citizen as z
|
||||||
|
left join citizen_in_workgroup ciw on z.id = ciw.citizen_id
|
||||||
where z.id = _id
|
where z.id = _id
|
||||||
|
group by z.id
|
||||||
) as t;
|
) as t;
|
||||||
end;
|
end;
|
||||||
$$;
|
$$;
|
||||||
|
|
||||||
|
|||||||
@@ -7,9 +7,12 @@ begin
|
|||||||
from (
|
from (
|
||||||
select
|
select
|
||||||
z.*,
|
z.*,
|
||||||
find_user_by_id(z.user_id) as "user"
|
find_user_by_id(z.user_id) as "user",
|
||||||
|
array_agg(find_workgroup_by_id_simple(ciw.workgroup_id)) as "workgroups"
|
||||||
from citizen as z
|
from citizen as z
|
||||||
|
left join citizen_in_workgroup ciw on z.id = ciw.citizen_id
|
||||||
where z.id = _id
|
where z.id = _id
|
||||||
|
group by z.id
|
||||||
) as t;
|
) as t;
|
||||||
end;
|
end;
|
||||||
$$;
|
$$;
|
||||||
|
|||||||
@@ -0,0 +1,20 @@
|
|||||||
|
create or replace function find_workgroup_by_id_simple(in id uuid, out resource json) language plpgsql as
|
||||||
|
$$
|
||||||
|
declare
|
||||||
|
_id alias for id;
|
||||||
|
begin
|
||||||
|
select to_json(t)
|
||||||
|
from (
|
||||||
|
select
|
||||||
|
w.*,
|
||||||
|
json_build_object('id', w.created_by_id) as created_by,
|
||||||
|
json_build_object('id', w.owner_id) as owner
|
||||||
|
into resource
|
||||||
|
from workgroup as w
|
||||||
|
join citizen_in_workgroup ciw on w.id = ciw.workgroup_id
|
||||||
|
where w.id = _id
|
||||||
|
and deleted_at is null
|
||||||
|
group by w.id
|
||||||
|
) as t;
|
||||||
|
end;
|
||||||
|
$$;
|
||||||
@@ -55,6 +55,9 @@ begin
|
|||||||
assert members::jsonb @> jsonb_build_array(jsonb_build_object('id', _citizen_id3)),
|
assert members::jsonb @> jsonb_build_array(jsonb_build_object('id', _citizen_id3)),
|
||||||
'Members must contain citizen3';
|
'Members must contain citizen3';
|
||||||
|
|
||||||
|
-- Check if "find_citizen_by_id" retrun workgroups of citizen
|
||||||
|
assert (select find_citizen_by_id(_citizen_id2)#>>'{workgroups, 0, id}') = (created_workgroup->>'id'), 'find_citizen_by_id must return workgroups';
|
||||||
|
|
||||||
-- update
|
-- update
|
||||||
select m into members from update_workgroup_members((created_workgroup->>'id')::uuid, json_build_array(
|
select m into members from update_workgroup_members((created_workgroup->>'id')::uuid, json_build_array(
|
||||||
json_build_object('id', _citizen_id2),
|
json_build_object('id', _citizen_id2),
|
||||||
|
|||||||
Reference in New Issue
Block a user