@justwant/db 0.2.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 +111 -0
- package/dist/adapter.d.ts +11 -0
- package/dist/adapter.d.ts.map +1 -0
- package/dist/adapter.js +2 -0
- package/dist/adapter.js.map +1 -0
- package/dist/base/adapter.d.ts +11 -0
- package/dist/base/adapter.d.ts.map +1 -0
- package/dist/base/adapter.js +2 -0
- package/dist/base/adapter.js.map +1 -0
- package/dist/base/conforms.d.ts +12 -0
- package/dist/base/conforms.d.ts.map +1 -0
- package/dist/base/conforms.js +13 -0
- package/dist/base/conforms.js.map +1 -0
- package/dist/base/contract.d.ts +6 -0
- package/dist/base/contract.d.ts.map +1 -0
- package/dist/base/contract.js +6 -0
- package/dist/base/contract.js.map +1 -0
- package/dist/base/errors.d.ts +75 -0
- package/dist/base/errors.d.ts.map +1 -0
- package/dist/base/errors.js +100 -0
- package/dist/base/errors.js.map +1 -0
- package/dist/base/fields.d.ts +5 -0
- package/dist/base/fields.d.ts.map +1 -0
- package/dist/base/fields.js +5 -0
- package/dist/base/fields.js.map +1 -0
- package/dist/base/index.d.ts +5 -0
- package/dist/base/index.d.ts.map +1 -0
- package/dist/base/index.js +3 -0
- package/dist/base/index.js.map +1 -0
- package/dist/base/table.d.ts +61 -0
- package/dist/base/table.d.ts.map +1 -0
- package/dist/base/table.js +2 -0
- package/dist/base/table.js.map +1 -0
- package/dist/base/validate.d.ts +5 -0
- package/dist/base/validate.d.ts.map +1 -0
- package/dist/base/validate.js +5 -0
- package/dist/base/validate.js.map +1 -0
- package/dist/contract.d.ts +27 -0
- package/dist/contract.d.ts.map +1 -0
- package/dist/contract.js +14 -0
- package/dist/contract.js.map +1 -0
- package/dist/contract.type-test.d.ts +2 -0
- package/dist/contract.type-test.d.ts.map +1 -0
- package/dist/contract.type-test.js +34 -0
- package/dist/contract.type-test.js.map +1 -0
- package/dist/ddl/drop.d.ts +6 -0
- package/dist/ddl/drop.d.ts.map +1 -0
- package/dist/ddl/drop.js +14 -0
- package/dist/ddl/drop.js.map +1 -0
- package/dist/ddl/exist.d.ts +6 -0
- package/dist/ddl/exist.d.ts.map +1 -0
- package/dist/ddl/exist.js +24 -0
- package/dist/ddl/exist.js.map +1 -0
- package/dist/ddl/index.d.ts +17 -0
- package/dist/ddl/index.d.ts.map +1 -0
- package/dist/ddl/index.js +58 -0
- package/dist/ddl/index.js.map +1 -0
- package/dist/drizzle/buildOrderBy.d.ts +11 -0
- package/dist/drizzle/buildOrderBy.d.ts.map +1 -0
- package/dist/drizzle/buildOrderBy.js +19 -0
- package/dist/drizzle/buildOrderBy.js.map +1 -0
- package/dist/drizzle/buildPagination.d.ts +15 -0
- package/dist/drizzle/buildPagination.d.ts.map +1 -0
- package/dist/drizzle/buildPagination.js +13 -0
- package/dist/drizzle/buildPagination.js.map +1 -0
- package/dist/drizzle/buildWhere.d.ts +11 -0
- package/dist/drizzle/buildWhere.d.ts.map +1 -0
- package/dist/drizzle/buildWhere.js +21 -0
- package/dist/drizzle/buildWhere.js.map +1 -0
- package/dist/drizzle/bulkInsert.d.ts +9 -0
- package/dist/drizzle/bulkInsert.d.ts.map +1 -0
- package/dist/drizzle/bulkInsert.js +16 -0
- package/dist/drizzle/bulkInsert.js.map +1 -0
- package/dist/drizzle/collectSchemas.d.ts +11 -0
- package/dist/drizzle/collectSchemas.d.ts.map +1 -0
- package/dist/drizzle/collectSchemas.js +12 -0
- package/dist/drizzle/collectSchemas.js.map +1 -0
- package/dist/drizzle/createAdapter.d.ts +15 -0
- package/dist/drizzle/createAdapter.d.ts.map +1 -0
- package/dist/drizzle/createAdapter.js +163 -0
- package/dist/drizzle/createAdapter.js.map +1 -0
- package/dist/drizzle/defineMappedTable.d.ts +19 -0
- package/dist/drizzle/defineMappedTable.d.ts.map +1 -0
- package/dist/drizzle/defineMappedTable.js +66 -0
- package/dist/drizzle/defineMappedTable.js.map +1 -0
- package/dist/drizzle/drizzle-types.d.ts +16 -0
- package/dist/drizzle/drizzle-types.d.ts.map +1 -0
- package/dist/drizzle/drizzle-types.js +11 -0
- package/dist/drizzle/drizzle-types.js.map +1 -0
- package/dist/drizzle/errors.d.ts +10 -0
- package/dist/drizzle/errors.d.ts.map +1 -0
- package/dist/drizzle/errors.js +61 -0
- package/dist/drizzle/errors.js.map +1 -0
- package/dist/drizzle/index.d.ts +14 -0
- package/dist/drizzle/index.d.ts.map +1 -0
- package/dist/drizzle/index.js +12 -0
- package/dist/drizzle/index.js.map +1 -0
- package/dist/drizzle/mapping.d.ts +34 -0
- package/dist/drizzle/mapping.d.ts.map +1 -0
- package/dist/drizzle/mapping.js +24 -0
- package/dist/drizzle/mapping.js.map +1 -0
- package/dist/drizzle/types.d.ts +38 -0
- package/dist/drizzle/types.d.ts.map +1 -0
- package/dist/drizzle/types.js +6 -0
- package/dist/drizzle/types.js.map +1 -0
- package/dist/drizzle/upsert.d.ts +11 -0
- package/dist/drizzle/upsert.d.ts.map +1 -0
- package/dist/drizzle/upsert.js +28 -0
- package/dist/drizzle/upsert.js.map +1 -0
- package/dist/errors.d.ts +75 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +100 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/prisma/buildWhere.d.ts +18 -0
- package/dist/prisma/buildWhere.d.ts.map +1 -0
- package/dist/prisma/buildWhere.js +27 -0
- package/dist/prisma/buildWhere.js.map +1 -0
- package/dist/prisma/bulkInsert.d.ts +19 -0
- package/dist/prisma/bulkInsert.d.ts.map +1 -0
- package/dist/prisma/bulkInsert.js +13 -0
- package/dist/prisma/bulkInsert.js.map +1 -0
- package/dist/prisma/createAdapter.d.ts +13 -0
- package/dist/prisma/createAdapter.d.ts.map +1 -0
- package/dist/prisma/createAdapter.js +154 -0
- package/dist/prisma/createAdapter.js.map +1 -0
- package/dist/prisma/errors.d.ts +12 -0
- package/dist/prisma/errors.d.ts.map +1 -0
- package/dist/prisma/errors.js +133 -0
- package/dist/prisma/errors.js.map +1 -0
- package/dist/prisma/index.d.ts +9 -0
- package/dist/prisma/index.d.ts.map +1 -0
- package/dist/prisma/index.js +7 -0
- package/dist/prisma/index.js.map +1 -0
- package/dist/prisma/mapping.d.ts +15 -0
- package/dist/prisma/mapping.d.ts.map +1 -0
- package/dist/prisma/mapping.js +23 -0
- package/dist/prisma/mapping.js.map +1 -0
- package/dist/prisma/types.d.ts +61 -0
- package/dist/prisma/types.d.ts.map +1 -0
- package/dist/prisma/types.js +6 -0
- package/dist/prisma/types.js.map +1 -0
- package/dist/prisma/upsert.d.ts +17 -0
- package/dist/prisma/upsert.d.ts.map +1 -0
- package/dist/prisma/upsert.js +11 -0
- package/dist/prisma/upsert.js.map +1 -0
- package/dist/table.d.ts +36 -0
- package/dist/table.d.ts.map +1 -0
- package/dist/table.js +2 -0
- package/dist/table.js.map +1 -0
- package/dist/waddler/better-sqlite3/index.d.ts +17 -0
- package/dist/waddler/better-sqlite3/index.d.ts.map +1 -0
- package/dist/waddler/better-sqlite3/index.js +20 -0
- package/dist/waddler/better-sqlite3/index.js.map +1 -0
- package/dist/waddler/buildOrderBy.d.ts +10 -0
- package/dist/waddler/buildOrderBy.d.ts.map +1 -0
- package/dist/waddler/buildOrderBy.js +22 -0
- package/dist/waddler/buildOrderBy.js.map +1 -0
- package/dist/waddler/buildWhere.d.ts +13 -0
- package/dist/waddler/buildWhere.d.ts.map +1 -0
- package/dist/waddler/buildWhere.js +26 -0
- package/dist/waddler/buildWhere.js.map +1 -0
- package/dist/waddler/bun-sql/index.d.ts +17 -0
- package/dist/waddler/bun-sql/index.d.ts.map +1 -0
- package/dist/waddler/bun-sql/index.js +25 -0
- package/dist/waddler/bun-sql/index.js.map +1 -0
- package/dist/waddler/bun-sqlite/index.d.ts +17 -0
- package/dist/waddler/bun-sqlite/index.d.ts.map +1 -0
- package/dist/waddler/bun-sqlite/index.js +20 -0
- package/dist/waddler/bun-sqlite/index.js.map +1 -0
- package/dist/waddler/core.d.ts +14 -0
- package/dist/waddler/core.d.ts.map +1 -0
- package/dist/waddler/core.js +340 -0
- package/dist/waddler/core.js.map +1 -0
- package/dist/waddler/d1/index.d.ts +16 -0
- package/dist/waddler/d1/index.d.ts.map +1 -0
- package/dist/waddler/d1/index.js +18 -0
- package/dist/waddler/d1/index.js.map +1 -0
- package/dist/waddler/durable-objects/index.d.ts +16 -0
- package/dist/waddler/durable-objects/index.d.ts.map +1 -0
- package/dist/waddler/durable-objects/index.js +18 -0
- package/dist/waddler/durable-objects/index.js.map +1 -0
- package/dist/waddler/errors.d.ts +10 -0
- package/dist/waddler/errors.d.ts.map +1 -0
- package/dist/waddler/errors.js +65 -0
- package/dist/waddler/errors.js.map +1 -0
- package/dist/waddler/index.d.ts +10 -0
- package/dist/waddler/index.d.ts.map +1 -0
- package/dist/waddler/index.js +6 -0
- package/dist/waddler/index.js.map +1 -0
- package/dist/waddler/mapping.d.ts +14 -0
- package/dist/waddler/mapping.d.ts.map +1 -0
- package/dist/waddler/mapping.js +23 -0
- package/dist/waddler/mapping.js.map +1 -0
- package/dist/waddler/mysql/index.d.ts +17 -0
- package/dist/waddler/mysql/index.d.ts.map +1 -0
- package/dist/waddler/mysql/index.js +29 -0
- package/dist/waddler/mysql/index.js.map +1 -0
- package/dist/waddler/neon/index.d.ts +17 -0
- package/dist/waddler/neon/index.d.ts.map +1 -0
- package/dist/waddler/neon/index.js +25 -0
- package/dist/waddler/neon/index.js.map +1 -0
- package/dist/waddler/pg/index.d.ts +17 -0
- package/dist/waddler/pg/index.d.ts.map +1 -0
- package/dist/waddler/pg/index.js +25 -0
- package/dist/waddler/pg/index.js.map +1 -0
- package/dist/waddler/pglite/index.d.ts +17 -0
- package/dist/waddler/pglite/index.d.ts.map +1 -0
- package/dist/waddler/pglite/index.js +25 -0
- package/dist/waddler/pglite/index.js.map +1 -0
- package/dist/waddler/planetscale/index.d.ts +17 -0
- package/dist/waddler/planetscale/index.d.ts.map +1 -0
- package/dist/waddler/planetscale/index.js +29 -0
- package/dist/waddler/planetscale/index.js.map +1 -0
- package/dist/waddler/postgres-js/index.d.ts +17 -0
- package/dist/waddler/postgres-js/index.d.ts.map +1 -0
- package/dist/waddler/postgres-js/index.js +25 -0
- package/dist/waddler/postgres-js/index.js.map +1 -0
- package/dist/waddler/tidb/index.d.ts +17 -0
- package/dist/waddler/tidb/index.d.ts.map +1 -0
- package/dist/waddler/tidb/index.js +29 -0
- package/dist/waddler/tidb/index.js.map +1 -0
- package/dist/waddler/turso/index.d.ts +17 -0
- package/dist/waddler/turso/index.d.ts.map +1 -0
- package/dist/waddler/turso/index.js +29 -0
- package/dist/waddler/turso/index.js.map +1 -0
- package/dist/waddler/types.d.ts +91 -0
- package/dist/waddler/types.d.ts.map +1 -0
- package/dist/waddler/types.js +6 -0
- package/dist/waddler/types.js.map +1 -0
- package/dist/waddler/vercel-postgres/index.d.ts +17 -0
- package/dist/waddler/vercel-postgres/index.d.ts.map +1 -0
- package/dist/waddler/vercel-postgres/index.js +25 -0
- package/dist/waddler/vercel-postgres/index.js.map +1 -0
- package/dist/waddler/xata/index.d.ts +17 -0
- package/dist/waddler/xata/index.d.ts.map +1 -0
- package/dist/waddler/xata/index.js +25 -0
- package/dist/waddler/xata/index.js.map +1 -0
- package/docs/CONTRACT.md +36 -0
- package/docs/COVERAGE.md +59 -0
- package/docs/DRIVERS.md +62 -0
- package/docs/drizzle/DIALECTS.md +62 -0
- package/docs/drizzle/LIMITS.md +39 -0
- package/package.json +232 -0
- package/prisma/schema.prisma +15 -0
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Define a mapped table: Drizzle table + contract + mapping.
|
|
3
|
+
* Returns a DrizzleMappedTable that needs client injection via createDrizzleAdapter.
|
|
4
|
+
*/
|
|
5
|
+
import { getTableName } from "drizzle-orm";
|
|
6
|
+
const defaultOptions = {
|
|
7
|
+
softDeleteColumn: "deletedAt",
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Defines a mapped table from a Drizzle table and a contract.
|
|
11
|
+
* The returned table must be used with createDrizzleAdapter to inject the client.
|
|
12
|
+
*
|
|
13
|
+
* @param table - Drizzle table
|
|
14
|
+
* @param contract - Adapter contract (from defineContract)
|
|
15
|
+
* @param mapping - Map contract keys to table columns
|
|
16
|
+
* @param options - softDeleteColumn (default 'deletedAt'), or null to disable
|
|
17
|
+
*/
|
|
18
|
+
export function defineMappedTable(table, contract, mapping, options) {
|
|
19
|
+
const opts = { ...defaultOptions, ...options };
|
|
20
|
+
const tableName = getTableName(table);
|
|
21
|
+
const internal = {
|
|
22
|
+
contract,
|
|
23
|
+
source: table,
|
|
24
|
+
mapping,
|
|
25
|
+
client: null,
|
|
26
|
+
tableName,
|
|
27
|
+
sql: {
|
|
28
|
+
findById: () => {
|
|
29
|
+
throw new Error("defineMappedTable: use createDrizzleAdapter to create a fully configured adapter");
|
|
30
|
+
},
|
|
31
|
+
findOne: () => {
|
|
32
|
+
throw new Error("defineMappedTable: use createDrizzleAdapter to create a fully configured adapter");
|
|
33
|
+
},
|
|
34
|
+
findMany: () => {
|
|
35
|
+
throw new Error("defineMappedTable: use createDrizzleAdapter to create a fully configured adapter");
|
|
36
|
+
},
|
|
37
|
+
create: () => {
|
|
38
|
+
throw new Error("defineMappedTable: use createDrizzleAdapter to create a fully configured adapter");
|
|
39
|
+
},
|
|
40
|
+
update: () => {
|
|
41
|
+
throw new Error("defineMappedTable: use createDrizzleAdapter to create a fully configured adapter");
|
|
42
|
+
},
|
|
43
|
+
delete: () => {
|
|
44
|
+
throw new Error("defineMappedTable: use createDrizzleAdapter to create a fully configured adapter");
|
|
45
|
+
},
|
|
46
|
+
hardDelete: () => {
|
|
47
|
+
throw new Error("defineMappedTable: use createDrizzleAdapter to create a fully configured adapter");
|
|
48
|
+
},
|
|
49
|
+
},
|
|
50
|
+
};
|
|
51
|
+
return {
|
|
52
|
+
get infer() {
|
|
53
|
+
return undefined;
|
|
54
|
+
},
|
|
55
|
+
contract,
|
|
56
|
+
_internal: internal,
|
|
57
|
+
create: (data) => internal.sql.create(data).execute(),
|
|
58
|
+
findById: (id) => internal.sql.findById(id).execute(),
|
|
59
|
+
findOne: (where) => internal.sql.findOne(where).execute(),
|
|
60
|
+
findMany: (where) => internal.sql.findMany(where).execute(),
|
|
61
|
+
update: (id, data) => internal.sql.update(id, data).execute(),
|
|
62
|
+
delete: (id) => internal.sql.delete(id).execute(),
|
|
63
|
+
hardDelete: (id) => internal.sql.hardDelete(id).execute(),
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=defineMappedTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defineMappedTable.js","sourceRoot":"","sources":["../../src/drizzle/defineMappedTable.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAS3C,MAAM,cAAc,GAEhB;IACF,gBAAgB,EAAE,WAAW;CAC9B,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,UAAU,iBAAiB,CAC/B,KAAa,EACb,QAAmB,EACnB,OAAsC,EACtC,OAAkC;IAElC,MAAM,IAAI,GAAG,EAAE,GAAG,cAAc,EAAE,GAAG,OAAO,EAAE,CAAC;IAC/C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IAEtC,MAAM,QAAQ,GAAkD;QAC9D,QAAQ;QACR,MAAM,EAAE,KAAK;QACb,OAAO;QACP,MAAM,EAAE,IAA0E;QAClF,SAAS;QACT,GAAG,EAAE;YACH,QAAQ,EAAE,GAAG,EAAE;gBACb,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,GAAG,EAAE;gBACZ,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,QAAQ,EAAE,GAAG,EAAE;gBACb,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,MAAM,EAAE,GAAG,EAAE;gBACX,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;YACJ,CAAC;YACD,UAAU,EAAE,GAAG,EAAE;gBACf,MAAM,IAAI,KAAK,CACb,kFAAkF,CACnF,CAAC;YACJ,CAAC;SACF;KACF,CAAC;IAEF,OAAO;QACL,IAAI,KAAK;YACP,OAAO,SAAgD,CAAC;QAC1D,CAAC;QACD,QAAQ;QACR,SAAS,EAAE,QAAQ;QACnB,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE;QACrD,QAAQ,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;QACrD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QACzD,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE;QAC3D,MAAM,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,OAAO,EAAE;QAC7D,MAAM,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;QACjD,UAAU,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;KAC1D,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstraction over Drizzle ORM internal types.
|
|
3
|
+
* Single point of modification if Drizzle changes.
|
|
4
|
+
*
|
|
5
|
+
* @see docs/LIMITS.md for supported types.
|
|
6
|
+
*/
|
|
7
|
+
import type { Column } from "drizzle-orm";
|
|
8
|
+
/** Extract the data type from a Drizzle column. Uses internal `_` shape. */
|
|
9
|
+
export type ColData<C> = C extends {
|
|
10
|
+
_: {
|
|
11
|
+
data: infer D;
|
|
12
|
+
};
|
|
13
|
+
} ? D : unknown;
|
|
14
|
+
/** Get column data type - wrapper for type extraction. */
|
|
15
|
+
export declare function getColumnDataType(column: Column): unknown;
|
|
16
|
+
//# sourceMappingURL=drizzle-types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drizzle-types.d.ts","sourceRoot":"","sources":["../../src/drizzle/drizzle-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,4EAA4E;AAC5E,MAAM,MAAM,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS;IAAE,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC,CAAA;KAAE,CAAA;CAAE,GAAG,CAAC,GAAG,OAAO,CAAC;AAE1E,0DAA0D;AAC1D,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Abstraction over Drizzle ORM internal types.
|
|
3
|
+
* Single point of modification if Drizzle changes.
|
|
4
|
+
*
|
|
5
|
+
* @see docs/LIMITS.md for supported types.
|
|
6
|
+
*/
|
|
7
|
+
/** Get column data type - wrapper for type extraction. */
|
|
8
|
+
export function getColumnDataType(column) {
|
|
9
|
+
return column._?.data;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=drizzle-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"drizzle-types.js","sourceRoot":"","sources":["../../src/drizzle/drizzle-types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,0DAA0D;AAC1D,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAQ,MAAqC,CAAC,CAAC,EAAE,IAAI,CAAC;AACxD,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse database errors into normalized adapter errors.
|
|
3
|
+
*/
|
|
4
|
+
import { AdapterError } from "@justwant/db/errors";
|
|
5
|
+
/**
|
|
6
|
+
* Maps raw database errors to normalized AdapterError subclasses.
|
|
7
|
+
* Supports PostgreSQL, MySQL, and SQLite error codes.
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseDbError(raw: unknown): AdapterError;
|
|
10
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/drizzle/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAGL,YAAY,EAMb,MAAM,qBAAqB,CAAC;AAE7B;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,OAAO,GAAG,YAAY,CAsDvD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parse database errors into normalized adapter errors.
|
|
3
|
+
*/
|
|
4
|
+
import { AdapterCheckViolationError, AdapterConnectionError, AdapterError, AdapterForeignKeyViolationError, AdapterNotNullViolationError, AdapterTimeoutError, AdapterTransactionError, AdapterUniqueViolationError, } from "@justwant/db/errors";
|
|
5
|
+
/**
|
|
6
|
+
* Maps raw database errors to normalized AdapterError subclasses.
|
|
7
|
+
* Supports PostgreSQL, MySQL, and SQLite error codes.
|
|
8
|
+
*/
|
|
9
|
+
export function parseDbError(raw) {
|
|
10
|
+
const err = raw;
|
|
11
|
+
const message = typeof err?.message === "string" ? err.message : String(raw ?? "Unknown error");
|
|
12
|
+
const code = err?.code;
|
|
13
|
+
if (typeof code === "string") {
|
|
14
|
+
switch (code) {
|
|
15
|
+
case "23503":
|
|
16
|
+
return new AdapterForeignKeyViolationError(message, {
|
|
17
|
+
table: String(err?.table ?? ""),
|
|
18
|
+
column: String(err?.column ?? ""),
|
|
19
|
+
});
|
|
20
|
+
case "23505":
|
|
21
|
+
return new AdapterUniqueViolationError(message, {
|
|
22
|
+
table: String(err?.table ?? ""),
|
|
23
|
+
column: String(err?.column ?? ""),
|
|
24
|
+
constraint: String(err?.constraint ?? ""),
|
|
25
|
+
});
|
|
26
|
+
case "23502":
|
|
27
|
+
return new AdapterNotNullViolationError(message, {
|
|
28
|
+
table: String(err?.table ?? ""),
|
|
29
|
+
column: String(err?.column ?? ""),
|
|
30
|
+
});
|
|
31
|
+
case "23514":
|
|
32
|
+
return new AdapterCheckViolationError(message, {
|
|
33
|
+
table: String(err?.table ?? ""),
|
|
34
|
+
constraint: String(err?.constraint ?? ""),
|
|
35
|
+
});
|
|
36
|
+
case "ECONNREFUSED":
|
|
37
|
+
case "ECONNRESET":
|
|
38
|
+
return new AdapterConnectionError(message, { code });
|
|
39
|
+
case "ETIMEDOUT":
|
|
40
|
+
return new AdapterTimeoutError(message, { code });
|
|
41
|
+
case "40P01":
|
|
42
|
+
case "40001":
|
|
43
|
+
return new AdapterTransactionError(message, { code });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
const msg = String(message);
|
|
47
|
+
if (msg.includes("FOREIGN KEY constraint failed")) {
|
|
48
|
+
return new AdapterForeignKeyViolationError(msg);
|
|
49
|
+
}
|
|
50
|
+
if (msg.includes("UNIQUE constraint failed")) {
|
|
51
|
+
return new AdapterUniqueViolationError(msg);
|
|
52
|
+
}
|
|
53
|
+
if (msg.includes("NOT NULL constraint failed")) {
|
|
54
|
+
return new AdapterNotNullViolationError(msg);
|
|
55
|
+
}
|
|
56
|
+
if (msg.includes("CHECK constraint failed")) {
|
|
57
|
+
return new AdapterCheckViolationError(msg);
|
|
58
|
+
}
|
|
59
|
+
return new AdapterError(msg, "UNKNOWN", { original: raw });
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/drizzle/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export { createDrizzleAdapter } from "./createAdapter.js";
|
|
2
|
+
export { defineMappedTable } from "./defineMappedTable.js";
|
|
3
|
+
export { buildWhere } from "./buildWhere.js";
|
|
4
|
+
export { buildOrderBy, type OrderDirection } from "./buildOrderBy.js";
|
|
5
|
+
export { buildPagination, type PaginationOptions } from "./buildPagination.js";
|
|
6
|
+
export { upsert } from "./upsert.js";
|
|
7
|
+
export { bulkInsert } from "./bulkInsert.js";
|
|
8
|
+
export { collectSchemas } from "./collectSchemas.js";
|
|
9
|
+
export { parseDbError } from "./errors.js";
|
|
10
|
+
export { mapRowToContract } from "./mapping.js";
|
|
11
|
+
export type { DrizzleClient, DrizzleAdapter, DrizzleMappedTable, DrizzleMappedTableInternal, DefineMappedTableOptions, } from "./types.js";
|
|
12
|
+
export type { MappingFor, TableMapping } from "./mapping.js";
|
|
13
|
+
export { AdapterError, AdapterNotFoundError, AdapterConstraintError, AdapterForeignKeyViolationError, AdapterUniqueViolationError, AdapterNotNullViolationError, AdapterCheckViolationError, AdapterMappingError, AdapterUnsupportedError, AdapterConnectionError, AdapterTransactionError, AdapterTimeoutError, isAdapterError, } from "@justwant/db/errors";
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD,YAAY,EACV,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAE7D,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,GACf,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export { createDrizzleAdapter } from "./createAdapter.js";
|
|
2
|
+
export { defineMappedTable } from "./defineMappedTable.js";
|
|
3
|
+
export { buildWhere } from "./buildWhere.js";
|
|
4
|
+
export { buildOrderBy } from "./buildOrderBy.js";
|
|
5
|
+
export { buildPagination } from "./buildPagination.js";
|
|
6
|
+
export { upsert } from "./upsert.js";
|
|
7
|
+
export { bulkInsert } from "./bulkInsert.js";
|
|
8
|
+
export { collectSchemas } from "./collectSchemas.js";
|
|
9
|
+
export { parseDbError } from "./errors.js";
|
|
10
|
+
export { mapRowToContract } from "./mapping.js";
|
|
11
|
+
export { AdapterError, AdapterNotFoundError, AdapterConstraintError, AdapterForeignKeyViolationError, AdapterUniqueViolationError, AdapterNotNullViolationError, AdapterCheckViolationError, AdapterMappingError, AdapterUnsupportedError, AdapterConnectionError, AdapterTransactionError, AdapterTimeoutError, isAdapterError, } from "@justwant/db/errors";
|
|
12
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/drizzle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,YAAY,EAAuB,MAAM,mBAAmB,CAAC;AACtE,OAAO,EAAE,eAAe,EAA0B,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAWhD,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,+BAA+B,EAC/B,2BAA2B,EAC3B,4BAA4B,EAC5B,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,mBAAmB,EACnB,cAAc,GACf,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe mapping between Drizzle table columns and adapter contract.
|
|
3
|
+
*
|
|
4
|
+
* @see docs/03-mapping.md
|
|
5
|
+
*/
|
|
6
|
+
import type { AnyContract } from "@justwant/contract";
|
|
7
|
+
import type { Table } from "drizzle-orm";
|
|
8
|
+
import type { ColData } from "./drizzle-types.js";
|
|
9
|
+
/** Columns that can provide data of type T (exact or nullable). */
|
|
10
|
+
type ColsFor<TTable extends Table, T> = {
|
|
11
|
+
[K in keyof TTable["_"]["columns"]]: ColData<TTable["_"]["columns"][K]> extends T ? TTable["_"]["columns"][K] : ColData<TTable["_"]["columns"][K]> extends T | null ? TTable["_"]["columns"][K] : never;
|
|
12
|
+
}[keyof TTable["_"]["columns"]];
|
|
13
|
+
/** Required fields: each contract key maps to a compatible column. */
|
|
14
|
+
export type RequiredMapping<TTable extends Table, TContract extends AnyContract> = {
|
|
15
|
+
[K in keyof TContract as TContract[K]["_required"] extends true ? K : never]: ColsFor<TTable, TContract[K]["_type"]>;
|
|
16
|
+
};
|
|
17
|
+
/** Optional fields: each contract key maps to a compatible column. */
|
|
18
|
+
export type OptionalMapping<TTable extends Table, TContract extends AnyContract> = {
|
|
19
|
+
[K in keyof TContract as TContract[K]["_required"] extends false ? K : never]?: ColsFor<TTable, TContract[K]["_type"]>;
|
|
20
|
+
};
|
|
21
|
+
/** Full mapping: required + optional. */
|
|
22
|
+
export type MappingFor<TTable extends Table, TContract extends AnyContract> = RequiredMapping<TTable, TContract> & OptionalMapping<TTable, TContract>;
|
|
23
|
+
/** Alias for MappingFor. */
|
|
24
|
+
export type TableMapping<TTable extends Table, TContract extends AnyContract> = MappingFor<TTable, TContract>;
|
|
25
|
+
/** Column-like with a name for row lookup. */
|
|
26
|
+
interface ColumnLike {
|
|
27
|
+
name: string;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Maps a DB row to contract shape. Converts null to undefined for optional fields.
|
|
31
|
+
*/
|
|
32
|
+
export declare function mapRowToContract<T>(row: Record<string, unknown>, mapping: Record<string, ColumnLike>, contract: AnyContract): T;
|
|
33
|
+
export {};
|
|
34
|
+
//# sourceMappingURL=mapping.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.d.ts","sourceRoot":"","sources":["../../src/drizzle/mapping.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElD,mEAAmE;AACnE,KAAK,OAAO,CAAC,MAAM,SAAS,KAAK,EAAE,CAAC,IAAI;KACrC,CAAC,IAAI,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAC7E,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GACzB,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,GACjD,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GACzB,KAAK;CACZ,CAAC,MAAM,MAAM,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;AAEhC,sEAAsE;AACtE,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,KAAK,EAAE,SAAS,SAAS,WAAW,IAAI;KAChF,CAAC,IAAI,MAAM,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,OAAO,CACnF,MAAM,EACN,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CACtB;CACF,CAAC;AAEF,sEAAsE;AACtE,MAAM,MAAM,eAAe,CAAC,MAAM,SAAS,KAAK,EAAE,SAAS,SAAS,WAAW,IAAI;KAChF,CAAC,IAAI,MAAM,SAAS,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,KAAK,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,OAAO,CACrF,MAAM,EACN,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CACtB;CACF,CAAC;AAEF,yCAAyC;AACzC,MAAM,MAAM,UAAU,CAAC,MAAM,SAAS,KAAK,EAAE,SAAS,SAAS,WAAW,IAAI,eAAe,CAC3F,MAAM,EACN,SAAS,CACV,GACC,eAAe,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;AAErC,4BAA4B;AAC5B,MAAM,MAAM,YAAY,CAAC,MAAM,SAAS,KAAK,EAAE,SAAS,SAAS,WAAW,IAAI,UAAU,CACxF,MAAM,EACN,SAAS,CACV,CAAC;AAEF,8CAA8C;AAC9C,UAAU,UAAU;IAClB,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC5B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,EACnC,QAAQ,EAAE,WAAW,GACpB,CAAC,CAaH"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type-safe mapping between Drizzle table columns and adapter contract.
|
|
3
|
+
*
|
|
4
|
+
* @see docs/03-mapping.md
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Maps a DB row to contract shape. Converts null to undefined for optional fields.
|
|
8
|
+
*/
|
|
9
|
+
export function mapRowToContract(row, mapping, contract) {
|
|
10
|
+
const result = {};
|
|
11
|
+
for (const [contractKey, col] of Object.entries(mapping)) {
|
|
12
|
+
const colName = col.name;
|
|
13
|
+
const value = row[colName];
|
|
14
|
+
const fieldDef = contract[contractKey];
|
|
15
|
+
if (fieldDef && !fieldDef._required && value === null) {
|
|
16
|
+
result[contractKey] = undefined;
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
result[contractKey] = value;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return result;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=mapping.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mapping.js","sourceRoot":"","sources":["../../src/drizzle/mapping.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiDH;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,GAA4B,EAC5B,OAAmC,EACnC,QAAqB;IAErB,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QACzD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;QAC3B,MAAM,QAAQ,GAAG,QAAQ,CAAC,WAAoC,CAAC,CAAC;QAChE,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,SAAS,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;YACtD,MAAM,CAAC,WAAW,CAAC,GAAG,SAAS,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;QAC9B,CAAC;IACH,CAAC;IACD,OAAO,MAAW,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Drizzle adapter types.
|
|
3
|
+
* Supports pg, mysql, sqlite via the same contract.
|
|
4
|
+
*/
|
|
5
|
+
import type { AnyContract } from "@justwant/contract";
|
|
6
|
+
import type { MappedTable, MappedTableInternal } from "@justwant/db";
|
|
7
|
+
import type { Table } from "drizzle-orm";
|
|
8
|
+
import type { MappingFor } from "./mapping.js";
|
|
9
|
+
/**
|
|
10
|
+
* Drizzle database client. Supports:
|
|
11
|
+
* - PostgreSQL: drizzle-orm/node-pg
|
|
12
|
+
* - MySQL: drizzle-orm/mysql2
|
|
13
|
+
* - SQLite: drizzle-orm/better-sqlite3
|
|
14
|
+
*
|
|
15
|
+
* Edge runtimes: NeonDatabase, VercelPostgres, TursoDatabase also compatible.
|
|
16
|
+
*/
|
|
17
|
+
/** Any Drizzle database instance (pg, mysql, sqlite). */
|
|
18
|
+
export type DrizzleClient = any;
|
|
19
|
+
export interface DrizzleMappedTableInternal<TTable extends Table, TContract extends AnyContract> extends MappedTableInternal<TContract> {
|
|
20
|
+
readonly source: TTable;
|
|
21
|
+
readonly mapping: MappingFor<TTable, TContract>;
|
|
22
|
+
readonly client: DrizzleClient;
|
|
23
|
+
readonly tableName: string;
|
|
24
|
+
}
|
|
25
|
+
export interface DrizzleMappedTable<TTable extends Table, TContract extends AnyContract> extends MappedTable<TContract> {
|
|
26
|
+
readonly _internal: DrizzleMappedTableInternal<TTable, TContract>;
|
|
27
|
+
}
|
|
28
|
+
export interface DrizzleAdapter {
|
|
29
|
+
readonly dialect: "pg" | "mysql" | "sqlite";
|
|
30
|
+
readonly client: DrizzleClient;
|
|
31
|
+
defineTable<TTable extends Table, TContract extends AnyContract>(source: TTable, contract: TContract, mapping: MappingFor<TTable, TContract>, options?: DefineMappedTableOptions): DrizzleMappedTable<TTable, TContract>;
|
|
32
|
+
transaction<T>(fn: (tx: DrizzleAdapter) => Promise<T>): Promise<T>;
|
|
33
|
+
}
|
|
34
|
+
export interface DefineMappedTableOptions {
|
|
35
|
+
/** Column name for soft delete. Default 'deletedAt'. Set to null to disable. */
|
|
36
|
+
softDeleteColumn?: string | null;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/drizzle/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAiB,MAAM,oBAAoB,CAAC;AACrE,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE/C;;;;;;;GAOG;AACH,yDAAyD;AAEzD,MAAM,MAAM,aAAa,GAAG,GAAG,CAAC;AAEhC,MAAM,WAAW,0BAA0B,CAAC,MAAM,SAAS,KAAK,EAAE,SAAS,SAAS,WAAW,CAC7F,SAAQ,mBAAmB,CAAC,SAAS,CAAC;IACtC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAChD,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,kBAAkB,CAAC,MAAM,SAAS,KAAK,EAAE,SAAS,SAAS,WAAW,CACrF,SAAQ,WAAW,CAAC,SAAS,CAAC;IAC9B,QAAQ,CAAC,SAAS,EAAE,0BAA0B,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACnE;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,OAAO,EAAE,IAAI,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAE/B,WAAW,CAAC,MAAM,SAAS,KAAK,EAAE,SAAS,SAAS,WAAW,EAC7D,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,SAAS,EACnB,OAAO,EAAE,UAAU,CAAC,MAAM,EAAE,SAAS,CAAC,EACtC,OAAO,CAAC,EAAE,wBAAwB,GACjC,kBAAkB,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAEzC,WAAW,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;CACpE;AAED,MAAM,WAAW,wBAAwB;IACvC,gFAAgF;IAChF,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/drizzle/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upsert (ON CONFLICT DO UPDATE).
|
|
3
|
+
* Phase 1: PostgreSQL only.
|
|
4
|
+
*/
|
|
5
|
+
import type { DrizzleClient } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Upsert a row. PostgreSQL only (ON CONFLICT DO UPDATE).
|
|
8
|
+
* Throws AdapterUnsupportedError for MySQL/SQLite.
|
|
9
|
+
*/
|
|
10
|
+
export declare function upsert<TTable, TData>(db: DrizzleClient, table: TTable, data: TData, conflictColumns: string[]): Promise<unknown>;
|
|
11
|
+
//# sourceMappingURL=upsert.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsert.d.ts","sourceRoot":"","sources":["../../src/drizzle/upsert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,wBAAsB,MAAM,CAAC,MAAM,EAAE,KAAK,EACxC,EAAE,EAAE,aAAa,EACjB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,KAAK,EACX,eAAe,EAAE,MAAM,EAAE,GACxB,OAAO,CAAC,OAAO,CAAC,CAyBlB"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Upsert (ON CONFLICT DO UPDATE).
|
|
3
|
+
* Phase 1: PostgreSQL only.
|
|
4
|
+
*/
|
|
5
|
+
import { AdapterUnsupportedError } from "@justwant/db/errors";
|
|
6
|
+
/**
|
|
7
|
+
* Upsert a row. PostgreSQL only (ON CONFLICT DO UPDATE).
|
|
8
|
+
* Throws AdapterUnsupportedError for MySQL/SQLite.
|
|
9
|
+
*/
|
|
10
|
+
export async function upsert(db, table, data, conflictColumns) {
|
|
11
|
+
const dialect = db.dialect;
|
|
12
|
+
if (dialect?.name !== "pg" && dialect?.name !== "postgresql") {
|
|
13
|
+
throw new AdapterUnsupportedError("upsert is only supported on PostgreSQL", {
|
|
14
|
+
operation: "upsert",
|
|
15
|
+
dialect: dialect?.name ?? "unknown",
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
const pgDb = db;
|
|
19
|
+
return pgDb
|
|
20
|
+
.insert(table)
|
|
21
|
+
.values(data)
|
|
22
|
+
.onConflictDoUpdate({
|
|
23
|
+
target: conflictColumns,
|
|
24
|
+
set: data,
|
|
25
|
+
})
|
|
26
|
+
.returning();
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=upsert.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"upsert.js","sourceRoot":"","sources":["../../src/drizzle/upsert.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAG9D;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,EAAiB,EACjB,KAAa,EACb,IAAW,EACX,eAAyB;IAEzB,MAAM,OAAO,GAAI,EAAyC,CAAC,OAE9C,CAAC;IACd,IAAI,OAAO,EAAE,IAAI,KAAK,IAAI,IAAI,OAAO,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;QAC7D,MAAM,IAAI,uBAAuB,CAAC,wCAAwC,EAAE;YAC1E,SAAS,EAAE,QAAQ;YACnB,OAAO,EAAE,OAAO,EAAE,IAAI,IAAI,SAAS;SACpC,CAAC,CAAC;IACL,CAAC;IACD,MAAM,IAAI,GAAG,EAMZ,CAAC;IACF,OAAO,IAAI;SACR,MAAM,CAAC,KAAK,CAAC;SACb,MAAM,CAAC,IAAI,CAAC;SACZ,kBAAkB,CAAC;QAClB,MAAM,EAAE,eAAwB;QAChC,GAAG,EAAE,IAAa;KACV,CAAC;SACV,SAAS,EAAE,CAAC;AACjB,CAAC"}
|
package/dist/errors.d.ts
ADDED
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized error hierarchy for all adapters.
|
|
3
|
+
* Agnostic of the underlying implementation (Drizzle, Prisma, custom).
|
|
4
|
+
*
|
|
5
|
+
* @see docs/CONTRACT.md for usage and error codes.
|
|
6
|
+
*/
|
|
7
|
+
export type ConstraintType = "FOREIGN_KEY" | "UNIQUE" | "NOT_NULL" | "CHECK" | "OTHER";
|
|
8
|
+
export declare class AdapterError extends Error {
|
|
9
|
+
readonly code: string;
|
|
10
|
+
readonly metadata?: Record<string, unknown> | undefined;
|
|
11
|
+
constructor(message: string, code: string, metadata?: Record<string, unknown> | undefined);
|
|
12
|
+
}
|
|
13
|
+
export declare class AdapterNotFoundError extends AdapterError {
|
|
14
|
+
constructor(message: string, metadata?: {
|
|
15
|
+
table?: string;
|
|
16
|
+
id?: string;
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
export declare class AdapterConstraintError extends AdapterError {
|
|
20
|
+
readonly constraintType: ConstraintType;
|
|
21
|
+
constructor(message: string, constraintType: ConstraintType, metadata?: {
|
|
22
|
+
table?: string;
|
|
23
|
+
column?: string;
|
|
24
|
+
constraint?: string;
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
export declare class AdapterForeignKeyViolationError extends AdapterConstraintError {
|
|
28
|
+
constructor(message: string, metadata?: {
|
|
29
|
+
table?: string;
|
|
30
|
+
column?: string;
|
|
31
|
+
referencedTable?: string;
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
export declare class AdapterUniqueViolationError extends AdapterConstraintError {
|
|
35
|
+
constructor(message: string, metadata?: {
|
|
36
|
+
table?: string;
|
|
37
|
+
column?: string;
|
|
38
|
+
constraint?: string;
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
export declare class AdapterNotNullViolationError extends AdapterConstraintError {
|
|
42
|
+
constructor(message: string, metadata?: {
|
|
43
|
+
table?: string;
|
|
44
|
+
column?: string;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
export declare class AdapterCheckViolationError extends AdapterConstraintError {
|
|
48
|
+
constructor(message: string, metadata?: {
|
|
49
|
+
table?: string;
|
|
50
|
+
constraint?: string;
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
export declare class AdapterMappingError extends AdapterError {
|
|
54
|
+
constructor(message: string, metadata?: {
|
|
55
|
+
field?: string;
|
|
56
|
+
column?: string;
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
export declare class AdapterUnsupportedError extends AdapterError {
|
|
60
|
+
constructor(message: string, metadata?: {
|
|
61
|
+
operation?: string;
|
|
62
|
+
dialect?: string;
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
export declare class AdapterConnectionError extends AdapterError {
|
|
66
|
+
constructor(message: string, metadata?: Record<string, unknown>);
|
|
67
|
+
}
|
|
68
|
+
export declare class AdapterTransactionError extends AdapterError {
|
|
69
|
+
constructor(message: string, metadata?: Record<string, unknown>);
|
|
70
|
+
}
|
|
71
|
+
export declare class AdapterTimeoutError extends AdapterError {
|
|
72
|
+
constructor(message: string, metadata?: Record<string, unknown>);
|
|
73
|
+
}
|
|
74
|
+
export declare function isAdapterError(err: unknown): err is AdapterError;
|
|
75
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,QAAQ,GAAG,UAAU,GAAG,OAAO,GAAG,OAAO,CAAC;AAEvF,qBAAa,YAAa,SAAQ,KAAK;aAGnB,IAAI,EAAE,MAAM;aACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;gBAFlD,OAAO,EAAE,MAAM,EACC,IAAI,EAAE,MAAM,EACZ,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,YAAA;CAMrD;AAED,qBAAa,oBAAqB,SAAQ,YAAY;gBAElD,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAA;KAAE;CAM7C;AAED,qBAAa,sBAAuB,SAAQ,YAAY;aAGpC,cAAc,EAAE,cAAc;gBAD9C,OAAO,EAAE,MAAM,EACC,cAAc,EAAE,cAAc,EAC9C,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAMtE;AAED,qBAAa,+BAAgC,SAAQ,sBAAsB;gBAEvE,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,eAAe,CAAC,EAAE,MAAM,CAAA;KAAE;CAM3E;AAED,qBAAa,2BAA4B,SAAQ,sBAAsB;gBAEnE,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAMtE;AAED,qBAAa,4BAA6B,SAAQ,sBAAsB;gBAEpE,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAMjD;AAED,qBAAa,0BAA2B,SAAQ,sBAAsB;gBAElE,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE;CAMrD;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBAEjD,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE;CAMjD;AAED,qBAAa,uBAAwB,SAAQ,YAAY;gBAErD,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAMtD;AAED,qBAAa,sBAAuB,SAAQ,YAAY;gBAEpD,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMrC;AAED,qBAAa,uBAAwB,SAAQ,YAAY;gBAErD,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMrC;AAED,qBAAa,mBAAoB,SAAQ,YAAY;gBAEjD,OAAO,EAAE,MAAM,EACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;CAMrC;AAED,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,YAAY,CAEhE"}
|
package/dist/errors.js
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Normalized error hierarchy for all adapters.
|
|
3
|
+
* Agnostic of the underlying implementation (Drizzle, Prisma, custom).
|
|
4
|
+
*
|
|
5
|
+
* @see docs/CONTRACT.md for usage and error codes.
|
|
6
|
+
*/
|
|
7
|
+
export class AdapterError extends Error {
|
|
8
|
+
code;
|
|
9
|
+
metadata;
|
|
10
|
+
constructor(message, code, metadata) {
|
|
11
|
+
super(message);
|
|
12
|
+
this.code = code;
|
|
13
|
+
this.metadata = metadata;
|
|
14
|
+
this.name = "AdapterError";
|
|
15
|
+
Object.setPrototypeOf(this, AdapterError.prototype);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
export class AdapterNotFoundError extends AdapterError {
|
|
19
|
+
constructor(message, metadata) {
|
|
20
|
+
super(message, "NOT_FOUND", metadata);
|
|
21
|
+
this.name = "AdapterNotFoundError";
|
|
22
|
+
Object.setPrototypeOf(this, AdapterNotFoundError.prototype);
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
export class AdapterConstraintError extends AdapterError {
|
|
26
|
+
constraintType;
|
|
27
|
+
constructor(message, constraintType, metadata) {
|
|
28
|
+
super(message, constraintType, metadata);
|
|
29
|
+
this.constraintType = constraintType;
|
|
30
|
+
this.name = "AdapterConstraintError";
|
|
31
|
+
Object.setPrototypeOf(this, AdapterConstraintError.prototype);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
export class AdapterForeignKeyViolationError extends AdapterConstraintError {
|
|
35
|
+
constructor(message, metadata) {
|
|
36
|
+
super(message, "FOREIGN_KEY", metadata);
|
|
37
|
+
this.name = "AdapterForeignKeyViolationError";
|
|
38
|
+
Object.setPrototypeOf(this, AdapterForeignKeyViolationError.prototype);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
export class AdapterUniqueViolationError extends AdapterConstraintError {
|
|
42
|
+
constructor(message, metadata) {
|
|
43
|
+
super(message, "UNIQUE", metadata);
|
|
44
|
+
this.name = "AdapterUniqueViolationError";
|
|
45
|
+
Object.setPrototypeOf(this, AdapterUniqueViolationError.prototype);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
export class AdapterNotNullViolationError extends AdapterConstraintError {
|
|
49
|
+
constructor(message, metadata) {
|
|
50
|
+
super(message, "NOT_NULL", metadata);
|
|
51
|
+
this.name = "AdapterNotNullViolationError";
|
|
52
|
+
Object.setPrototypeOf(this, AdapterNotNullViolationError.prototype);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
export class AdapterCheckViolationError extends AdapterConstraintError {
|
|
56
|
+
constructor(message, metadata) {
|
|
57
|
+
super(message, "CHECK", metadata);
|
|
58
|
+
this.name = "AdapterCheckViolationError";
|
|
59
|
+
Object.setPrototypeOf(this, AdapterCheckViolationError.prototype);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class AdapterMappingError extends AdapterError {
|
|
63
|
+
constructor(message, metadata) {
|
|
64
|
+
super(message, "MAPPING_ERROR", metadata);
|
|
65
|
+
this.name = "AdapterMappingError";
|
|
66
|
+
Object.setPrototypeOf(this, AdapterMappingError.prototype);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
export class AdapterUnsupportedError extends AdapterError {
|
|
70
|
+
constructor(message, metadata) {
|
|
71
|
+
super(message, "UNSUPPORTED", metadata);
|
|
72
|
+
this.name = "AdapterUnsupportedError";
|
|
73
|
+
Object.setPrototypeOf(this, AdapterUnsupportedError.prototype);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
export class AdapterConnectionError extends AdapterError {
|
|
77
|
+
constructor(message, metadata) {
|
|
78
|
+
super(message, "CONNECTION", metadata);
|
|
79
|
+
this.name = "AdapterConnectionError";
|
|
80
|
+
Object.setPrototypeOf(this, AdapterConnectionError.prototype);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export class AdapterTransactionError extends AdapterError {
|
|
84
|
+
constructor(message, metadata) {
|
|
85
|
+
super(message, "TRANSACTION", metadata);
|
|
86
|
+
this.name = "AdapterTransactionError";
|
|
87
|
+
Object.setPrototypeOf(this, AdapterTransactionError.prototype);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export class AdapterTimeoutError extends AdapterError {
|
|
91
|
+
constructor(message, metadata) {
|
|
92
|
+
super(message, "TIMEOUT", metadata);
|
|
93
|
+
this.name = "AdapterTimeoutError";
|
|
94
|
+
Object.setPrototypeOf(this, AdapterTimeoutError.prototype);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
export function isAdapterError(err) {
|
|
98
|
+
return err instanceof AdapterError;
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Build Prisma where clause from Partial<InferContract>.
|
|
3
|
+
* Supports both primitive values and Prisma filter objects.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Builds a Prisma where object from a partial contract.
|
|
7
|
+
* Each key-value pair becomes { [fieldName]: value }.
|
|
8
|
+
*
|
|
9
|
+
* Supports Prisma filter objects for advanced queries:
|
|
10
|
+
* - { email: { contains: "x" } }
|
|
11
|
+
* - { id: { in: ["a", "b"] } }
|
|
12
|
+
* - { name: { startsWith: "A" } }
|
|
13
|
+
* - { age: { gte: 18, lt: 65 } }
|
|
14
|
+
*/
|
|
15
|
+
export declare function buildPrismaWhere(mapping: Record<string, {
|
|
16
|
+
name: string;
|
|
17
|
+
}>, where: Record<string, unknown>): Record<string, unknown>;
|
|
18
|
+
//# sourceMappingURL=buildWhere.d.ts.map
|