@softure-ai/db 0.1.9 → 0.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -4,6 +4,21 @@ Newest first. Each version lists what changed for an app that uses `@softure-ai/
4
4
  production, the version gets a line `verified in: <app>@<commit>` ([docs/05](../../docs/05-adoption-playbook.md),
5
5
  "Definition of done"). Versions before the first one below are described in their GitHub Releases (`db@x.y.z`).
6
6
 
7
+ ## 0.1.11
8
+
9
+ - `createTestDatabase()` and `createPgliteHandle()` resolve only once PGlite is ready, so `close()` resolves on a
10
+ database that was never queried (#523). Before, with PGlite 0.5.10, an `afterEach(close)` after a test that did not
11
+ touch the database hung until the hook timed out. Nothing to migrate.
12
+
13
+ ## 0.1.10
14
+
15
+ - `Queryable` is drizzle's driver-neutral `PgDatabase` base instead of a union of both drivers' databases and
16
+ transactions, so `update(...).returning({ ...columns })` and `delete(...).returning({ ...columns })` type-check on
17
+ it (#475). An app can drop a local cast to `PgDatabase<PgQueryResultHKT>` added for this.
18
+ - `execute()` on a `Queryable` resolves to the new `QueryableResult`: `rows`, `rowCount`, `command` and `fields`, the
19
+ same fields the former union exposed, so code reading them compiles unchanged. New exported types:
20
+ `QueryableResult`, `QueryableResultHKT`. Nothing to migrate.
21
+
7
22
  ## 0.1.9
8
23
 
9
24
  - The `@softure-ai/core` range also accepts 0.2.0, so an app can install core 0.2.0 next to this version.
package/README.md CHANGED
@@ -86,6 +86,9 @@ await handle.close();
86
86
  or an open transaction, so one helper serves both (`db.transaction(async (tx) => helper(tx))`).
87
87
  Without a type argument both accept any schema, so an app database made with
88
88
  `drizzle({ client, schema })`, and its transactions, pass to module functions as they are.
89
+ - `Queryable` is drizzle's driver-neutral `PgDatabase` base, so every builder overload works on it, for example
90
+ `db.delete(t).where(...).returning({ id: t.id })` to get back only the key. Its `execute()` resolves to
91
+ `QueryableResult`: `rows`, `rowCount`, `command` and `fields`, the fields both drivers report.
89
92
  - An unsupported scheme throws, naming the scheme only; the URL (and its password) is never
90
93
  printed.
91
94
 
package/dist/client.d.ts CHANGED
@@ -1,5 +1,6 @@
1
1
  import type { PGlite } from "@electric-sql/pglite";
2
2
  import type { NodePgDatabase } from "drizzle-orm/node-postgres";
3
+ import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";
3
4
  import type { PgliteDatabase } from "drizzle-orm/pglite";
4
5
  import type { Pool } from "pg";
5
6
  /** The optional peer a URL scheme needs, named in the error when it is not installed. */
@@ -21,11 +22,30 @@ export type PgliteClientDatabase<TSchema extends DatabaseSchema = DatabaseSchema
21
22
  };
22
23
  /** The drizzle database modules and the app query through. */
23
24
  export type Database<TSchema extends DatabaseSchema = DatabaseSchema> = PostgresDatabase<TSchema> | PgliteClientDatabase<TSchema>;
25
+ /**
26
+ * What `execute()` resolves to on a `Queryable`: the fields node-postgres' `QueryResult` and PGlite's `Results`
27
+ * share, typed as each driver can fill them (PGlite may leave `command` and `rowCount` out).
28
+ */
29
+ export interface QueryableResult<TRow> {
30
+ readonly rows: TRow[];
31
+ readonly rowCount?: number | null;
32
+ readonly command?: string;
33
+ readonly fields: readonly {
34
+ readonly name: string;
35
+ readonly dataTypeID: number;
36
+ }[];
37
+ }
38
+ /** The drizzle result kind of a `Queryable`, mapping a row type to `QueryableResult`. */
39
+ export interface QueryableResultHKT extends PgQueryResultHKT {
40
+ readonly type: QueryableResult<this["row"]>;
41
+ }
24
42
  /**
25
43
  * A connection *or* an open transaction. Query helpers take this, so one function serves a
26
- * plain read and a step inside `db.transaction()`.
44
+ * plain read and a step inside `db.transaction()`. It is drizzle's driver-neutral `PgDatabase` base, which
45
+ * both drivers' databases and transactions extend, rather than a union of them: on a union, overloaded
46
+ * builder methods such as `returning({ ...columns })` do not resolve.
27
47
  */
28
- export type Queryable<TSchema extends DatabaseSchema = DatabaseSchema> = Database<TSchema> | Parameters<Parameters<Database<TSchema>["transaction"]>[0]>[0];
48
+ export type Queryable<TSchema extends DatabaseSchema = DatabaseSchema> = PgDatabase<QueryableResultHKT, TSchema>;
29
49
  export type DatabaseHandle = {
30
50
  readonly kind: "postgres";
31
51
  readonly db: PostgresDatabase;
@@ -49,7 +69,8 @@ export interface CreateDatabaseOptions {
49
69
  export declare function createDatabase(url: string, options?: CreateDatabaseOptions): Promise<DatabaseHandle>;
50
70
  /**
51
71
  * Wraps an open PGlite instance, e.g. the app's own, for `database.handle` in softure.config. `close` closes the
52
- * instance, which writes a `pglite://<dir>` database back to its directory.
72
+ * instance, which writes a `pglite://<dir>` database back to its directory. Resolves once the instance is ready:
73
+ * PGlite 0.5.10 never resolves `close()` on an instance still loading its data folder (#523).
53
74
  */
54
75
  export declare function createPgliteHandle(client: PGlite): Promise<DatabaseHandle & {
55
76
  kind: "pglite";
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,IAAI,CAAC;AAM/B,yFAAyF;AACzF,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAKD;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAErD,MAAM,MAAM,gBAAgB,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG;IAAE,OAAO,EAAE,IAAI,CAAA;CAAE,CAAC;AAC5H,MAAM,MAAM,oBAAoB,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAElI,8DAA8D;AAC9D,MAAM,MAAM,QAAQ,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAElI;;;GAGG;AACH,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,cAAc,GAAG,cAAc,IACjE,QAAQ,CAAC,OAAO,CAAC,GACjB,UAAU,CAAC,UAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAEnE,MAAM,MAAM,cAAc,GACtB;IACE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC,GACD;IACE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,EAAE,EAAE,oBAAoB,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CACrC,CAAC;AAEN,MAAM,WAAW,qBAAqB;IACpC,4FAA4F;IAC5F,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,cAAc,CAAC,CAqB9G;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CAGrG;AAED;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAAC,cAAc,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,CAGrG;AAED,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,cAAc,CAOxE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAWvF"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/client.js CHANGED
@@ -30,10 +30,12 @@ export async function createDatabase(url, options = {}) {
30
30
  }
31
31
  /**
32
32
  * Wraps an open PGlite instance, e.g. the app's own, for `database.handle` in softure.config. `close` closes the
33
- * instance, which writes a `pglite://<dir>` database back to its directory.
33
+ * instance, which writes a `pglite://<dir>` database back to its directory. Resolves once the instance is ready:
34
+ * PGlite 0.5.10 never resolves `close()` on an instance still loading its data folder (#523).
34
35
  */
35
36
  export async function createPgliteHandle(client) {
36
37
  const { drizzle } = await importDriver(PGLITE_DRIVER, () => import("drizzle-orm/pglite"));
38
+ await client.waitReady;
37
39
  return { kind: "pglite", db: drizzle({ client }), client, close: () => client.close() };
38
40
  }
39
41
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { createDatabase, createPgliteHandle, createPostgresHandle, isDatabaseHandle, type CreateDatabaseOptions, type Database, type DatabaseHandle, type DatabaseSchema, type PgliteClientDatabase, type PostgresDatabase, type Queryable, } from "./client.js";
1
+ export { createDatabase, createPgliteHandle, createPostgresHandle, isDatabaseHandle, type CreateDatabaseOptions, type Database, type DatabaseHandle, type DatabaseSchema, type PgliteClientDatabase, type PostgresDatabase, type Queryable, type QueryableResult, type QueryableResultHKT, } from "./client.js";
2
2
  export { closeSharedDatabase, closeSharedDatabases, getSharedDatabase } from "./shared.js";
3
3
  export { closeProcessDatabases, createProcessDatabase, type ProcessDatabase, type ProcessDatabaseOptions } from "./process.js";
4
4
  export { openRawDatabase, queryDatabase, type RawDatabase } from "./raw.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,SAAS,GACf,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC/H,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,KAAK,qBAAqB,EAC1B,KAAK,QAAQ,EACb,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAE,KAAK,eAAe,EAAE,KAAK,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAC/H,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,KAAK,WAAW,EAAE,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,KAAK,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,eAAe,EACf,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,gBAAgB,EACrB,KAAK,eAAe,GACrB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,EAChB,KAAK,gBAAgB,EACrB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAClB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,eAAe,EACpB,KAAK,aAAa,GACnB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAAE,KAAK,cAAc,EAAE,KAAK,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,uBAAuB,EACvB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,KAAK,UAAU,EAAE,KAAK,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC5F,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wGAAwG;AACxG,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,GAQjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAqD,MAAM,cAAc,CAAC;AAC/H,OAAO,EAAE,eAAe,EAAE,aAAa,EAAoB,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAA8C,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,mBAAmB,EAAwB,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAsB,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,eAAe,GAKhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,GAQjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAA0C,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAyC,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,wGAAwG;AACxG,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,GAUjB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC3F,OAAO,EAAE,qBAAqB,EAAE,qBAAqB,EAAqD,MAAM,cAAc,CAAC;AAC/H,OAAO,EAAE,eAAe,EAAE,aAAa,EAAoB,MAAM,UAAU,CAAC;AAC5E,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAA8C,MAAM,oBAAoB,CAAC;AACxH,OAAO,EAAE,wBAAwB,EAAE,qBAAqB,EAAE,mBAAmB,EAAwB,MAAM,iBAAiB,CAAC;AAC7H,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAsB,MAAM,uBAAuB,CAAC;AAChG,OAAO,EACL,eAAe,GAKhB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,OAAO,EACP,cAAc,EACd,gBAAgB,GAQjB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,WAAW,EAA0C,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EACL,uBAAuB,GAGxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,WAAW,EAAyC,MAAM,wBAAwB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@softure-ai/db",
3
- "version": "0.1.9",
3
+ "version": "0.1.11",
4
4
  "description": "SOFTURE AI database layer: pg/PGlite client, per-module migrator with plan and adopt, PGlite test databases.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/client.ts CHANGED
@@ -6,6 +6,7 @@
6
6
  // `serverExternalPackages`, and output tracing follows these imports to copy the installed driver.
7
7
  import type { PGlite } from "@electric-sql/pglite";
8
8
  import type { NodePgDatabase } from "drizzle-orm/node-postgres";
9
+ import type { PgDatabase, PgQueryResultHKT } from "drizzle-orm/pg-core";
9
10
  import type { PgliteDatabase } from "drizzle-orm/pglite";
10
11
  import type { Pool } from "pg";
11
12
 
@@ -35,13 +36,29 @@ export type PgliteClientDatabase<TSchema extends DatabaseSchema = DatabaseSchema
35
36
  /** The drizzle database modules and the app query through. */
36
37
  export type Database<TSchema extends DatabaseSchema = DatabaseSchema> = PostgresDatabase<TSchema> | PgliteClientDatabase<TSchema>;
37
38
 
39
+ /**
40
+ * What `execute()` resolves to on a `Queryable`: the fields node-postgres' `QueryResult` and PGlite's `Results`
41
+ * share, typed as each driver can fill them (PGlite may leave `command` and `rowCount` out).
42
+ */
43
+ export interface QueryableResult<TRow> {
44
+ readonly rows: TRow[];
45
+ readonly rowCount?: number | null;
46
+ readonly command?: string;
47
+ readonly fields: readonly { readonly name: string; readonly dataTypeID: number }[];
48
+ }
49
+
50
+ /** The drizzle result kind of a `Queryable`, mapping a row type to `QueryableResult`. */
51
+ export interface QueryableResultHKT extends PgQueryResultHKT {
52
+ readonly type: QueryableResult<this["row"]>;
53
+ }
54
+
38
55
  /**
39
56
  * A connection *or* an open transaction. Query helpers take this, so one function serves a
40
- * plain read and a step inside `db.transaction()`.
57
+ * plain read and a step inside `db.transaction()`. It is drizzle's driver-neutral `PgDatabase` base, which
58
+ * both drivers' databases and transactions extend, rather than a union of them: on a union, overloaded
59
+ * builder methods such as `returning({ ...columns })` do not resolve.
41
60
  */
42
- export type Queryable<TSchema extends DatabaseSchema = DatabaseSchema> =
43
- | Database<TSchema>
44
- | Parameters<Parameters<Database<TSchema>["transaction"]>[0]>[0];
61
+ export type Queryable<TSchema extends DatabaseSchema = DatabaseSchema> = PgDatabase<QueryableResultHKT, TSchema>;
45
62
 
46
63
  export type DatabaseHandle =
47
64
  | {
@@ -92,10 +109,12 @@ export async function createDatabase(url: string, options: CreateDatabaseOptions
92
109
 
93
110
  /**
94
111
  * Wraps an open PGlite instance, e.g. the app's own, for `database.handle` in softure.config. `close` closes the
95
- * instance, which writes a `pglite://<dir>` database back to its directory.
112
+ * instance, which writes a `pglite://<dir>` database back to its directory. Resolves once the instance is ready:
113
+ * PGlite 0.5.10 never resolves `close()` on an instance still loading its data folder (#523).
96
114
  */
97
115
  export async function createPgliteHandle(client: PGlite): Promise<DatabaseHandle & { kind: "pglite" }> {
98
116
  const { drizzle } = await importDriver(PGLITE_DRIVER, () => import("drizzle-orm/pglite"));
117
+ await client.waitReady;
99
118
  return { kind: "pglite", db: drizzle({ client }), client, close: () => client.close() };
100
119
  }
101
120
 
package/src/index.ts CHANGED
@@ -12,6 +12,8 @@ export {
12
12
  type PgliteClientDatabase,
13
13
  type PostgresDatabase,
14
14
  type Queryable,
15
+ type QueryableResult,
16
+ type QueryableResultHKT,
15
17
  } from "./client.js";
16
18
  export { closeSharedDatabase, closeSharedDatabases, getSharedDatabase } from "./shared.js";
17
19
  export { closeProcessDatabases, createProcessDatabase, type ProcessDatabase, type ProcessDatabaseOptions } from "./process.js";