Ahoj,
rád bych se s vámi podělil o další ze svých open-source projektů —
pg_procrustes, formátovač SQL a PL/pgSQL napsaný v Go.
Je to zatím čerstvý projekt, pořád v počáteční fázi vývoje, ale
protože je postavený na nativním PostgreSQL parseru (libpg_query),
tak v tom, co už umí, je docela spolehlivý — rozumí kódu prakticky
stejně jako databáze samotná, ne přes vlastní/aproximovaný parser.
Zároveň je to hodně detailně nastavitelné (casing klíčových slov,
typů, funkcí, mezery kolem operátorů, zalamování klauzulí, a
samostatně i formátování PL/pgSQL bloků – IF/LOOP/CASE, DECLARE
sekce apod.), takže i v této fázi je to podle mě už dobře použitelné.
Abyste si nastavení nemuseli psát ručně do YAML, udělal jsem k tomu
i web
https://pg_procrustes.80.cz, kde si formátovací pravidla
naklikáte a stáhnete si hotový konfigurační soubor.
Kód i CLI najdete na GitHubu:
https://github.com/heptau/pg_procrustes
Budu rád za jakýkoli feedback — ať jde o chybějící nastavení, edge
case, na kterém to spadne, nebo jen zkušenost s tím, jak řešíte
formátování SQL vy (pgFormatter, sqlfluff, něco vlastního?).
Díky a hezký den,
Zbyněk Vanžura
hep...@gmail.com