select
mg.menu_group_id,
mg.menu_group_name_var,
x.menu_id,
m.menu_name_var,
m.url_var,
m.icon_var,
x.action_id,
ta.action_name_var
from (
select
tr.user_group_id,
ug.user_group_name_var,
(json_array_elements((data_json ->> 'roles')::json) ->> 'menu')::INT as menu_id,
(json_array_elements((json_array_elements((data_json ->> 'roles')::json) ->> 'action')::json) ->> 'id')::INT as action_id
from public.t_role tr
left join public.t_user_group ug on ug.user_group_id = tr.user_group_id
where ug.user_group_id = 1 -- sesuai user group saat login user
) x
left join public.t_menu m on m.menu_id = x.menu_id
left join public.t_action ta on ta.action_id = x.action_id
left join public.t_menu_group mg on mg.menu_group_id = m.menu_group_id
order by
x.user_group_id,
mg.menu_group_order_int,
x.menu_id
Informasi:
- sequelize is the sequelize library itself.
- sequelize-cli is a package that enables us interact with the database through sequelize from the CLI.
- pg short for postgres is a Postgres client for Node.js
- pg-hstore is a node package for serializing and deserializing JSON data to hstore format.