tree-sitter-postgres, libpgfmt, pgfmt, y libpgdump
Últimamente he estado rehaciendo algunas herramientas internas y proyectos open source en Rust, y quiero compartir algunos avances:
tree-sitter-postgres — Una gramática de Tree-sitter para Postgres (SQL y PL/pgSQL) que se genera automáticamente a partir del código fuente en Bison de Postgres.
libpgfmt — Una librería en Rust para dar formato a SQL y PL/pgSQL, compatible con varios estilos como aweber, dbt, gitlab, kickstarter, mozilla, mattmc3 y river.
pgfmt — Una herramienta CLI para formatear y analizar (lint) código SQL y PL/pgSQL, basada en libpgfmt.
libpgdump — Una librería en Rust para leer y escribir archivos dump de PostgreSQL, con soporte para formatos custom, directory y tar. Es una adaptación de mi proyecto pgdumplib y se utilizará en su próxima versión.
Existen varios proyectos basados en tree-sitter para Postgres que cubren SQL y PL/pgSQL. Lo que distingue a tree-sitter-postgres es que se genera completamente a partir del código fuente de Postgres. Esto hace que, cuando salga una nueva versión principal con nuevas palabras clave u otros cambios, sea muy sencillo mantener la gramática actualizada.
libpgfmt y pgfmt se desarrollaron principalmente para cumplir con la guía de estilo de AWeber (basada en sqlstyle.guide), aunque fueron diseñados para soportar múltiples estilos.

