From f1f99726a10d896fd1b84501e60ea4cef37299a5 Mon Sep 17 00:00:00 2001 From: Vudex Date: Sun, 21 Jun 2026 04:31:19 -0500 Subject: [PATCH 1/4] fix: use PGlite by default for type generation --- src/generate.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/generate.ts b/src/generate.ts index f337094..be9bfd1 100644 --- a/src/generate.ts +++ b/src/generate.ts @@ -8,11 +8,13 @@ import { dumpTree } from "pg-schema-dump" import path from "path" import { migrate } from "./migrate" +export const shouldUsePglite = (pglite?: boolean) => pglite !== false + export const generate = async ({ schemas, defaultDatabase, dbDir, - pglite = false, + pglite, migrationsDir, }: Pick & { pglite?: boolean @@ -21,7 +23,7 @@ export const generate = async ({ dbDir = dbDir ?? "./src/db" migrationsDir = migrationsDir ?? path.join(dbDir, "migrations") - if (pglite) { + if (shouldUsePglite(pglite)) { const { PGlite } = await import("@electric-sql/pglite") const { fromNodeSocket } = await import("pg-gateway/node") const net = await import("node:net") From 2f8e57b9c432f2d9594f81e34c5f4af685bd869b Mon Sep 17 00:00:00 2001 From: Vudex Date: Sun, 21 Jun 2026 04:31:28 -0500 Subject: [PATCH 2/4] fix: preserve explicit external Postgres opt-out --- src/cli.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/cli.ts b/src/cli.ts index 9a9bdec..ea47171 100644 --- a/src/cli.ts +++ b/src/cli.ts @@ -35,10 +35,17 @@ 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", + describe: + "run migrations in an in-memory PGlite database (enabled by default; use --no-pglite for an external Postgres database)", + }) }, async (argv) => { - generate({ ...(await getProjectContext()), pglite: !!argv.pglite }) + generate({ + ...(await getProjectContext()), + pglite: argv.pglite as boolean | undefined, + }) }, ) .parse() From e10daf2e28d3d35449120a043500cf00c221a1af Mon Sep 17 00:00:00 2001 From: Vudex Date: Sun, 21 Jun 2026 04:31:51 -0500 Subject: [PATCH 3/4] test: cover default PGlite generation mode --- tests/generate-mode.test.ts | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 tests/generate-mode.test.ts diff --git a/tests/generate-mode.test.ts b/tests/generate-mode.test.ts new file mode 100644 index 0000000..5dd0073 --- /dev/null +++ b/tests/generate-mode.test.ts @@ -0,0 +1,8 @@ +import { expect, test } from "bun:test" +import { shouldUsePglite } from "../src/generate" + +test("type generation uses PGlite unless external Postgres is explicitly requested", () => { + expect(shouldUsePglite()).toBe(true) + expect(shouldUsePglite(true)).toBe(true) + expect(shouldUsePglite(false)).toBe(false) +}) From 029dbe0852006299e72dc822fad774851bf38765 Mon Sep 17 00:00:00 2001 From: Vudex Date: Sun, 21 Jun 2026 04:32:15 -0500 Subject: [PATCH 4/4] docs: describe default PGlite generation --- README.md | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 20e3127..dddb1f3 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ npm install pgstrap --save-dev npm run db:migrate ``` -6. Generate types and structure: +6. Generate types and structure without starting a separate PostgreSQL server: ```bash npm run db:generate ``` @@ -55,7 +55,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` - Run migrations against in-memory PGlite and generate types and structure dumps. Use `pgstrap generate --no-pglite` to use an externally running PostgreSQL database instead. - `npm run db:create-migration` - Create a new migration file ### Configuration @@ -96,7 +96,7 @@ export async function up(pgm: MigrationBuilder): Promise { } export async function down(pgm: MigrationBuilder): Promise { - // Code to revert your migration (optional) + // Code to revert the migration (optional) } ``` @@ -116,7 +116,6 @@ export async function up(pgm: MigrationBuilder): Promise { default: pgm.func("current_timestamp"), }, }) - pgm.createIndex("users", "username") } @@ -142,4 +141,4 @@ This project is licensed under the MIT License - see the [LICENSE](LICENSE) file If you encounter any issues or have questions, please file an issue on the [GitHub repository](https://github.com/seveibar/pgstrap/issues). -Happy coding with pgstrap! 🚀 +Happy coding with pgstrap!