d1-kyt 0.6.1 → 0.6.2

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.
@@ -1,4 +1,5 @@
1
1
  import type { CompiledQuery } from 'kysely';
2
+ import type { SchemaTable } from './schema.js';
2
3
  /**
3
4
  * D1 query result with metadata
4
5
  */
@@ -47,7 +48,7 @@ interface D1Result<T = unknown> {
47
48
  * const users = await queryAll(env.DB, queries.listUsers());
48
49
  * ```
49
50
  */
50
- export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>): Promise<T[]>;
51
+ export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any>): Promise<T[]>;
51
52
  /**
52
53
  * Execute query and return first row or null
53
54
  *
@@ -56,7 +57,7 @@ export declare function queryAll<T>(db: D1Database, query: CompiledQuery<T>): Pr
56
57
  * const user = await queryFirst(env.DB, queries.getUserById({ id: 1 }));
57
58
  * ```
58
59
  */
59
- export declare function queryFirst<T>(db: D1Database, query: CompiledQuery<T>): Promise<T | null>;
60
+ export declare function queryFirst<T>(db: D1Database, query: CompiledQuery<T>, table?: SchemaTable<any, any>): Promise<T | null>;
60
61
  /**
61
62
  * Execute query without returning rows (INSERT/UPDATE/DELETE)
62
63
  *
@@ -1 +1 @@
1
- {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAc5C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,UAAU,mBAAmB;IAC3B,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC;IAChD,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;CACnC;AAED,UAAU,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC5B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,EAAE,CAAC,CAMd;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAMnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC,CAStB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,GACzC,OAAO,CAAC,WAAW,EAAE,CAAC,CASxB"}
1
+ {"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAC5C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AA2B/C;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,UAAU;IACzB,OAAO,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAC;IAC1C,KAAK,CAAC,CAAC,GAAG,OAAO,EAAE,UAAU,EAAE,mBAAmB,EAAE,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;CAC/E;AAED,UAAU,mBAAmB;IAC3B,IAAI,CAAC,GAAG,MAAM,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC;IAChD,GAAG,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IACzC,KAAK,CAAC,CAAC,GAAG,OAAO,KAAK,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IACxC,GAAG,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;CACnC;AAED,UAAU,QAAQ,CAAC,CAAC,GAAG,OAAO;IAC5B,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,EAAE;QACJ,QAAQ,EAAE,MAAM,CAAC;QACjB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,OAAO,CAAC;QACpB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED;;;;;;;GAOG;AACH,wBAAsB,QAAQ,CAAC,CAAC,EAC9B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAC5B,OAAO,CAAC,CAAC,EAAE,CAAC,CAOd;AAED;;;;;;;GAOG;AACH,wBAAsB,UAAU,CAAC,CAAC,EAChC,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,WAAW,CAAC,GAAG,EAAE,GAAG,CAAC,GAC5B,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAOnB;AAED;;;;;;;;GAQG;AACH,wBAAsB,QAAQ,CAC5B,EAAE,EAAE,UAAU,EACd,KAAK,EAAE,aAAa,CAAC,OAAO,CAAC,GAC5B,OAAO,CAAC,WAAW,CAAC,CAStB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,UAAU,CAC9B,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,SAAS,aAAa,CAAC,OAAO,CAAC,EAAE,GACzC,OAAO,CAAC,WAAW,EAAE,CAAC,CASxB"}
package/dist/executor.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { sqlTypeFromSchema } from './schema.js';
1
2
  /**
2
3
  * Serialize a query parameter for D1 binding.
3
4
  * D1 accepts: null | string | number | boolean | ArrayBuffer | ArrayBufferView.
@@ -12,6 +13,17 @@ function serializeParam(p) {
12
13
  return p;
13
14
  return JSON.stringify(p);
14
15
  }
16
+ function deserializeRow(row, table) {
17
+ const result = { ...row };
18
+ for (const col of Object.keys(table._columns)) {
19
+ if (col in result && typeof result[col] === 'string') {
20
+ if (sqlTypeFromSchema(table._columns[col]).isJson) {
21
+ result[col] = JSON.parse(result[col]);
22
+ }
23
+ }
24
+ }
25
+ return result;
26
+ }
15
27
  /**
16
28
  * Execute query and return all rows
17
29
  *
@@ -20,12 +32,13 @@ function serializeParam(p) {
20
32
  * const users = await queryAll(env.DB, queries.listUsers());
21
33
  * ```
22
34
  */
23
- export async function queryAll(db, query) {
35
+ export async function queryAll(db, query, table) {
24
36
  const result = await db
25
37
  .prepare(query.sql)
26
38
  .bind(...query.parameters.map(serializeParam))
27
39
  .all();
28
- return result.results ?? [];
40
+ const rows = result.results ?? [];
41
+ return table ? rows.map((r) => deserializeRow(r, table)) : rows;
29
42
  }
30
43
  /**
31
44
  * Execute query and return first row or null
@@ -35,12 +48,14 @@ export async function queryAll(db, query) {
35
48
  * const user = await queryFirst(env.DB, queries.getUserById({ id: 1 }));
36
49
  * ```
37
50
  */
38
- export async function queryFirst(db, query) {
51
+ export async function queryFirst(db, query, table) {
39
52
  const result = await db
40
53
  .prepare(query.sql)
41
54
  .bind(...query.parameters.map(serializeParam))
42
55
  .first();
43
- return result ?? null;
56
+ if (result == null)
57
+ return null;
58
+ return table ? deserializeRow(result, table) : result;
44
59
  }
45
60
  /**
46
61
  * Execute query without returning rows (INSERT/UPDATE/DELETE)
@@ -73,7 +88,7 @@ export async function queryRun(db, query) {
73
88
  * ```
74
89
  */
75
90
  export async function queryBatch(db, queries) {
76
- const statements = queries.map((q) => db.prepare(q.sql).bind(...q.parameters));
91
+ const statements = queries.map((q) => db.prepare(q.sql).bind(...q.parameters.map(serializeParam)));
77
92
  const results = await db.batch(statements);
78
93
  return results.map((r) => ({
79
94
  success: r.success,
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,SAAS,cAAc,CAAC,CAAU;IAChC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IAC5C,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,SAAS;QAAE,OAAO,CAAC,CAAC;IACvF,IAAI,CAAC,YAAY,WAAW,IAAI,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC;QAAE,OAAO,CAAC,CAAC;IAChE,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC;AA8CD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,EAAc,EACd,KAAuB;IAEvB,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;SAClB,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;SAC7C,GAAG,EAAK,CAAC;IACZ,OAAO,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;AAC9B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAc,EACd,KAAuB;IAEvB,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;SAClB,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;SAC7C,KAAK,EAAK,CAAC;IACd,OAAO,MAAM,IAAI,IAAI,CAAC;AACxB,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,EAAc,EACd,KAA6B;IAE7B,MAAM,MAAM,GAAG,MAAM,EAAE;SACpB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;SAClB,IAAI,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;SAC7C,GAAG,EAAE,CAAC;IACT,OAAO;QACL,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAC;AACJ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,EAAc,EACd,OAA0C;IAE1C,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACnC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,UAAU,CAAC,CACxC,CAAC;IACF,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACzB,OAAO,EAAE,CAAC,CAAC,OAAO;QAClB,IAAI,EAAE,CAAC,CAAC,IAAI;KACb,CAAC,CAAC,CAAC;AACN,CAAC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "d1-kyt",
3
- "version": "0.6.1",
3
+ "version": "0.6.2",
4
4
  "description": "Opinionated Cloudflare D1 + Kysely toolkit",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",