Вводная в FSPG
Стандартно Falcon Space работает на СУБД SQL Server.
В июле 2025 года было найдено решение, как можно воплотить подход Falcon Space к хранимым процедурам в Postgre.
Главная сложность - в Postgre нет множественных выходных SELECT в хранимых процедурах. Это проблема была решена за счет использования 1 выходной переменной с телом в виде JSON, где каждое поле - это один из выходных select, которые ожидает платформа от sp. Пример:
{
"sel1": [{},{}, {}],
"sel2": [{},{}, {}],
"sel3": [{},{}, {}],
"sel4": [{},{}, {}]
}
Платформа обрабатывает такой JSON и по сути получает на входе те же множественные JSON.
В процедурах Postgre мы используем такой паттерн, чтобы на выходе дать нужный JSON:
CREATE OR REPLACE PROCEDURE public.crud_pages_getitems(OUT res text, IN filters text, IN sort text, IN direction text, IN page integer, IN pagesize integer, IN username text)
LANGUAGE plpgsql
AS $procedure$
BEGIN
CREATE TEMP TABLE sel1 ON COMMIT DROP AS
select 1 msg, '' result
CREATE TEMP TABLE sel2 ON COMMIT DROP AS
select 'h3' headerTag, (select count(*) from ids) total;
select to_jsonb(t1.*) from (
select
(select json_agg(e.*) from sel1 e) sel1 ,
(select json_agg(e.*) from sel2 e) sel2
) t1
into res;
END;
$procedure$
Используется выходная переменная res в которой мы формируем JSON из таблиц sel1, sel2 и т.д.
Это главное отличие процедур Falcon Space PG (FSPG) от процедур Falcon Space (на SQL Server).
Custom типы (CrudDictionaryParameter, ExtendedDictionaryparameter и т.д.) мы не используем в Postgre - вместо этого используем JSON массимы из полей (key,value,value2).
В остальном в FSPG используется практически те же интерфейсы работы компонентов (названия параметров и выходные SELECT). Это значит, что можно в целом ориентироваться в описания компонентов из основной документации Falcon Space.
Что еще посмотреть по PostgreSQL & Falcon Space
Ищем партнеров-разработчиков на T-SQL и PL/pgSQL
Falcon Space - платформа для создания сайтов с личными кабинетами
- Шаг 1. Создать концепт проекта
- Шаг 2. Получить оценку бюджета (КП)
- Шаг 3. Заключить договор
- Шаг 4. Создать совместно техническое задание
- Шаг 5. Поэтапная реализация проекта