@voyantjs/db 0.8.0 → 0.10.0

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/README.md CHANGED
@@ -16,7 +16,7 @@ import { createDbClient } from "@voyantjs/db"
16
16
  // Edge/Serverless (Cloudflare Workers) — Neon HTTP adapter
17
17
  const db = createDbClient(url)
18
18
 
19
- // Node.js (Hatchet worker, scripts) — Postgres.js adapter
19
+ // Node.js (workers, scripts) — Postgres.js adapter
20
20
  const db = createDbClient(url, { adapter: "node" })
21
21
  ```
22
22
 
package/dist/crud.d.ts CHANGED
@@ -26,6 +26,19 @@ export interface ListOptions {
26
26
  * `asc(table.column)` / `desc(table.column)` builders.
27
27
  */
28
28
  orderBy?: SQL | SQL[];
29
+ /**
30
+ * When the table has a `deletedAt` column, soft-deleted rows are filtered
31
+ * out by default. Pass `true` to include them — useful for admin recycle
32
+ * bins, audit reports, or background reconciliation jobs.
33
+ */
34
+ includeDeleted?: boolean;
35
+ }
36
+ /**
37
+ * Options for retrieve-style lookups by id.
38
+ */
39
+ export interface RetrieveOptions {
40
+ /** Include soft-deleted rows. Default: false. */
41
+ includeDeleted?: boolean;
29
42
  }
30
43
  /**
31
44
  * A generic CRUD service bound to a single Drizzle table.
@@ -54,12 +67,14 @@ export interface ListOptions {
54
67
  export declare function createCrudService<TTable extends AnyPgTable, TInsertSchema extends z.ZodTypeAny = z.ZodTypeAny, TUpdateSchema extends z.ZodTypeAny = z.ZodTypeAny>(table: TTable, options?: CrudServiceOptions<TInsertSchema, TUpdateSchema>): {
55
68
  table: TTable;
56
69
  list: (db: DrizzleClient, opts?: ListOptions) => Promise<({ [Key in keyof TTable["_"]["columns"] & string as Key]: TTable["_"]["columns"][Key]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key]["_"]["data"] : TTable["_"]["columns"][Key]["_"]["data"] | null; } extends infer T ? { [K in keyof T]: T[K]; } : never)[]>;
57
- count: (db: DrizzleClient, where?: SQL) => Promise<number>;
70
+ count: (db: DrizzleClient, where?: SQL, opts?: {
71
+ includeDeleted?: boolean;
72
+ }) => Promise<number>;
58
73
  listAndCount: (db: DrizzleClient, opts?: ListOptions) => Promise<{
59
74
  data: ({ [Key in keyof TTable["_"]["columns"] & string as Key]: TTable["_"]["columns"][Key]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key]["_"]["data"] : TTable["_"]["columns"][Key]["_"]["data"] | null; } extends infer T ? { [K in keyof T]: T[K]; } : never)[];
60
75
  total: number;
61
76
  }>;
62
- retrieve: (db: DrizzleClient, id: string) => Promise<({ [Key in keyof TTable["_"]["columns"] & string as Key]: TTable["_"]["columns"][Key]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key]["_"]["data"] : TTable["_"]["columns"][Key]["_"]["data"] | null; } extends infer T ? { [K in keyof T]: T[K]; } : never) | null>;
77
+ retrieve: (db: DrizzleClient, id: string, opts?: RetrieveOptions) => Promise<({ [Key in keyof TTable["_"]["columns"] & string as Key]: TTable["_"]["columns"][Key]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key]["_"]["data"] : TTable["_"]["columns"][Key]["_"]["data"] | null; } extends infer T ? { [K in keyof T]: T[K]; } : never) | null>;
63
78
  create: (db: DrizzleClient, data: { [Key in keyof TTable["_"]["columns"] & string as import("drizzle-orm").RequiredKeyOnly<Key, TTable["_"]["columns"][Key]>]: TTable["_"]["columns"][Key]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key]["_"]["data"] : TTable["_"]["columns"][Key]["_"]["data"] | null; } & { [Key_1 in keyof TTable["_"]["columns"] & string as import("drizzle-orm").OptionalKeyOnly<Key_1, TTable["_"]["columns"][Key_1], false>]?: (TTable["_"]["columns"][Key_1]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key_1]["_"]["data"] : TTable["_"]["columns"][Key_1]["_"]["data"] | null) | undefined; } extends infer T ? { [K in keyof T]: T[K]; } : never) => Promise<{ [Key_2 in keyof TTable["_"]["columns"] & string as Key_2]: TTable["_"]["columns"][Key_2]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key_2]["_"]["data"] : TTable["_"]["columns"][Key_2]["_"]["data"] | null; } extends infer T_1 ? { [K_1 in keyof T_1]: T_1[K_1]; } : never>;
64
79
  update: (db: DrizzleClient, id: string, data: Partial<{ [Key in keyof TTable["_"]["columns"] & string as import("drizzle-orm").RequiredKeyOnly<Key, TTable["_"]["columns"][Key]>]: TTable["_"]["columns"][Key]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key]["_"]["data"] : TTable["_"]["columns"][Key]["_"]["data"] | null; } & { [Key_1 in keyof TTable["_"]["columns"] & string as import("drizzle-orm").OptionalKeyOnly<Key_1, TTable["_"]["columns"][Key_1], false>]?: (TTable["_"]["columns"][Key_1]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key_1]["_"]["data"] : TTable["_"]["columns"][Key_1]["_"]["data"] | null) | undefined; } extends infer T ? { [K in keyof T]: T[K]; } : never>) => Promise<({ [Key_2 in keyof TTable["_"]["columns"] & string as Key_2]: TTable["_"]["columns"][Key_2]["_"]["notNull"] extends true ? TTable["_"]["columns"][Key_2]["_"]["data"] : TTable["_"]["columns"][Key_2]["_"]["data"] | null; } extends infer T_1 ? { [K_1 in keyof T_1]: T_1[K_1]; } : never) | null>;
65
80
  delete: (db: DrizzleClient, id: string) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAuB,KAAK,GAAG,EAAO,MAAM,aAAa,CAAA;AAChE,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EACjD,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IAEjD,iEAAiE;IACjE,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,iEAAiE;IACjE,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;CACtB;AAKD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,SAAS,UAAU,EACzB,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EACjD,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EACjD,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAM;;eAgBrD,aAAa,SAAQ,WAAW,KAAQ,OAAO,CAAC,yQAAK,CAAC;gBAarD,aAAa,UAAU,GAAG,KAAG,OAAO,CAAC,MAAM,CAAC;uBAO/D,aAAa,SACX,WAAW,KAChB,OAAO,CAAC;QAAE,IAAI,EAAE,yQAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;mBAKd,aAAa,MAAM,MAAM,KAAG,OAAO,CAAC,0QAAM,IAAI,CAAC;iBAKjD,aAAa,gpBAAsB,OAAO,2RAAK;iBAanE,aAAa,MACb,MAAM,QACJ,OAAO,qoBAAa,KACzB,OAAO,CAAC,8RAAM,IAAI,CAAC;iBAgBI,aAAa,MAAM,MAAM,KAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;qBAQtD,aAAa,MAAM,MAAM,KAAG,OAAO,CAAC,0QAAM,IAAI,CAAC;kBAYlD,aAAa,MAAM,MAAM,KAAG,OAAO,CAAC,0QAAM,IAAI,CAAC;;EAyB3E"}
1
+ {"version":3,"file":"crud.d.ts","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoC,KAAK,GAAG,EAAO,MAAM,aAAa,CAAA;AAC7E,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,qBAAqB,CAAA;AAC/D,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAG5B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;GAEG;AACH,MAAM,WAAW,kBAAkB,CACjC,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EACjD,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IAEjD,iEAAiE;IACjE,YAAY,CAAC,EAAE,aAAa,CAAA;IAC5B,iEAAiE;IACjE,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,qDAAqD;IACrD,KAAK,CAAC,EAAE,GAAG,CAAA;IACX,oCAAoC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6BAA6B;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;OAGG;IACH,OAAO,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,CAAA;IACrB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,iDAAiD;IACjD,cAAc,CAAC,EAAE,OAAO,CAAA;CACzB;AAKD;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,SAAS,UAAU,EACzB,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EACjD,aAAa,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EACjD,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAkB,CAAC,aAAa,EAAE,aAAa,CAAM;;eA4BrD,aAAa,SAAQ,WAAW,KAAQ,OAAO,CAAC,yQAAK,CAAC;gBAexE,aAAa,UACT,GAAG,SACL;QAAE,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,KACjC,OAAO,CAAC,MAAM,CAAC;uBAQZ,aAAa,SACX,WAAW,KAChB,OAAO,CAAC;QAAE,IAAI,EAAE,yQAAK,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;mBASpC,aAAa,MACb,MAAM,SACJ,eAAe,KACpB,OAAO,CAAC,0QAAM,IAAI,CAAC;iBAMI,aAAa,gpBAAsB,OAAO,2RAAK;iBAanE,aAAa,MACb,MAAM,QACJ,OAAO,qoBAAa,KACzB,OAAO,CAAC,8RAAM,IAAI,CAAC;iBAgBI,aAAa,MAAM,MAAM,KAAG,OAAO,CAAC;QAAE,EAAE,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;qBAQtD,aAAa,MAAM,MAAM,KAAG,OAAO,CAAC,0QAAM,IAAI,CAAC;kBAYlD,aAAa,MAAM,MAAM,KAAG,OAAO,CAAC,0QAAM,IAAI,CAAC;;EAyB3E"}
package/dist/crud.js CHANGED
@@ -1,4 +1,4 @@
1
- import { eq, getTableColumns, sql } from "drizzle-orm";
1
+ import { and, eq, getTableColumns, isNull, sql } from "drizzle-orm";
2
2
  /**
3
3
  * A generic CRUD service bound to a single Drizzle table.
4
4
  *
@@ -34,10 +34,24 @@ export function createCrudService(table, options = {}) {
34
34
  // Drizzle's query builder types lose fidelity under generic TTable — cast
35
35
  // db to AnyDb only at the Drizzle call site; return types stay strict.
36
36
  const asDb = (db) => db;
37
+ function activeFilter() {
38
+ return deletedAtColumn ? isNull(deletedAtColumn) : undefined;
39
+ }
40
+ function composeWhere(opts) {
41
+ if (opts.includeDeleted)
42
+ return opts.where;
43
+ const active = activeFilter();
44
+ if (!active)
45
+ return opts.where;
46
+ if (!opts.where)
47
+ return active;
48
+ return and(opts.where, active);
49
+ }
37
50
  async function list(db, opts = {}) {
38
51
  let query = asDb(db).select().from(table);
39
- if (opts.where)
40
- query = query.where(opts.where);
52
+ const where = composeWhere(opts);
53
+ if (where)
54
+ query = query.where(where);
41
55
  if (opts.orderBy) {
42
56
  const orders = Array.isArray(opts.orderBy) ? opts.orderBy : [opts.orderBy];
43
57
  query = query.orderBy(...orders);
@@ -49,17 +63,22 @@ export function createCrudService(table, options = {}) {
49
63
  const rows = (await query);
50
64
  return rows;
51
65
  }
52
- async function count(db, where) {
66
+ async function count(db, where, opts = {}) {
53
67
  const base = asDb(db).select({ count: sql `count(*)::int` }).from(table);
54
- const rows = (where ? await base.where(where) : await base);
68
+ const composed = composeWhere({ where, includeDeleted: opts.includeDeleted });
69
+ const rows = (composed ? await base.where(composed) : await base);
55
70
  return rows[0]?.count ?? 0;
56
71
  }
57
72
  async function listAndCount(db, opts = {}) {
58
- const [data, total] = await Promise.all([list(db, opts), count(db, opts.where)]);
73
+ const [data, total] = await Promise.all([
74
+ list(db, opts),
75
+ count(db, opts.where, { includeDeleted: opts.includeDeleted }),
76
+ ]);
59
77
  return { data, total };
60
78
  }
61
- async function retrieve(db, id) {
62
- const rows = (await asDb(db).select().from(table).where(eq(idColumn, id)).limit(1));
79
+ async function retrieve(db, id, opts = {}) {
80
+ const where = composeWhere({ where: eq(idColumn, id), includeDeleted: opts.includeDeleted });
81
+ const rows = (await asDb(db).select().from(table).where(where).limit(1));
63
82
  return rows[0] ?? null;
64
83
  }
65
84
  async function create(db, data) {
package/dist/crud.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,EAAE,EAAE,eAAe,EAAY,GAAG,EAAE,MAAM,aAAa,CAAA;AAwChE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,iBAAiB,CAI/B,KAAa,EAAE,UAA4D,EAAE;IAC7E,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAA6B,CAAA;IAClE,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAA;IACzE,CAAC;IACD,MAAM,QAAQ,GAAa,OAAO,CAAC,EAAE,CAAA;IACrC,MAAM,eAAe,GAAyB,OAAO,CAAC,SAAS,CAAA;IAC/D,MAAM,eAAe,GAAyB,OAAO,CAAC,SAAS,CAAA;IAK/D,0EAA0E;IAC1E,uEAAuE;IACvE,MAAM,IAAI,GAAG,CAAC,EAAiB,EAAS,EAAE,CAAC,EAAE,CAAA;IAE7C,KAAK,UAAU,IAAI,CAAC,EAAiB,EAAE,OAAoB,EAAE;QAC3D,IAAI,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACzC,IAAI,IAAI,CAAC,KAAK;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/C,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC1E,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,MAAM,CAAC,CAAA;QAClC,CAAC;QACD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ;YAAE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnE,IAAI,OAAO,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtE,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,CAAU,CAAA;QACnC,OAAO,IAAI,CAAA;IACb,CAAC;IAED,KAAK,UAAU,KAAK,CAAC,EAAiB,EAAE,KAAW;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,GAAG,CAAQ,eAAe,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAC/E,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,IAAI,CAA6B,CAAA;QACvF,OAAO,IAAI,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAA;IAC5B,CAAC;IAED,KAAK,UAAU,YAAY,CACzB,EAAiB,EACjB,OAAoB,EAAE;QAEtB,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;QAChF,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,EAAiB,EAAE,EAAU;QACnD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAU,CAAA;QAC5F,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACxB,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,EAAiB,EAAE,IAAiB;QACxD,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY;YACpC,CAAC,CAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAiB;YACnD,CAAC,CAAC,IAAI,CAAA;QACR,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,CAAU,CAAA;QAClF,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAA;QACnB,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAA;QAC/D,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC;IAED,KAAK,UAAU,MAAM,CACnB,EAAiB,EACjB,EAAU,EACV,IAA0B;QAE1B,MAAM,SAAS,GAAG,OAAO,CAAC,YAAY;YACpC,CAAC,CAAE,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAA0B;YAC5D,CAAC,CAAC,IAAI,CAAA;QACR,MAAM,KAAK,GAA4B,EAAE,GAAI,SAAoB,EAAE,CAAA;QACnE,IAAI,eAAe,EAAE,CAAC;YACpB,KAAK,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAA;QAC9B,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;aACzB,MAAM,CAAC,KAAK,CAAC;aACb,GAAG,CAAC,KAAK,CAAC;aACV,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aACvB,SAAS,EAAE,CAAU,CAAA;QACxB,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACxB,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,EAAiB,EAAE,EAAU;QACjD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;aACzB,MAAM,CAAC,KAAK,CAAC;aACb,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aACvB,SAAS,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAA0B,CAAA;QACxD,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACxB,CAAC;IAED,KAAK,UAAU,UAAU,CAAC,EAAiB,EAAE,EAAU;QACrD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;QAChF,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;aACzB,MAAM,CAAC,KAAK,CAAC;aACb,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,EAAE,CAAC;aAC9B,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aACvB,SAAS,EAAE,CAAU,CAAA;QACxB,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACxB,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,EAAiB,EAAE,EAAU;QAClD,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;QAC7E,CAAC;QACD,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;aACzB,MAAM,CAAC,KAAK,CAAC;aACb,GAAG,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC;aACxB,KAAK,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;aACvB,SAAS,EAAE,CAAU,CAAA;QACxB,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAA;IACxB,CAAC;IAED,OAAO;QACL,KAAK;QACL,IAAI;QACJ,KAAK;QACL,YAAY;QACZ,QAAQ;QACR,MAAM;QACN,MAAM;QACN,MAAM,EAAE,MAAM;QACd,UAAU;QACV,OAAO;QACP,aAAa,EAAE,OAAO,CAAC,eAAe,CAAC;KACxC,CAAA;AACH,CAAC"}
1
+ {"version":3,"file":"crud.js","sourceRoot":"","sources":["../src/crud.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -34,6 +34,7 @@ export declare const db: (import("drizzle-orm/postgres-js").PostgresJsDatabase<R
34
34
  });
35
35
  export * from "./helpers.js";
36
36
  export * from "./lib/index.js";
37
+ export * from "./lifecycle.js";
37
38
  export * from "./queries/index.js";
38
39
  export * from "./types.js";
39
40
  export * from "./utils.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvC,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5F,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;;;;;;;;GAiDF;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS;;;;GAGxC;AAcD,eAAO,MAAM,EAAE;;;;;;;;EAKb,CAAA;AAGF,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AAErB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,QAAQ,MAAM,UAAU,CAAA;AAE/B,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvC,wBAAgB,cAAc,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,EAC5F,gBAAgB,EAAE,MAAM,EACxB,OAAO,CAAC,EAAE;IACR,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,OAAO,CAAC,EAAE,SAAS,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;IACnB,kBAAkB,CAAC,EAAE,MAAM,CAAA;CAC5B;;;;;;;;GAiDF;AAED;;;GAGG;AACH,wBAAgB,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS;;;;GAGxC;AAcD,eAAO,MAAM,EAAE;;;;;;;;EAKb,CAAA;AAGF,cAAc,WAAW,CAAA;AACzB,cAAc,OAAO,CAAA;AACrB,cAAc,aAAa,CAAA;AAE3B,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,SAAS,CAAA"}
package/dist/index.js CHANGED
@@ -63,6 +63,7 @@ export const db = new Proxy({}, {
63
63
  // Re-export lib utilities
64
64
  export * from "./helpers.js";
65
65
  export * from "./lib/index.js";
66
+ export * from "./lifecycle.js";
66
67
  // Re-export queries
67
68
  export * from "./queries/index.js";
68
69
  export * from "./types.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ export declare const PREFIXES: {
17
17
  readonly webhook_deliveries: "whde";
18
18
  readonly domains: "dom";
19
19
  readonly email_domain_records: "emdr";
20
+ readonly idempotency_keys: "ikey";
20
21
  readonly communication_log: "clog";
21
22
  readonly notification_templates: "ntpl";
22
23
  readonly notification_deliveries: "ntdl";
@@ -1 +1 @@
1
- {"version":3,"file":"typeid-prefixes.d.ts","sourceRoot":"","sources":["../../src/lib/typeid-prefixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiRX,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,QAAQ,CAAA;AAC7C,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAA"}
1
+ {"version":3,"file":"typeid-prefixes.d.ts","sourceRoot":"","sources":["../../src/lib/typeid-prefixes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkRX,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,MAAM,OAAO,QAAQ,CAAA;AAC7C,MAAM,MAAM,WAAW,GAAG,CAAC,OAAO,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAA"}
@@ -19,6 +19,7 @@ export const PREFIXES = {
19
19
  webhook_deliveries: "whde",
20
20
  domains: "dom",
21
21
  email_domain_records: "emdr",
22
+ idempotency_keys: "ikey",
22
23
  // --- VOYANT MODULES ---
23
24
  communication_log: "clog",
24
25
  notification_templates: "ntpl",
@@ -1 +1 @@
1
- {"version":3,"file":"typeid-prefixes.js","sourceRoot":"","sources":["../../src/lib/typeid-prefixes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"typeid-prefixes.js","sourceRoot":"","sources":["../../src/lib/typeid-prefixes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { type SQL } from "drizzle-orm";
2
+ import type { AnyPgTable } from "drizzle-orm/pg-core";
3
+ /**
4
+ * Returns true when the table declares a `deletedAt` column.
5
+ *
6
+ * Use this to branch in code paths that need to know whether a soft-delete
7
+ * filter applies (e.g. when composing dynamic WHERE clauses).
8
+ */
9
+ export declare function hasSoftDelete(table: AnyPgTable): boolean;
10
+ /**
11
+ * Returns a `deletedAt IS NULL` predicate for tables that declare a
12
+ * `deletedAt` column. Returns `undefined` for tables without one, so callers
13
+ * can compose the result with `and(...)` without conditional branching:
14
+ *
15
+ * ```ts
16
+ * await db.select().from(bookings).where(and(eq(bookings.id, id), whereActive(bookings)))
17
+ * ```
18
+ *
19
+ * The naming is "active" rather than "not deleted" because the predicate
20
+ * filters to the active (non-tombstoned) rows. `and(undefined, x)` collapses
21
+ * to `x` in drizzle, so the helper is safe to apply unconditionally.
22
+ */
23
+ export declare function whereActive(table: AnyPgTable): SQL | undefined;
24
+ //# sourceMappingURL=lifecycle.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,KAAK,GAAG,EAAE,MAAM,aAAa,CAAA;AAC/D,OAAO,KAAK,EAAE,UAAU,EAAY,MAAM,qBAAqB,CAAA;AAE/D;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAGxD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,UAAU,GAAG,GAAG,GAAG,SAAS,CAI9D"}
@@ -0,0 +1,30 @@
1
+ import { getTableColumns, isNull } from "drizzle-orm";
2
+ /**
3
+ * Returns true when the table declares a `deletedAt` column.
4
+ *
5
+ * Use this to branch in code paths that need to know whether a soft-delete
6
+ * filter applies (e.g. when composing dynamic WHERE clauses).
7
+ */
8
+ export function hasSoftDelete(table) {
9
+ const columns = getTableColumns(table);
10
+ return Boolean(columns.deletedAt);
11
+ }
12
+ /**
13
+ * Returns a `deletedAt IS NULL` predicate for tables that declare a
14
+ * `deletedAt` column. Returns `undefined` for tables without one, so callers
15
+ * can compose the result with `and(...)` without conditional branching:
16
+ *
17
+ * ```ts
18
+ * await db.select().from(bookings).where(and(eq(bookings.id, id), whereActive(bookings)))
19
+ * ```
20
+ *
21
+ * The naming is "active" rather than "not deleted" because the predicate
22
+ * filters to the active (non-tombstoned) rows. `and(undefined, x)` collapses
23
+ * to `x` in drizzle, so the helper is safe to apply unconditionally.
24
+ */
25
+ export function whereActive(table) {
26
+ const columns = getTableColumns(table);
27
+ const deletedAt = columns.deletedAt;
28
+ return deletedAt ? isNull(deletedAt) : undefined;
29
+ }
30
+ //# sourceMappingURL=lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../src/lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,EAAY,MAAM,aAAa,CAAA;AAG/D;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiB;IAC7C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAA6B,CAAA;IAClE,OAAO,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;AACnC,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,KAAiB;IAC3C,MAAM,OAAO,GAAG,eAAe,CAAC,KAAK,CAA6B,CAAA;IAClE,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,CAAA;IACnC,OAAO,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;AAClD,CAAC"}
@@ -0,0 +1,186 @@
1
+ /**
2
+ * Idempotency keys store the response of a previously-handled request keyed
3
+ * by `(scope, key)`. Replays of the same key with the same body hash return
4
+ * the stored response; replays with a *different* body hash conflict (409).
5
+ *
6
+ * Designed for non-idempotent POST endpoints — primarily booking creation,
7
+ * payment intent issuance, and similar money-affecting flows where a
8
+ * client retry must not produce duplicate side effects.
9
+ *
10
+ * Rows expire after `expiresAt`. Cleanup is the deployment's responsibility
11
+ * (typically a daily cron sweep).
12
+ *
13
+ * `scope` namespaces keys per endpoint family so that two unrelated
14
+ * endpoints can safely accept overlapping keys without colliding.
15
+ *
16
+ * `bodyHash` is a SHA-256 of the canonical request body — when the same
17
+ * key replays with the same hash, we return `responseStatus` /
18
+ * `responseBody` verbatim. Different hash → 409.
19
+ *
20
+ * `referenceId` (optional) lets callers point at the resource the original
21
+ * request created — typically a booking id — so that operational queries
22
+ * can correlate replays with the underlying entity.
23
+ */
24
+ export declare const infraIdempotencyKeysTable: Omit<import("drizzle-orm/pg-core").PgTableWithColumns<{
25
+ name: "idempotency_keys";
26
+ schema: undefined;
27
+ columns: {
28
+ id: import("drizzle-orm/pg-core").PgColumn<{
29
+ name: string;
30
+ tableName: "idempotency_keys";
31
+ dataType: "string";
32
+ columnType: "PgText";
33
+ data: string;
34
+ driverParam: string;
35
+ notNull: true;
36
+ hasDefault: true;
37
+ isPrimaryKey: true;
38
+ isAutoincrement: false;
39
+ hasRuntimeDefault: true;
40
+ enumValues: [string, ...string[]];
41
+ baseColumn: never;
42
+ identity: undefined;
43
+ generated: undefined;
44
+ }, {}, {}>;
45
+ scope: import("drizzle-orm/pg-core").PgColumn<{
46
+ name: "scope";
47
+ tableName: "idempotency_keys";
48
+ dataType: "string";
49
+ columnType: "PgText";
50
+ data: string;
51
+ driverParam: string;
52
+ notNull: true;
53
+ hasDefault: false;
54
+ isPrimaryKey: false;
55
+ isAutoincrement: false;
56
+ hasRuntimeDefault: false;
57
+ enumValues: [string, ...string[]];
58
+ baseColumn: never;
59
+ identity: undefined;
60
+ generated: undefined;
61
+ }, {}, {}>;
62
+ key: import("drizzle-orm/pg-core").PgColumn<{
63
+ name: "key";
64
+ tableName: "idempotency_keys";
65
+ dataType: "string";
66
+ columnType: "PgText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: true;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {}>;
79
+ bodyHash: import("drizzle-orm/pg-core").PgColumn<{
80
+ name: "body_hash";
81
+ tableName: "idempotency_keys";
82
+ dataType: "string";
83
+ columnType: "PgText";
84
+ data: string;
85
+ driverParam: string;
86
+ notNull: true;
87
+ hasDefault: false;
88
+ isPrimaryKey: false;
89
+ isAutoincrement: false;
90
+ hasRuntimeDefault: false;
91
+ enumValues: [string, ...string[]];
92
+ baseColumn: never;
93
+ identity: undefined;
94
+ generated: undefined;
95
+ }, {}, {}>;
96
+ responseStatus: import("drizzle-orm/pg-core").PgColumn<{
97
+ name: "response_status";
98
+ tableName: "idempotency_keys";
99
+ dataType: "number";
100
+ columnType: "PgInteger";
101
+ data: number;
102
+ driverParam: string | number;
103
+ notNull: true;
104
+ hasDefault: false;
105
+ isPrimaryKey: false;
106
+ isAutoincrement: false;
107
+ hasRuntimeDefault: false;
108
+ enumValues: undefined;
109
+ baseColumn: never;
110
+ identity: undefined;
111
+ generated: undefined;
112
+ }, {}, {}>;
113
+ responseBody: import("drizzle-orm/pg-core").PgColumn<{
114
+ name: "response_body";
115
+ tableName: "idempotency_keys";
116
+ dataType: "json";
117
+ columnType: "PgJsonb";
118
+ data: unknown;
119
+ driverParam: unknown;
120
+ notNull: true;
121
+ hasDefault: false;
122
+ isPrimaryKey: false;
123
+ isAutoincrement: false;
124
+ hasRuntimeDefault: false;
125
+ enumValues: undefined;
126
+ baseColumn: never;
127
+ identity: undefined;
128
+ generated: undefined;
129
+ }, {}, {}>;
130
+ referenceId: import("drizzle-orm/pg-core").PgColumn<{
131
+ name: "reference_id";
132
+ tableName: "idempotency_keys";
133
+ dataType: "string";
134
+ columnType: "PgText";
135
+ data: string;
136
+ driverParam: string;
137
+ notNull: false;
138
+ hasDefault: false;
139
+ isPrimaryKey: false;
140
+ isAutoincrement: false;
141
+ hasRuntimeDefault: false;
142
+ enumValues: [string, ...string[]];
143
+ baseColumn: never;
144
+ identity: undefined;
145
+ generated: undefined;
146
+ }, {}, {}>;
147
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
148
+ name: "created_at";
149
+ tableName: "idempotency_keys";
150
+ dataType: "date";
151
+ columnType: "PgTimestamp";
152
+ data: Date;
153
+ driverParam: string;
154
+ notNull: true;
155
+ hasDefault: true;
156
+ isPrimaryKey: false;
157
+ isAutoincrement: false;
158
+ hasRuntimeDefault: false;
159
+ enumValues: undefined;
160
+ baseColumn: never;
161
+ identity: undefined;
162
+ generated: undefined;
163
+ }, {}, {}>;
164
+ expiresAt: import("drizzle-orm/pg-core").PgColumn<{
165
+ name: "expires_at";
166
+ tableName: "idempotency_keys";
167
+ dataType: "date";
168
+ columnType: "PgTimestamp";
169
+ data: Date;
170
+ driverParam: string;
171
+ notNull: true;
172
+ hasDefault: false;
173
+ isPrimaryKey: false;
174
+ isAutoincrement: false;
175
+ hasRuntimeDefault: false;
176
+ enumValues: undefined;
177
+ baseColumn: never;
178
+ identity: undefined;
179
+ generated: undefined;
180
+ }, {}, {}>;
181
+ };
182
+ dialect: "pg";
183
+ }>, "enableRLS">;
184
+ export type InsertInfraIdempotencyKey = typeof infraIdempotencyKeysTable.$inferInsert;
185
+ export type SelectInfraIdempotencyKey = typeof infraIdempotencyKeysTable.$inferSelect;
186
+ //# sourceMappingURL=idempotency_keys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency_keys.d.ts","sourceRoot":"","sources":["../../../src/schema/infra/idempotency_keys.ts"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gBAiBzB,CAAA;AAEb,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAC,YAAY,CAAA;AACrF,MAAM,MAAM,yBAAyB,GAAG,OAAO,yBAAyB,CAAC,YAAY,CAAA"}
@@ -0,0 +1,40 @@
1
+ import { index, integer, jsonb, pgTable, text, timestamp, uniqueIndex } from "drizzle-orm/pg-core";
2
+ import { typeId } from "../../lib/index.js";
3
+ /**
4
+ * Idempotency keys store the response of a previously-handled request keyed
5
+ * by `(scope, key)`. Replays of the same key with the same body hash return
6
+ * the stored response; replays with a *different* body hash conflict (409).
7
+ *
8
+ * Designed for non-idempotent POST endpoints — primarily booking creation,
9
+ * payment intent issuance, and similar money-affecting flows where a
10
+ * client retry must not produce duplicate side effects.
11
+ *
12
+ * Rows expire after `expiresAt`. Cleanup is the deployment's responsibility
13
+ * (typically a daily cron sweep).
14
+ *
15
+ * `scope` namespaces keys per endpoint family so that two unrelated
16
+ * endpoints can safely accept overlapping keys without colliding.
17
+ *
18
+ * `bodyHash` is a SHA-256 of the canonical request body — when the same
19
+ * key replays with the same hash, we return `responseStatus` /
20
+ * `responseBody` verbatim. Different hash → 409.
21
+ *
22
+ * `referenceId` (optional) lets callers point at the resource the original
23
+ * request created — typically a booking id — so that operational queries
24
+ * can correlate replays with the underlying entity.
25
+ */
26
+ export const infraIdempotencyKeysTable = pgTable("idempotency_keys", {
27
+ id: typeId("idempotency_keys"),
28
+ scope: text("scope").notNull(),
29
+ key: text("key").notNull(),
30
+ bodyHash: text("body_hash").notNull(),
31
+ responseStatus: integer("response_status").notNull(),
32
+ responseBody: jsonb("response_body").notNull(),
33
+ referenceId: text("reference_id"),
34
+ createdAt: timestamp("created_at", { withTimezone: true }).notNull().defaultNow(),
35
+ expiresAt: timestamp("expires_at", { withTimezone: true }).notNull(),
36
+ }, (table) => [
37
+ uniqueIndex("idx_infra_idempotency_keys_scope_key").on(table.scope, table.key),
38
+ index("idx_infra_idempotency_keys_expires_at").on(table.expiresAt),
39
+ ]).enableRLS();
40
+ //# sourceMappingURL=idempotency_keys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"idempotency_keys.js","sourceRoot":"","sources":["../../../src/schema/infra/idempotency_keys.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AAElG,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAA;AAElC;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,CAAC,MAAM,yBAAyB,GAAG,OAAO,CAC9C,kBAAkB,EAClB;IACE,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC;IAC9B,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,EAAE;IAC9B,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;IAC1B,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,OAAO,EAAE;IACrC,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,EAAE;IACpD,YAAY,EAAE,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE;IAC9C,WAAW,EAAE,IAAI,CAAC,cAAc,CAAC;IACjC,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,UAAU,EAAE;IACjF,SAAS,EAAE,SAAS,CAAC,YAAY,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE;CACrE,EACD,CAAC,KAAK,EAAE,EAAE,CAAC;IACT,WAAW,CAAC,sCAAsC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC;IAC9E,KAAK,CAAC,uCAAuC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,SAAS,CAAC;CACnE,CACF,CAAC,SAAS,EAAE,CAAA"}
@@ -1,3 +1,4 @@
1
1
  export * from "./domains.js";
2
+ export * from "./idempotency_keys.js";
2
3
  export * from "./webhook_subscriptions.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/infra/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAA;AACzB,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/schema/infra/index.ts"],"names":[],"mappings":"AACA,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA"}
@@ -1,4 +1,5 @@
1
1
  // audit_log: REMOVED - migrated to Tinybird (audit_log.datasource)
2
2
  export * from "./domains.js";
3
+ export * from "./idempotency_keys.js";
3
4
  export * from "./webhook_subscriptions.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/infra/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,cAAc,WAAW,CAAA;AACzB,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/schema/infra/index.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,cAAc,WAAW,CAAA;AACzB,cAAc,oBAAoB,CAAA;AAClC,cAAc,yBAAyB,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@voyantjs/db",
3
- "version": "0.8.0",
3
+ "version": "0.10.0",
4
4
  "license": "FSL-1.1-Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
@@ -57,6 +57,10 @@
57
57
  "types": "./dist/crud.d.ts",
58
58
  "import": "./dist/crud.js"
59
59
  },
60
+ "./lifecycle": {
61
+ "types": "./dist/lifecycle.d.ts",
62
+ "import": "./dist/lifecycle.js"
63
+ },
60
64
  "./links": {
61
65
  "types": "./dist/links.d.ts",
62
66
  "import": "./dist/links.js"
@@ -126,7 +130,7 @@
126
130
  "postgres": "^3.4.8",
127
131
  "typeid-js": "^1.2.0",
128
132
  "zod": "^4.3.6",
129
- "@voyantjs/core": "0.8.0"
133
+ "@voyantjs/core": "0.10.0"
130
134
  },
131
135
  "devDependencies": {
132
136
  "typescript": "^6.0.2",