Docs
Plugin PostgreSQL
Pousse ton schema PostgreSQL vers Panache pour audit RLS, audit des grants et detection de roles dangereux. Marche avec Drizzle, Prisma ou n'importe quel pg_dump.
Quand l'utiliser
Utilise @withpanache/postgres quand tu veux que Panache audite ton schema PostgreSQL : - Tables sans politique RLS dans un contexte multi-tenant. - GRANT trop larges. - Roles dangereux (SUPERUSER, BYPASSRLS, CREATEROLE) sur des comptes applicatifs. - Colonnes sensibles sans controle d'acces explicite. Marche depuis n'importe quelle CI/CD capable de produire un DDL : Drizzle (`drizzle-kit export`), Prisma (`prisma migrate diff`) ou un `pg_dump --schema-only` brut.
Installation
Ajoute le CLI en devDependency ou lance-le a la volee via npx :
npm install --save-dev @withpanache/postgres
# ou
pnpm add -D @withpanache/postgres
# A la volee, sans installation :
npx @withpanache/postgres push --from drizzleProjet Drizzle
Auto-detecte un projet Drizzle en remontant l'arborescence a la recherche de `drizzle.config.{ts,js,mjs,cjs}` et de `drizzle-kit` dans package.json. Lance `drizzle-kit export --dialect=postgresql` et pousse la sortie.
export PANACHE_SITE_TOKEN=pnch_xxxxxxxx
npx @withpanache/postgres push --from drizzleProjet Prisma
Auto-detecte un projet Prisma en remontant a la recherche de `prisma/schema.prisma` (ou `schema.prisma`) et de `prisma`/`@prisma/client` dans package.json. Lance `prisma migrate diff --from-empty --to-schema-datamodel <schema> --script` et pousse la sortie.
export PANACHE_SITE_TOKEN=pnch_xxxxxxxx
npx @withpanache/postgres push --from prismaFichier SQL brut
Passe `--schema <fichier>` pour lire le DDL depuis un fichier SQL. Utile pour les projets avec un `schema.sql` ecrit a la main, ou pour pousser un artefact `pg_dump` capture plus tot dans la pipeline.
npx @withpanache/postgres push --schema ./db/schema.sqlPipe depuis stdin
Si ni `--from` ni `--schema` ne sont fournis, le CLI lit le DDL depuis stdin. Pattern recommande pour un `pg_dump` brut.
pg_dump --schema-only $DATABASE_URL | \
npx @withpanache/postgres push --token $PANACHE_SITE_TOKENLimites
L'API d'ingest Panache impose une limite de 2 Mo sur le corps du DDL. Les schemas plus larges sont rejetes avec une erreur explicite. Si ton schema depasse, decoupe-le sur plusieurs sites ou ouvre une issue pour relever la limite. La feature schema doit etre activee dans le dashboard pour chaque site avant le premier push (Settings > Databases). Les pushes avant activation sont rejetes avec un 403.
Mode librairie
La meme logique est exposee en librairie TypeScript pour des pipelines custom ou des scripts Node :
import { pushSchema, generateSchemaFromDrizzle } from "@withpanache/postgres"
const schema = generateSchemaFromDrizzle(process.cwd())
if (!schema) throw new Error("pas de projet Drizzle")
const result = await pushSchema({
token: process.env.PANACHE_SITE_TOKEN!,
ddl: schema.ddl,
metadata: {
orm: "drizzle",
ormVersion: schema.ormVersion,
gitSha: process.env.GITHUB_SHA,
branch: process.env.GITHUB_REF_NAME,
},
})
if (!result.ok) console.error("push echoue :", result.error)Toutes les options du CLI
La reference complete. Chaque flag a un equivalent variable d'environnement (PANACHE_*) — prefere les variables d'environnement en CI pour garder les tokens hors de `ps aux`.
panache-postgres push [options]
ENTREE (au choix)
--schema <fichier> Lire le DDL depuis un fichier SQL
--from drizzle Auto-detecter un projet Drizzle
--from prisma Auto-detecter un projet Prisma
(stdin) Lire depuis stdin si aucun flag
AUTH
--token <token> Token du site (ou variable PANACHE_SITE_TOKEN)
METADATA
--api-url <url> Surcharger l'URL de l'API d'ingest
--orm <name> Label informatif ("drizzle", "prisma", "pg-dump")
--git-sha <sha> SHA du commit git
--branch <name> Nom de branche git
--preview-url <url> URL de deploiement previewCodes de sortie
Le CLI utilise des codes de sortie distincts pour que les scripts CI puissent reagir correctement :
| Exit | Signification |
|---|---|
0 | Success. |
1 | Push failed (network, 4xx/5xx, validation). |
2 | Invalid arguments or missing inputs. |
Besoin d'aide ?
Pour toute question sur le plugin PostgreSQL ou si vous avez besoin d'assistance, contactez-nous a hello@withpanache.dev