From b503f3319dd846f16269367c9dcbdb96a8316dfa Mon Sep 17 00:00:00 2001 From: Omar8345 Date: Sun, 2 Nov 2025 10:08:57 +0400 Subject: [PATCH 1/5] feat: default generate to pglite --- src/cli.ts | 12 ++++++++++-- src/generate.ts | 6 ++++-- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index 9a9bdec..340cc74 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -35,10 +35,18 @@ import { getProjectContext } from "./get-project-context" "generate", "generate types and sql documentation from database", (yargs) => { - yargs.option("pglite", { type: "boolean", default: false }) + yargs.option("pglite", { + type: "boolean", + default: true, + describe: + "Use an in-memory PGlite instance. Pass --no-pglite to connect to a running Postgres database.", + }) }, async (argv) => { - generate({ ...(await getProjectContext()), pglite: !!argv.pglite }) + await generate({ + ...(await getProjectContext()), + pglite: argv.pglite !== false, + }) }, ) .parse() diff --git a/src/generate.ts b/src/generate.ts index f337094..3a2734e 100644 --- a/src/generate.ts +++ b/src/generate.ts @@ -12,7 +12,7 @@ export const generate = async ({ schemas, defaultDatabase, dbDir, - pglite = false, + pglite = true, migrationsDir, }: Pick & { pglite?: boolean @@ -60,7 +60,9 @@ export const generate = async ({ }) }) - await new Promise((resolve) => server.listen(0, resolve)) + await new Promise((resolve) => + server.listen(0, "127.0.0.1", resolve), + ) const port = (server.address() as any).port const connectionString = `postgres://postgres:postgres@127.0.0.1:${port}/postgres` From a1d048888eacf9537b1730a7bd23ef9e169b3c69 Mon Sep 17 00:00:00 2001 From: Omar8345 Date: Sun, 2 Nov 2025 10:09:10 +0400 Subject: [PATCH 2/5] test: cover default pglite generate flow --- tests/generate.pglite.test.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tests/generate.pglite.test.ts b/tests/generate.pglite.test.ts index 56dcd53..64a6054 100644 --- a/tests/generate.pglite.test.ts +++ b/tests/generate.pglite.test.ts @@ -13,7 +13,7 @@ exports.down = async (pgm) => { } ` -test("generate with pglite runs migrations and dumps structure", async () => { +test("generate defaults to pglite and dumps structure", async () => { const tmp = fs.mkdtempSync(path.join(os.tmpdir(), "pgstrap-generate-")) const migrationsDir = path.join(tmp, "migrations") fs.mkdirSync(migrationsDir, { recursive: true }) @@ -27,7 +27,6 @@ test("generate with pglite runs migrations and dumps structure", async () => { defaultDatabase: "postgres", dbDir: path.join(tmp, "db"), migrationsDir, - pglite: true, }) const zapatosFile = path.join(tmp, "db", "zapatos", "schema.d.ts") From a400813df57806b9ae58ff4b117c63fa066da0c1 Mon Sep 17 00:00:00 2001 From: Omar8345 Date: Sun, 2 Nov 2025 10:10:01 +0400 Subject: [PATCH 3/5] chore: add `bun run db:generate` helper script --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index 18721c9..d39c9d7 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "scripts": { "test": "bun test", "build": "tsup ./src/index.ts ./src/cli.ts --outDir ./dist --dts --sourcemap inline", + "db:generate": "bun run ./src/generate.ts", "format": "biome format . --write", "format:check": "biome format ." }, From 83a976658371648ca1f55babb85ff2b2d6e440ca Mon Sep 17 00:00:00 2001 From: Omar8345 Date: Sun, 2 Nov 2025 10:10:11 +0400 Subject: [PATCH 4/5] docs: note pglite default for db generate --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 20e3127..55f563c 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ npm install pgstrap --save-dev ```bash npm run db:generate ``` + This runs against an in-memory PGlite database by default, so no local Postgres server is required. ## Usage @@ -55,7 +56,7 @@ npm install pgstrap --save-dev - `npm run db:migrate` - Run pending migrations - `npm run db:reset` - Drop and recreate the database, then run all migrations -- `npm run db:generate` - Generate types and structure dumps. Use `pgstrap generate --pglite` to run migrations against an in-memory PGlite instance. +- `npm run db:generate` - Generate types and structure dumps using an in-memory PGlite instance. Use `pgstrap generate --no-pglite` to connect to a running Postgres database instead. - `npm run db:create-migration` - Create a new migration file ### Configuration From 60e4c842e64f386294152f169460f9a3eee3aade Mon Sep 17 00:00:00 2001 From: Omar8345 Date: Sun, 2 Nov 2025 10:10:36 +0400 Subject: [PATCH 5/5] chore: run format --- src/generate.ts | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/generate.ts b/src/generate.ts index 3a2734e..a91591d 100644 --- a/src/generate.ts +++ b/src/generate.ts @@ -60,9 +60,7 @@ export const generate = async ({ }) }) - await new Promise((resolve) => - server.listen(0, "127.0.0.1", resolve), - ) + await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve)) const port = (server.address() as any).port const connectionString = `postgres://postgres:postgres@127.0.0.1:${port}/postgres`