Комментарии 7
if local.id is not null then -- если задан id
local.id = translate(local.id, '[]','{}');
if local.id ilike '{%}' then -- если id - массив
if local.full then -- если все результаты
with _ as (
with _ as (
select * from gar_select(local.id::uuid[])
) select count(1), gar_select.json as query, local.offset, local.limit, (
with _ as (
...
...
...
with _ as (
with _ as (
select * from gar_select(local.parent::uuid, local.name, local.short, local.type, local.post, local.region)
) select count(1), gar_select.json as query, local.offset, local.limit, (
with _ as (
select *, case when local.child then gar_child(_.id) end as child from _ offset local.offset limit local.limit
) select coalesce(json_agg(_), '[]'::json) from _
) as data from _
) select to_json(_) from _ into strict gar_select.json;
end if;
end if;
end if;
end;$body$;
И как вот это вот все поддерживать, масштабировать и передовать потомкам?
передАвать.
Простите, захлестнули эмоции.
Да нее, такое только передОвать можно)
У самого на проекте такая жуть. Когда открываешь на правку, то хочется забиться в угол и заплакать как маленькая девочка.
мне тоже очень не нравится, как эта функция выглядит
масштабировать
если одна база не будет справляться - можно поднять кучу реплик standby и пустить на них кучу nginx-ов, т.к. всё равно используются запросы только на чтение
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Рецепты PostgreSQL: виджет Государственного Адресного Реестра