: - .
, , JSONB, .
:
create or replace function config()
returns jsonb
language 'plpgsql'
immutable
as $BODY$
declare
job_manager_config constant jsonb := '{
"notify": {
"channels": {
"all_available": "all.available",
"all_status": "all.status",
"task_available": "task.%s.available",
"task_status": "task.%s.status",
"job": "job.%s"
},
}
"allowed_pets": {
"dogs": 6,
"cats": 6,
"rabbits": 3,
"lions": 2,
"sweet_piranha": 8
}
}';
begin
return job_manager_config;
end;
$BODY$;
, . ( JSON), .
, - , .
create or replace function job_manager.config(
variadic path_array text[])
returns text
language 'plpgsql'
immutable
as $BODY$
begin
return jsonb_extract_path_text(job_manager.config(), variadic path_array);
end;
$BODY$;
:
test=
config
--------------------
job_manager.job.%s
(1 row)