Я бы пошел с созданием трех ВИДОВ:
CREATE VIEW table_dist_column1 AS
SELECT
DISTINCT ON(column1)
column1
, column2
, column3
FROM table;
CREATE VIEW table_dist_column2 AS
SELECT
DISTINCT ON(column2)
column1
, column2
, column3
FROM table;
-- Analogously:
-- CREATE VIEW table_dist_column3 AS ....
Тогда можно было бы использовать фильтры PostgREST обычным образом (например, curl "<url>/table_dist_column1?column1=eq.baz&column2=eq.foo&column3=eq.bar"
).
Это также возможно сделатьс одной хранимой процедурой plpgsql с динамическим sql (используя quote_ident
).Но я бы не рекомендовал это, поскольку это может быть опасно для конечных пользователей.
Так что ВИДЫ - лучший вариант.