@payloadcms/drizzle 3.50.0-internal.f87db1c → 3.51.0-canary.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/dist/createGlobalVersion.d.ts.map +1 -1
- package/dist/createGlobalVersion.js.map +1 -1
- package/dist/createVersion.d.ts.map +1 -1
- package/dist/createVersion.js.map +1 -1
- package/dist/find/traverseFields.d.ts.map +1 -1
- package/dist/find/traverseFields.js +48 -6
- package/dist/find/traverseFields.js.map +1 -1
- package/dist/findOne.d.ts +1 -1
- package/dist/findOne.d.ts.map +1 -1
- package/dist/findOne.js.map +1 -1
- package/dist/postgres/createJSONQuery/index.d.ts.map +1 -1
- package/dist/postgres/createJSONQuery/index.js +4 -3
- package/dist/postgres/createJSONQuery/index.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/updateGlobalVersion.d.ts.map +1 -1
- package/dist/updateGlobalVersion.js.map +1 -1
- package/dist/updateJobs.d.ts.map +1 -1
- package/dist/updateJobs.js +22 -1
- package/dist/updateJobs.js.map +1 -1
- package/dist/updateVersion.d.ts.map +1 -1
- package/dist/updateVersion.js.map +1 -1
- package/dist/utilities/buildCreateMigration.d.ts +1 -2
- package/dist/utilities/buildCreateMigration.d.ts.map +1 -1
- package/dist/utilities/buildCreateMigration.js +6 -8
- package/dist/utilities/buildCreateMigration.js.map +1 -1
- package/package.json +3 -8
- package/dist/exports/sqlite.d.ts +0 -13
- package/dist/exports/sqlite.d.ts.map +0 -1
- package/dist/exports/sqlite.js +0 -14
- package/dist/exports/sqlite.js.map +0 -1
- package/dist/sqlite/columnToCodeConverter.d.ts +0 -3
- package/dist/sqlite/columnToCodeConverter.d.ts.map +0 -1
- package/dist/sqlite/columnToCodeConverter.js +0 -107
- package/dist/sqlite/columnToCodeConverter.js.map +0 -1
- package/dist/sqlite/countDistinct.d.ts +0 -3
- package/dist/sqlite/countDistinct.d.ts.map +0 -1
- package/dist/sqlite/countDistinct.js +0 -24
- package/dist/sqlite/countDistinct.js.map +0 -1
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.d.ts +0 -2
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.d.ts.map +0 -1
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js +0 -12
- package/dist/sqlite/createJSONQuery/convertPathToJSONTraversal.js.map +0 -1
- package/dist/sqlite/createJSONQuery/index.d.ts +0 -3
- package/dist/sqlite/createJSONQuery/index.d.ts.map +0 -1
- package/dist/sqlite/createJSONQuery/index.js +0 -60
- package/dist/sqlite/createJSONQuery/index.js.map +0 -1
- package/dist/sqlite/defaultSnapshot.d.ts +0 -3
- package/dist/sqlite/defaultSnapshot.d.ts.map +0 -1
- package/dist/sqlite/defaultSnapshot.js +0 -15
- package/dist/sqlite/defaultSnapshot.js.map +0 -1
- package/dist/sqlite/deleteWhere.d.ts +0 -3
- package/dist/sqlite/deleteWhere.d.ts.map +0 -1
- package/dist/sqlite/deleteWhere.js +0 -6
- package/dist/sqlite/deleteWhere.js.map +0 -1
- package/dist/sqlite/dropDatabase.d.ts +0 -3
- package/dist/sqlite/dropDatabase.d.ts.map +0 -1
- package/dist/sqlite/dropDatabase.js +0 -19
- package/dist/sqlite/dropDatabase.js.map +0 -1
- package/dist/sqlite/execute.d.ts +0 -3
- package/dist/sqlite/execute.d.ts.map +0 -1
- package/dist/sqlite/execute.js +0 -13
- package/dist/sqlite/execute.js.map +0 -1
- package/dist/sqlite/init.d.ts +0 -3
- package/dist/sqlite/init.d.ts.map +0 -1
- package/dist/sqlite/init.js +0 -42
- package/dist/sqlite/init.js.map +0 -1
- package/dist/sqlite/insert.d.ts +0 -3
- package/dist/sqlite/insert.d.ts.map +0 -1
- package/dist/sqlite/insert.js +0 -8
- package/dist/sqlite/insert.js.map +0 -1
- package/dist/sqlite/requireDrizzleKit.d.ts +0 -3
- package/dist/sqlite/requireDrizzleKit.d.ts.map +0 -1
- package/dist/sqlite/requireDrizzleKit.js +0 -12
- package/dist/sqlite/requireDrizzleKit.js.map +0 -1
- package/dist/sqlite/schema/buildDrizzleTable.d.ts +0 -3
- package/dist/sqlite/schema/buildDrizzleTable.d.ts.map +0 -1
- package/dist/sqlite/schema/buildDrizzleTable.js +0 -143
- package/dist/sqlite/schema/buildDrizzleTable.js.map +0 -1
- package/dist/sqlite/schema/setColumnID.d.ts +0 -3
- package/dist/sqlite/schema/setColumnID.d.ts.map +0 -1
- package/dist/sqlite/schema/setColumnID.js +0 -39
- package/dist/sqlite/schema/setColumnID.js.map +0 -1
- package/dist/sqlite/types.d.ts +0 -210
- package/dist/sqlite/types.d.ts.map +0 -1
- package/dist/sqlite/types.js +0 -3
- package/dist/sqlite/types.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateGlobalVersion.d.ts","sourceRoot":"","sources":["../src/updateGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,cAAc,EACpB,EACE,EAAE,EACF,MAAM,EACN,MAAM,EACN,GAAG,EACH,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,EAAE,QAAQ,GAChB,EAAE,uBAAuB,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"updateGlobalVersion.d.ts","sourceRoot":"","sources":["../src/updateGlobalVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EACf,uBAAuB,EACxB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,mBAAmB,CAAC,CAAC,SAAS,UAAU,EAC5D,IAAI,EAAE,cAAc,EACpB,EACE,EAAE,EACF,MAAM,EACN,MAAM,EACN,GAAG,EACH,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,EAAE,QAAQ,GAChB,EAAE,uBAAuB,CAAC,CAAC,CAAC,+BAyC9B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import type {\n SanitizedGlobalConfig,\n TypeWithID,\n TypeWithVersion,\n UpdateGlobalVersionArgs,\n} from 'payload'\n\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateGlobalVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n id,\n global,\n locale,\n req,\n returning,\n select,\n versionData,\n where: whereArg,\n }: UpdateGlobalVersionArgs<T>,\n)
|
|
1
|
+
{"version":3,"sources":["../src/updateGlobalVersion.ts"],"sourcesContent":["import type {\n SanitizedGlobalConfig,\n TypeWithID,\n TypeWithVersion,\n UpdateGlobalVersionArgs,\n} from 'payload'\n\nimport { buildVersionGlobalFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateGlobalVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n id,\n global,\n locale,\n req,\n returning,\n select,\n versionData,\n where: whereArg,\n }: UpdateGlobalVersionArgs<T>,\n) {\n const db = await getTransaction(this, req)\n const globalConfig: SanitizedGlobalConfig = this.payload.globals.config.find(\n ({ slug }) => slug === global,\n )\n const whereToUse = whereArg || { id: { equals: id } }\n\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(globalConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionGlobalFields(this.payload.config, globalConfig, true)\n\n const { where } = buildQuery({\n adapter: this,\n fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const result = await upsertRow<TypeWithVersion<T>>({\n id,\n adapter: this,\n data: versionData,\n db,\n fields,\n ignoreResult: returning === false,\n operation: 'update',\n req,\n select,\n tableName,\n where,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["buildVersionGlobalFields","toSnakeCase","buildQuery","upsertRow","getTransaction","updateGlobalVersion","id","global","locale","req","returning","select","versionData","where","whereArg","db","globalConfig","payload","globals","config","find","slug","whereToUse","equals","tableName","tableNameMap","get","versionsSuffix","fields","adapter","result","data","ignoreResult","operation"],"mappings":"AAOA,SAASA,wBAAwB,QAAQ,UAAS;AAClD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,eAAeC,oBAEpB,EACEC,EAAE,EACFC,MAAM,EACNC,MAAM,EACNC,GAAG,EACHC,SAAS,EACTC,MAAM,EACNC,WAAW,EACXC,OAAOC,QAAQ,EACY;IAE7B,MAAMC,KAAK,MAAMX,eAAe,IAAI,EAAEK;IACtC,MAAMO,eAAsC,IAAI,CAACC,OAAO,CAACC,OAAO,CAACC,MAAM,CAACC,IAAI,CAC1E,CAAC,EAAEC,IAAI,EAAE,GAAKA,SAASd;IAEzB,MAAMe,aAAaR,YAAY;QAAER,IAAI;YAAEiB,QAAQjB;QAAG;IAAE;IAEpD,MAAMkB,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEzB,YAAYe,aAAaK,IAAI,IAAI,IAAI,CAACM,cAAc,EAAE;IAG5D,MAAMC,SAAS5B,yBAAyB,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,cAAc;IAE3E,MAAM,EAAEH,KAAK,EAAE,GAAGX,WAAW;QAC3B2B,SAAS,IAAI;QACbD;QACApB;QACAgB;QACAX,OAAOS;IACT;IAEA,MAAMQ,SAAS,MAAM3B,UAA8B;QACjDG;QACAuB,SAAS,IAAI;QACbE,MAAMnB;QACNG;QACAa;QACAI,cAActB,cAAc;QAC5BuB,WAAW;QACXxB;QACAE;QACAa;QACAX;IACF;IAEA,IAAIH,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAOoB;AACT"}
|
package/dist/updateJobs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateJobs.d.ts","sourceRoot":"","sources":["../src/updateJobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;
|
|
1
|
+
{"version":3,"file":"updateJobs.d.ts","sourceRoot":"","sources":["../src/updateJobs.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAS,MAAM,SAAS,CAAA;AAWhD,eAAO,MAAM,UAAU,EAAE,UAkFxB,CAAA"}
|
package/dist/updateJobs.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import toSnakeCase from 'to-snake-case';
|
|
2
2
|
import { findMany } from './find/findMany.js';
|
|
3
3
|
import { upsertRow } from './upsertRow/index.js';
|
|
4
|
+
import { shouldUseOptimizedUpsertRow } from './upsertRow/shouldUseOptimizedUpsertRow.js';
|
|
4
5
|
import { getTransaction } from './utilities/getTransaction.js';
|
|
5
6
|
export const updateJobs = async function updateMany({ id, data, limit: limitArg, req, returning, sort: sortArg, where: whereArg }) {
|
|
6
7
|
if (!data?.log?.length) {
|
|
@@ -16,6 +17,26 @@ export const updateJobs = async function updateMany({ id, data, limit: limitArg,
|
|
|
16
17
|
const collection = this.payload.collections['payload-jobs'].config;
|
|
17
18
|
const tableName = this.tableNameMap.get(toSnakeCase(collection.slug));
|
|
18
19
|
const sort = sortArg !== undefined && sortArg !== null ? sortArg : collection.defaultSort;
|
|
20
|
+
const useOptimizedUpsertRow = shouldUseOptimizedUpsertRow({
|
|
21
|
+
data,
|
|
22
|
+
fields: collection.flattenedFields
|
|
23
|
+
});
|
|
24
|
+
if (useOptimizedUpsertRow && id) {
|
|
25
|
+
const result = await upsertRow({
|
|
26
|
+
id,
|
|
27
|
+
adapter: this,
|
|
28
|
+
data,
|
|
29
|
+
db,
|
|
30
|
+
fields: collection.flattenedFields,
|
|
31
|
+
ignoreResult: returning === false,
|
|
32
|
+
operation: 'update',
|
|
33
|
+
req,
|
|
34
|
+
tableName
|
|
35
|
+
});
|
|
36
|
+
return returning === false ? null : [
|
|
37
|
+
result
|
|
38
|
+
];
|
|
39
|
+
}
|
|
19
40
|
const jobs = await findMany({
|
|
20
41
|
adapter: this,
|
|
21
42
|
collectionSlug: 'payload-jobs',
|
|
@@ -33,7 +54,7 @@ export const updateJobs = async function updateMany({ id, data, limit: limitArg,
|
|
|
33
54
|
const results = [];
|
|
34
55
|
// TODO: We need to batch this to reduce the amount of db calls. This can get very slow if we are updating a lot of rows.
|
|
35
56
|
for (const job of jobs.docs){
|
|
36
|
-
const updateData = {
|
|
57
|
+
const updateData = useOptimizedUpsertRow ? data : {
|
|
37
58
|
...job,
|
|
38
59
|
...data
|
|
39
60
|
};
|
package/dist/updateJobs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/updateJobs.ts"],"sourcesContent":["import type { UpdateJobs, Where } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport const updateJobs: UpdateJobs = async function updateMany(\n this: DrizzleAdapter,\n { id, data, limit: limitArg, req, returning, sort: sortArg, where: whereArg },\n) {\n if (!(data?.log as object[])?.length) {\n delete data.log\n }\n const whereToUse: Where = id ? { id: { equals: id } } : whereArg\n const limit = id ? 1 : limitArg\n\n const db = await getTransaction(this, req)\n const collection = this.payload.collections['payload-jobs'].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collection.defaultSort\n\n const jobs = await findMany({\n adapter: this,\n collectionSlug: 'payload-jobs',\n fields: collection.flattenedFields,\n limit: id ? 1 : limit,\n pagination: false,\n req,\n sort,\n tableName,\n where: whereToUse,\n })\n if (!jobs.docs.length) {\n return []\n }\n\n const results = []\n\n // TODO: We need to batch this to reduce the amount of db calls. This can get very slow if we are updating a lot of rows.\n for (const job of jobs.docs) {\n const updateData = {\n
|
|
1
|
+
{"version":3,"sources":["../src/updateJobs.ts"],"sourcesContent":["import type { UpdateJobs, Where } from 'payload'\n\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { findMany } from './find/findMany.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { shouldUseOptimizedUpsertRow } from './upsertRow/shouldUseOptimizedUpsertRow.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport const updateJobs: UpdateJobs = async function updateMany(\n this: DrizzleAdapter,\n { id, data, limit: limitArg, req, returning, sort: sortArg, where: whereArg },\n) {\n if (!(data?.log as object[])?.length) {\n delete data.log\n }\n const whereToUse: Where = id ? { id: { equals: id } } : whereArg\n const limit = id ? 1 : limitArg\n\n const db = await getTransaction(this, req)\n const collection = this.payload.collections['payload-jobs'].config\n const tableName = this.tableNameMap.get(toSnakeCase(collection.slug))\n const sort = sortArg !== undefined && sortArg !== null ? sortArg : collection.defaultSort\n\n const useOptimizedUpsertRow = shouldUseOptimizedUpsertRow({\n data,\n fields: collection.flattenedFields,\n })\n\n if (useOptimizedUpsertRow && id) {\n const result = await upsertRow({\n id,\n adapter: this,\n data,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n operation: 'update',\n req,\n tableName,\n })\n\n return returning === false ? null : [result]\n }\n\n const jobs = await findMany({\n adapter: this,\n collectionSlug: 'payload-jobs',\n fields: collection.flattenedFields,\n limit: id ? 1 : limit,\n pagination: false,\n req,\n sort,\n tableName,\n where: whereToUse,\n })\n if (!jobs.docs.length) {\n return []\n }\n\n const results = []\n\n // TODO: We need to batch this to reduce the amount of db calls. This can get very slow if we are updating a lot of rows.\n for (const job of jobs.docs) {\n const updateData = useOptimizedUpsertRow\n ? data\n : {\n ...job,\n ...data,\n }\n\n const result = await upsertRow({\n id: job.id,\n adapter: this,\n data: updateData,\n db,\n fields: collection.flattenedFields,\n ignoreResult: returning === false,\n operation: 'update',\n req,\n tableName,\n })\n\n results.push(result)\n }\n\n if (returning === false) {\n return null\n }\n\n return results\n}\n"],"names":["toSnakeCase","findMany","upsertRow","shouldUseOptimizedUpsertRow","getTransaction","updateJobs","updateMany","id","data","limit","limitArg","req","returning","sort","sortArg","where","whereArg","log","length","whereToUse","equals","db","collection","payload","collections","config","tableName","tableNameMap","get","slug","undefined","defaultSort","useOptimizedUpsertRow","fields","flattenedFields","result","adapter","ignoreResult","operation","jobs","collectionSlug","pagination","docs","results","job","updateData","push"],"mappings":"AAEA,OAAOA,iBAAiB,gBAAe;AAIvC,SAASC,QAAQ,QAAQ,qBAAoB;AAC7C,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,2BAA2B,QAAQ,6CAA4C;AACxF,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,MAAMC,aAAyB,eAAeC,WAEnD,EAAEC,EAAE,EAAEC,IAAI,EAAEC,OAAOC,QAAQ,EAAEC,GAAG,EAAEC,SAAS,EAAEC,MAAMC,OAAO,EAAEC,OAAOC,QAAQ,EAAE;IAE7E,IAAI,CAAER,MAAMS,KAAkBC,QAAQ;QACpC,OAAOV,KAAKS,GAAG;IACjB;IACA,MAAME,aAAoBZ,KAAK;QAAEA,IAAI;YAAEa,QAAQb;QAAG;IAAE,IAAIS;IACxD,MAAMP,QAAQF,KAAK,IAAIG;IAEvB,MAAMW,KAAK,MAAMjB,eAAe,IAAI,EAAEO;IACtC,MAAMW,aAAa,IAAI,CAACC,OAAO,CAACC,WAAW,CAAC,eAAe,CAACC,MAAM;IAClE,MAAMC,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CAAC5B,YAAYsB,WAAWO,IAAI;IACnE,MAAMhB,OAAOC,YAAYgB,aAAahB,YAAY,OAAOA,UAAUQ,WAAWS,WAAW;IAEzF,MAAMC,wBAAwB7B,4BAA4B;QACxDK;QACAyB,QAAQX,WAAWY,eAAe;IACpC;IAEA,IAAIF,yBAAyBzB,IAAI;QAC/B,MAAM4B,SAAS,MAAMjC,UAAU;YAC7BK;YACA6B,SAAS,IAAI;YACb5B;YACAa;YACAY,QAAQX,WAAWY,eAAe;YAClCG,cAAczB,cAAc;YAC5B0B,WAAW;YACX3B;YACAe;QACF;QAEA,OAAOd,cAAc,QAAQ,OAAO;YAACuB;SAAO;IAC9C;IAEA,MAAMI,OAAO,MAAMtC,SAAS;QAC1BmC,SAAS,IAAI;QACbI,gBAAgB;QAChBP,QAAQX,WAAWY,eAAe;QAClCzB,OAAOF,KAAK,IAAIE;QAChBgC,YAAY;QACZ9B;QACAE;QACAa;QACAX,OAAOI;IACT;IACA,IAAI,CAACoB,KAAKG,IAAI,CAACxB,MAAM,EAAE;QACrB,OAAO,EAAE;IACX;IAEA,MAAMyB,UAAU,EAAE;IAElB,yHAAyH;IACzH,KAAK,MAAMC,OAAOL,KAAKG,IAAI,CAAE;QAC3B,MAAMG,aAAab,wBACfxB,OACA;YACE,GAAGoC,GAAG;YACN,GAAGpC,IAAI;QACT;QAEJ,MAAM2B,SAAS,MAAMjC,UAAU;YAC7BK,IAAIqC,IAAIrC,EAAE;YACV6B,SAAS,IAAI;YACb5B,MAAMqC;YACNxB;YACAY,QAAQX,WAAWY,eAAe;YAClCG,cAAczB,cAAc;YAC5B0B,WAAW;YACX3B;YACAe;QACF;QAEAiB,QAAQG,IAAI,CAACX;IACf;IAEA,IAAIvB,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAO+B;AACT,EAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,aAAa,CAAC,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,cAAc,EACpB,EACE,EAAE,EACF,UAAU,EACV,MAAM,EACN,GAAG,EACH,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,EAAE,QAAQ,GAChB,EAAE,iBAAiB,CAAC,CAAC,CAAC
|
|
1
|
+
{"version":3,"file":"updateVersion.d.ts","sourceRoot":"","sources":["../src/updateVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,UAAU,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,SAAS,CAAA;AAKhB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAMhD,wBAAsB,aAAa,CAAC,CAAC,SAAS,UAAU,EACtD,IAAI,EAAE,cAAc,EACpB,EACE,EAAE,EACF,UAAU,EACV,MAAM,EACN,GAAG,EACH,SAAS,EACT,MAAM,EACN,WAAW,EACX,KAAK,EAAE,QAAQ,GAChB,EAAE,iBAAiB,CAAC,CAAC,CAAC,+BAuCxB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import type {\n SanitizedCollectionConfig,\n TypeWithID,\n TypeWithVersion,\n UpdateVersionArgs,\n} from 'payload'\n\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n id,\n collection,\n locale,\n req,\n returning,\n select,\n versionData,\n where: whereArg,\n }: UpdateVersionArgs<T>,\n)
|
|
1
|
+
{"version":3,"sources":["../src/updateVersion.ts"],"sourcesContent":["import type {\n SanitizedCollectionConfig,\n TypeWithID,\n TypeWithVersion,\n UpdateVersionArgs,\n} from 'payload'\n\nimport { buildVersionCollectionFields } from 'payload'\nimport toSnakeCase from 'to-snake-case'\n\nimport type { DrizzleAdapter } from './types.js'\n\nimport { buildQuery } from './queries/buildQuery.js'\nimport { upsertRow } from './upsertRow/index.js'\nimport { getTransaction } from './utilities/getTransaction.js'\n\nexport async function updateVersion<T extends TypeWithID>(\n this: DrizzleAdapter,\n {\n id,\n collection,\n locale,\n req,\n returning,\n select,\n versionData,\n where: whereArg,\n }: UpdateVersionArgs<T>,\n) {\n const db = await getTransaction(this, req)\n const collectionConfig: SanitizedCollectionConfig = this.payload.collections[collection].config\n const whereToUse = whereArg || { id: { equals: id } }\n const tableName = this.tableNameMap.get(\n `_${toSnakeCase(collectionConfig.slug)}${this.versionsSuffix}`,\n )\n\n const fields = buildVersionCollectionFields(this.payload.config, collectionConfig, true)\n\n const { where } = buildQuery({\n adapter: this,\n fields,\n locale,\n tableName,\n where: whereToUse,\n })\n\n const result = await upsertRow<TypeWithVersion<T>>({\n id,\n adapter: this,\n data: versionData,\n db,\n fields,\n ignoreResult: returning === false,\n joinQuery: false,\n operation: 'update',\n req,\n select,\n tableName,\n where,\n })\n\n if (returning === false) {\n return null\n }\n\n return result\n}\n"],"names":["buildVersionCollectionFields","toSnakeCase","buildQuery","upsertRow","getTransaction","updateVersion","id","collection","locale","req","returning","select","versionData","where","whereArg","db","collectionConfig","payload","collections","config","whereToUse","equals","tableName","tableNameMap","get","slug","versionsSuffix","fields","adapter","result","data","ignoreResult","joinQuery","operation"],"mappings":"AAOA,SAASA,4BAA4B,QAAQ,UAAS;AACtD,OAAOC,iBAAiB,gBAAe;AAIvC,SAASC,UAAU,QAAQ,0BAAyB;AACpD,SAASC,SAAS,QAAQ,uBAAsB;AAChD,SAASC,cAAc,QAAQ,gCAA+B;AAE9D,OAAO,eAAeC,cAEpB,EACEC,EAAE,EACFC,UAAU,EACVC,MAAM,EACNC,GAAG,EACHC,SAAS,EACTC,MAAM,EACNC,WAAW,EACXC,OAAOC,QAAQ,EACM;IAEvB,MAAMC,KAAK,MAAMX,eAAe,IAAI,EAAEK;IACtC,MAAMO,mBAA8C,IAAI,CAACC,OAAO,CAACC,WAAW,CAACX,WAAW,CAACY,MAAM;IAC/F,MAAMC,aAAaN,YAAY;QAAER,IAAI;YAAEe,QAAQf;QAAG;IAAE;IACpD,MAAMgB,YAAY,IAAI,CAACC,YAAY,CAACC,GAAG,CACrC,CAAC,CAAC,EAAEvB,YAAYe,iBAAiBS,IAAI,IAAI,IAAI,CAACC,cAAc,EAAE;IAGhE,MAAMC,SAAS3B,6BAA6B,IAAI,CAACiB,OAAO,CAACE,MAAM,EAAEH,kBAAkB;IAEnF,MAAM,EAAEH,KAAK,EAAE,GAAGX,WAAW;QAC3B0B,SAAS,IAAI;QACbD;QACAnB;QACAc;QACAT,OAAOO;IACT;IAEA,MAAMS,SAAS,MAAM1B,UAA8B;QACjDG;QACAsB,SAAS,IAAI;QACbE,MAAMlB;QACNG;QACAY;QACAI,cAAcrB,cAAc;QAC5BsB,WAAW;QACXC,WAAW;QACXxB;QACAE;QACAW;QACAT;IACF;IAEA,IAAIH,cAAc,OAAO;QACvB,OAAO;IACT;IAEA,OAAOmB;AACT"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import type { CreateMigration } from 'payload';
|
|
2
|
-
export declare const buildCreateMigration: ({ executeMethod, filename, sanitizeStatements,
|
|
2
|
+
export declare const buildCreateMigration: ({ executeMethod, filename, sanitizeStatements, }: {
|
|
3
3
|
executeMethod: string;
|
|
4
4
|
filename: string;
|
|
5
5
|
sanitizeStatements: (args: {
|
|
6
6
|
sqlExecute: string;
|
|
7
7
|
statements: string[];
|
|
8
8
|
}) => string;
|
|
9
|
-
sqlOnly?: boolean;
|
|
10
9
|
}) => CreateMigration;
|
|
11
10
|
//# sourceMappingURL=buildCreateMigration.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"buildCreateMigration.d.ts","sourceRoot":"","sources":["../../src/utilities/buildCreateMigration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAW9C,eAAO,MAAM,oBAAoB,
|
|
1
|
+
{"version":3,"file":"buildCreateMigration.d.ts","sourceRoot":"","sources":["../../src/utilities/buildCreateMigration.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAW9C,eAAO,MAAM,oBAAoB,qDAI9B;IACD,aAAa,EAAE,MAAM,CAAA;IACrB,QAAQ,EAAE,MAAM,CAAA;IAChB,kBAAkB,EAAE,CAAC,IAAI,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,EAAE,CAAA;KAAE,KAAK,MAAM,CAAA;CACnF,KAAG,eAiHH,CAAA"}
|
|
@@ -3,7 +3,7 @@ import path from 'path';
|
|
|
3
3
|
import { getPredefinedMigration, writeMigrationIndex } from 'payload';
|
|
4
4
|
import prompts from 'prompts';
|
|
5
5
|
import { getMigrationTemplate } from './getMigrationTemplate.js';
|
|
6
|
-
export const buildCreateMigration = ({ executeMethod, filename, sanitizeStatements
|
|
6
|
+
export const buildCreateMigration = ({ executeMethod, filename, sanitizeStatements })=>{
|
|
7
7
|
const dirname = path.dirname(filename);
|
|
8
8
|
return async function createMigration({ file, forceAcceptWarning, migrationName, payload, skipEmpty }) {
|
|
9
9
|
const dir = payload.db.migrationDir;
|
|
@@ -44,7 +44,7 @@ export const buildCreateMigration = ({ executeMethod, filename, sanitizeStatemen
|
|
|
44
44
|
}
|
|
45
45
|
}
|
|
46
46
|
const sqlStatementsUp = await generateMigration(drizzleJsonBefore, drizzleJsonAfter);
|
|
47
|
-
const sqlStatementsDown =
|
|
47
|
+
const sqlStatementsDown = await generateMigration(drizzleJsonAfter, drizzleJsonBefore);
|
|
48
48
|
const sqlExecute = `await db.${executeMethod}(` + 'sql`';
|
|
49
49
|
if (sqlStatementsUp?.length) {
|
|
50
50
|
upSQL = sanitizeStatements({
|
|
@@ -79,20 +79,18 @@ export const buildCreateMigration = ({ executeMethod, filename, sanitizeStatemen
|
|
|
79
79
|
// write schema
|
|
80
80
|
fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2));
|
|
81
81
|
}
|
|
82
|
-
|
|
82
|
+
// write migration
|
|
83
|
+
fs.writeFileSync(`${filePath}.ts`, getMigrationTemplate({
|
|
83
84
|
downSQL: downSQL || ` // Migration code`,
|
|
84
85
|
imports,
|
|
85
86
|
packageName: payload.db.packageName,
|
|
86
87
|
upSQL: upSQL || ` // Migration code`
|
|
87
|
-
});
|
|
88
|
-
const fullPath = sqlOnly ? `${filePath}.sql` : `${filePath}.ts`;
|
|
89
|
-
// write migration
|
|
90
|
-
fs.writeFileSync(fullPath, data);
|
|
88
|
+
}));
|
|
91
89
|
writeMigrationIndex({
|
|
92
90
|
migrationsDir: payload.db.migrationDir
|
|
93
91
|
});
|
|
94
92
|
payload.logger.info({
|
|
95
|
-
msg: `Migration created at ${
|
|
93
|
+
msg: `Migration created at ${filePath}.ts`
|
|
96
94
|
});
|
|
97
95
|
};
|
|
98
96
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/utilities/buildCreateMigration.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { CreateMigration } from 'payload'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter } from '../types.js'\n\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\n\nexport const buildCreateMigration = ({\n executeMethod,\n filename,\n sanitizeStatements,\n
|
|
1
|
+
{"version":3,"sources":["../../src/utilities/buildCreateMigration.ts"],"sourcesContent":["import type { DrizzleSnapshotJSON } from 'drizzle-kit/api'\nimport type { CreateMigration } from 'payload'\n\nimport fs from 'fs'\nimport path from 'path'\nimport { getPredefinedMigration, writeMigrationIndex } from 'payload'\nimport prompts from 'prompts'\n\nimport type { DrizzleAdapter } from '../types.js'\n\nimport { getMigrationTemplate } from './getMigrationTemplate.js'\n\nexport const buildCreateMigration = ({\n executeMethod,\n filename,\n sanitizeStatements,\n}: {\n executeMethod: string\n filename: string\n sanitizeStatements: (args: { sqlExecute: string; statements: string[] }) => string\n}): CreateMigration => {\n const dirname = path.dirname(filename)\n return async function createMigration(\n this: DrizzleAdapter,\n { file, forceAcceptWarning, migrationName, payload, skipEmpty },\n ) {\n const dir = payload.db.migrationDir\n if (!fs.existsSync(dir)) {\n fs.mkdirSync(dir)\n }\n\n const { generateDrizzleJson, generateMigration, upSnapshot } = this.requireDrizzleKit()\n\n const drizzleJsonAfter = await generateDrizzleJson(this.schema)\n\n const [yyymmdd, hhmmss] = new Date().toISOString().split('T')\n const formattedDate = yyymmdd.replace(/\\D/g, '')\n const formattedTime = hhmmss.split('.')[0].replace(/\\D/g, '')\n let imports: string = ''\n let downSQL: string\n let upSQL: string\n ;({ downSQL, imports, upSQL } = await getPredefinedMigration({\n dirname,\n file,\n migrationName,\n payload,\n }))\n\n const timestamp = `${formattedDate}_${formattedTime}`\n\n const name = migrationName || file?.split('/').slice(2).join('/')\n const fileName = `${timestamp}${name ? `_${name.replace(/\\W/g, '_')}` : ''}`\n\n const filePath = `${dir}/${fileName}`\n\n let drizzleJsonBefore = this.defaultDrizzleSnapshot as DrizzleSnapshotJSON\n\n if (this.schemaName) {\n drizzleJsonBefore.schemas = {\n [this.schemaName]: this.schemaName,\n }\n }\n\n if (!upSQL) {\n // Get latest migration snapshot\n const latestSnapshot = fs\n .readdirSync(dir)\n .filter((file) => file.endsWith('.json'))\n .sort()\n .reverse()?.[0]\n\n if (latestSnapshot) {\n drizzleJsonBefore = JSON.parse(fs.readFileSync(`${dir}/${latestSnapshot}`, 'utf8'))\n\n if (upSnapshot && drizzleJsonBefore.version < drizzleJsonAfter.version) {\n drizzleJsonBefore = upSnapshot(drizzleJsonBefore)\n }\n }\n\n const sqlStatementsUp = await generateMigration(drizzleJsonBefore, drizzleJsonAfter)\n const sqlStatementsDown = await generateMigration(drizzleJsonAfter, drizzleJsonBefore)\n const sqlExecute = `await db.${executeMethod}(` + 'sql`'\n\n if (sqlStatementsUp?.length) {\n upSQL = sanitizeStatements({ sqlExecute, statements: sqlStatementsUp })\n }\n if (sqlStatementsDown?.length) {\n downSQL = sanitizeStatements({ sqlExecute, statements: sqlStatementsDown })\n }\n\n if (!upSQL?.length && !downSQL?.length && !forceAcceptWarning) {\n if (skipEmpty) {\n process.exit(0)\n }\n\n const { confirm: shouldCreateBlankMigration } = await prompts(\n {\n name: 'confirm',\n type: 'confirm',\n initial: false,\n message: 'No schema changes detected. Would you like to create a blank migration file?',\n },\n {\n onCancel: () => {\n process.exit(0)\n },\n },\n )\n\n if (!shouldCreateBlankMigration) {\n process.exit(0)\n }\n }\n\n // write schema\n fs.writeFileSync(`${filePath}.json`, JSON.stringify(drizzleJsonAfter, null, 2))\n }\n\n // write migration\n fs.writeFileSync(\n `${filePath}.ts`,\n getMigrationTemplate({\n downSQL: downSQL || ` // Migration code`,\n imports,\n packageName: payload.db.packageName,\n upSQL: upSQL || ` // Migration code`,\n }),\n )\n\n writeMigrationIndex({ migrationsDir: payload.db.migrationDir })\n\n payload.logger.info({ msg: `Migration created at ${filePath}.ts` })\n }\n}\n"],"names":["fs","path","getPredefinedMigration","writeMigrationIndex","prompts","getMigrationTemplate","buildCreateMigration","executeMethod","filename","sanitizeStatements","dirname","createMigration","file","forceAcceptWarning","migrationName","payload","skipEmpty","dir","db","migrationDir","existsSync","mkdirSync","generateDrizzleJson","generateMigration","upSnapshot","requireDrizzleKit","drizzleJsonAfter","schema","yyymmdd","hhmmss","Date","toISOString","split","formattedDate","replace","formattedTime","imports","downSQL","upSQL","timestamp","name","slice","join","fileName","filePath","drizzleJsonBefore","defaultDrizzleSnapshot","schemaName","schemas","latestSnapshot","readdirSync","filter","endsWith","sort","reverse","JSON","parse","readFileSync","version","sqlStatementsUp","sqlStatementsDown","sqlExecute","length","statements","process","exit","confirm","shouldCreateBlankMigration","type","initial","message","onCancel","writeFileSync","stringify","packageName","migrationsDir","logger","info","msg"],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@payloadcms/drizzle",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.51.0-canary.0",
|
|
4
4
|
"description": "A library of shared functions used by different payload database adapters",
|
|
5
5
|
"homepage": "https://payloadcms.com",
|
|
6
6
|
"repository": {
|
|
@@ -30,11 +30,6 @@
|
|
|
30
30
|
"types": "./dist/exports/postgres.d.ts",
|
|
31
31
|
"default": "./dist/exports/postgres.js"
|
|
32
32
|
},
|
|
33
|
-
"./sqlite": {
|
|
34
|
-
"import": "./dist/exports/sqlite.js",
|
|
35
|
-
"types": "./dist/exports/sqlite.d.ts",
|
|
36
|
-
"default": "./dist/exports/sqlite.js"
|
|
37
|
-
},
|
|
38
33
|
"./types": {
|
|
39
34
|
"import": "./dist/exports/types-deprecated.js",
|
|
40
35
|
"types": "./dist/exports/types-deprecated.d.ts",
|
|
@@ -60,10 +55,10 @@
|
|
|
60
55
|
"@types/pg": "8.10.2",
|
|
61
56
|
"@types/to-snake-case": "1.0.0",
|
|
62
57
|
"@payloadcms/eslint-config": "3.28.0",
|
|
63
|
-
"payload": "3.
|
|
58
|
+
"payload": "3.51.0-canary.0"
|
|
64
59
|
},
|
|
65
60
|
"peerDependencies": {
|
|
66
|
-
"payload": "3.
|
|
61
|
+
"payload": "3.51.0-canary.0"
|
|
67
62
|
},
|
|
68
63
|
"scripts": {
|
|
69
64
|
"build": "pnpm build:swc && pnpm build:types",
|
package/dist/exports/sqlite.d.ts
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export { columnToCodeConverter } from '../sqlite/columnToCodeConverter.js';
|
|
2
|
-
export { countDistinct } from '../sqlite/countDistinct.js';
|
|
3
|
-
export { convertPathToJSONTraversal } from '../sqlite/createJSONQuery/convertPathToJSONTraversal.js';
|
|
4
|
-
export { createJSONQuery } from '../sqlite/createJSONQuery/index.js';
|
|
5
|
-
export { defaultDrizzleSnapshot } from '../sqlite/defaultSnapshot.js';
|
|
6
|
-
export { deleteWhere } from '../sqlite/deleteWhere.js';
|
|
7
|
-
export { dropDatabase } from '../sqlite/dropDatabase.js';
|
|
8
|
-
export { execute } from '../sqlite/execute.js';
|
|
9
|
-
export { init } from '../sqlite/init.js';
|
|
10
|
-
export { insert } from '../sqlite/insert.js';
|
|
11
|
-
export { requireDrizzleKit } from '../sqlite/requireDrizzleKit.js';
|
|
12
|
-
export * from '../sqlite/types.js';
|
|
13
|
-
//# sourceMappingURL=sqlite.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/exports/sqlite.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAA;AAC1E,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AAC1D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yDAAyD,CAAA;AACpG,OAAO,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAA;AACpE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAA;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAA;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAA;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAA;AAC9C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAA;AACxC,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAA;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,cAAc,oBAAoB,CAAA"}
|
package/dist/exports/sqlite.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
export { columnToCodeConverter } from '../sqlite/columnToCodeConverter.js';
|
|
2
|
-
export { countDistinct } from '../sqlite/countDistinct.js';
|
|
3
|
-
export { convertPathToJSONTraversal } from '../sqlite/createJSONQuery/convertPathToJSONTraversal.js';
|
|
4
|
-
export { createJSONQuery } from '../sqlite/createJSONQuery/index.js';
|
|
5
|
-
export { defaultDrizzleSnapshot } from '../sqlite/defaultSnapshot.js';
|
|
6
|
-
export { deleteWhere } from '../sqlite/deleteWhere.js';
|
|
7
|
-
export { dropDatabase } from '../sqlite/dropDatabase.js';
|
|
8
|
-
export { execute } from '../sqlite/execute.js';
|
|
9
|
-
export { init } from '../sqlite/init.js';
|
|
10
|
-
export { insert } from '../sqlite/insert.js';
|
|
11
|
-
export { requireDrizzleKit } from '../sqlite/requireDrizzleKit.js';
|
|
12
|
-
export * from '../sqlite/types.js';
|
|
13
|
-
|
|
14
|
-
//# sourceMappingURL=sqlite.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/exports/sqlite.ts"],"sourcesContent":["export { columnToCodeConverter } from '../sqlite/columnToCodeConverter.js'\nexport { countDistinct } from '../sqlite/countDistinct.js'\nexport { convertPathToJSONTraversal } from '../sqlite/createJSONQuery/convertPathToJSONTraversal.js'\nexport { createJSONQuery } from '../sqlite/createJSONQuery/index.js'\nexport { defaultDrizzleSnapshot } from '../sqlite/defaultSnapshot.js'\nexport { deleteWhere } from '../sqlite/deleteWhere.js'\nexport { dropDatabase } from '../sqlite/dropDatabase.js'\nexport { execute } from '../sqlite/execute.js'\nexport { init } from '../sqlite/init.js'\nexport { insert } from '../sqlite/insert.js'\nexport { requireDrizzleKit } from '../sqlite/requireDrizzleKit.js'\nexport * from '../sqlite/types.js'\n"],"names":["columnToCodeConverter","countDistinct","convertPathToJSONTraversal","createJSONQuery","defaultDrizzleSnapshot","deleteWhere","dropDatabase","execute","init","insert","requireDrizzleKit"],"mappings":"AAAA,SAASA,qBAAqB,QAAQ,qCAAoC;AAC1E,SAASC,aAAa,QAAQ,6BAA4B;AAC1D,SAASC,0BAA0B,QAAQ,0DAAyD;AACpG,SAASC,eAAe,QAAQ,qCAAoC;AACpE,SAASC,sBAAsB,QAAQ,+BAA8B;AACrE,SAASC,WAAW,QAAQ,2BAA0B;AACtD,SAASC,YAAY,QAAQ,4BAA2B;AACxD,SAASC,OAAO,QAAQ,uBAAsB;AAC9C,SAASC,IAAI,QAAQ,oBAAmB;AACxC,SAASC,MAAM,QAAQ,sBAAqB;AAC5C,SAASC,iBAAiB,QAAQ,iCAAgC;AAClE,cAAc,qBAAoB"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"columnToCodeConverter.d.ts","sourceRoot":"","sources":["../../src/sqlite/columnToCodeConverter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAExD,eAAO,MAAM,qBAAqB,EAAE,qBAoInC,CAAA"}
|
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
export const columnToCodeConverter = ({ adapter, addImport, column, locales, tableKey })=>{
|
|
2
|
-
let columnBuilderFn = column.type;
|
|
3
|
-
const columnBuilderArgsArray = [];
|
|
4
|
-
let defaultStatement = null;
|
|
5
|
-
switch(column.type){
|
|
6
|
-
case 'boolean':
|
|
7
|
-
{
|
|
8
|
-
columnBuilderFn = 'integer';
|
|
9
|
-
columnBuilderArgsArray.push("mode: 'boolean'");
|
|
10
|
-
break;
|
|
11
|
-
}
|
|
12
|
-
case 'enum':
|
|
13
|
-
{
|
|
14
|
-
let options;
|
|
15
|
-
if ('locale' in column) {
|
|
16
|
-
if (!locales?.length) {
|
|
17
|
-
throw new Error('Locales must be defined for locale columns');
|
|
18
|
-
}
|
|
19
|
-
options = locales;
|
|
20
|
-
} else {
|
|
21
|
-
options = column.options;
|
|
22
|
-
}
|
|
23
|
-
columnBuilderFn = 'text';
|
|
24
|
-
columnBuilderArgsArray.push(`enum: [${options.map((locale)=>`'${locale}'`).join(', ')}]`);
|
|
25
|
-
break;
|
|
26
|
-
}
|
|
27
|
-
case 'geometry':
|
|
28
|
-
case 'jsonb':
|
|
29
|
-
{
|
|
30
|
-
columnBuilderFn = 'text';
|
|
31
|
-
columnBuilderArgsArray.push("mode: 'json'");
|
|
32
|
-
break;
|
|
33
|
-
}
|
|
34
|
-
case 'serial':
|
|
35
|
-
{
|
|
36
|
-
columnBuilderFn = 'integer';
|
|
37
|
-
break;
|
|
38
|
-
}
|
|
39
|
-
case 'timestamp':
|
|
40
|
-
{
|
|
41
|
-
columnBuilderFn = 'text';
|
|
42
|
-
defaultStatement = `default(sql\`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\`)`;
|
|
43
|
-
break;
|
|
44
|
-
}
|
|
45
|
-
case 'uuid':
|
|
46
|
-
{
|
|
47
|
-
columnBuilderFn = 'text';
|
|
48
|
-
if (column.defaultRandom) {
|
|
49
|
-
addImport('crypto', 'randomUUID');
|
|
50
|
-
defaultStatement = `$defaultFn(() => randomUUID())`;
|
|
51
|
-
}
|
|
52
|
-
break;
|
|
53
|
-
}
|
|
54
|
-
case 'varchar':
|
|
55
|
-
{
|
|
56
|
-
columnBuilderFn = 'text';
|
|
57
|
-
break;
|
|
58
|
-
}
|
|
59
|
-
default:
|
|
60
|
-
{
|
|
61
|
-
columnBuilderFn = column.type;
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
addImport(`${adapter.packageName}/drizzle/sqlite-core`, columnBuilderFn);
|
|
65
|
-
let columnBuilderArgs = '';
|
|
66
|
-
if (columnBuilderArgsArray.length) {
|
|
67
|
-
columnBuilderArgs = `, {${columnBuilderArgsArray.join(',')}}`;
|
|
68
|
-
}
|
|
69
|
-
let code = `${columnBuilderFn}('${column.name}'${columnBuilderArgs})`;
|
|
70
|
-
if (column.notNull) {
|
|
71
|
-
code = `${code}.notNull()`;
|
|
72
|
-
}
|
|
73
|
-
if (column.primaryKey) {
|
|
74
|
-
let arg = '';
|
|
75
|
-
if (column.type === 'integer' && column.autoIncrement) {
|
|
76
|
-
arg = `{ autoIncrement: true }`;
|
|
77
|
-
}
|
|
78
|
-
code = `${code}.primaryKey(${arg})`;
|
|
79
|
-
}
|
|
80
|
-
if (defaultStatement) {
|
|
81
|
-
code = `${code}.${defaultStatement}`;
|
|
82
|
-
} else if (typeof column.default !== 'undefined') {
|
|
83
|
-
let sanitizedDefault = column.default;
|
|
84
|
-
if (column.type === 'jsonb' || column.type === 'geometry') {
|
|
85
|
-
sanitizedDefault = `'${JSON.stringify(column.default)}'`;
|
|
86
|
-
} else if (typeof column.default === 'string') {
|
|
87
|
-
sanitizedDefault = JSON.stringify(column.default);
|
|
88
|
-
} else if (column.type === 'numeric') {
|
|
89
|
-
sanitizedDefault = `'${column.default}'`;
|
|
90
|
-
}
|
|
91
|
-
code = `${code}.default(${sanitizedDefault})`;
|
|
92
|
-
}
|
|
93
|
-
if (column.reference) {
|
|
94
|
-
let callback = `()`;
|
|
95
|
-
if (column.reference.table === tableKey) {
|
|
96
|
-
addImport(`${adapter.packageName}/drizzle/sqlite-core`, 'type AnySQLiteColumn');
|
|
97
|
-
callback = `${callback}: AnySQLiteColumn`;
|
|
98
|
-
}
|
|
99
|
-
callback = `${callback} => ${column.reference.table}.${column.reference.name}`;
|
|
100
|
-
code = `${code}.references(${callback}, {
|
|
101
|
-
${column.reference.onDelete ? `onDelete: '${column.reference.onDelete}'` : ''}
|
|
102
|
-
})`;
|
|
103
|
-
}
|
|
104
|
-
return code;
|
|
105
|
-
};
|
|
106
|
-
|
|
107
|
-
//# sourceMappingURL=columnToCodeConverter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite/columnToCodeConverter.ts"],"sourcesContent":["import type { ColumnToCodeConverter } from '../types.js'\n\nexport const columnToCodeConverter: ColumnToCodeConverter = ({\n adapter,\n addImport,\n column,\n locales,\n tableKey,\n}) => {\n let columnBuilderFn: string = column.type\n\n const columnBuilderArgsArray: string[] = []\n\n let defaultStatement: null | string = null\n\n switch (column.type) {\n case 'boolean': {\n columnBuilderFn = 'integer'\n columnBuilderArgsArray.push(\"mode: 'boolean'\")\n break\n }\n\n case 'enum': {\n let options: string[]\n if ('locale' in column) {\n if (!locales?.length) {\n throw new Error('Locales must be defined for locale columns')\n }\n options = locales\n } else {\n options = column.options\n }\n\n columnBuilderFn = 'text'\n columnBuilderArgsArray.push(`enum: [${options.map((locale) => `'${locale}'`).join(', ')}]`)\n\n break\n }\n\n case 'geometry':\n case 'jsonb': {\n columnBuilderFn = 'text'\n columnBuilderArgsArray.push(\"mode: 'json'\")\n break\n }\n\n case 'serial': {\n columnBuilderFn = 'integer'\n break\n }\n\n case 'timestamp': {\n columnBuilderFn = 'text'\n defaultStatement = `default(sql\\`(strftime('%Y-%m-%dT%H:%M:%fZ', 'now'))\\`)`\n break\n }\n\n case 'uuid': {\n columnBuilderFn = 'text'\n\n if (column.defaultRandom) {\n addImport('crypto', 'randomUUID')\n defaultStatement = `$defaultFn(() => randomUUID())`\n }\n\n break\n }\n\n case 'varchar': {\n columnBuilderFn = 'text'\n break\n }\n\n default: {\n columnBuilderFn = column.type\n }\n }\n\n addImport(`${adapter.packageName}/drizzle/sqlite-core`, columnBuilderFn)\n\n let columnBuilderArgs = ''\n\n if (columnBuilderArgsArray.length) {\n columnBuilderArgs = `, {${columnBuilderArgsArray.join(',')}}`\n }\n\n let code = `${columnBuilderFn}('${column.name}'${columnBuilderArgs})`\n\n if (column.notNull) {\n code = `${code}.notNull()`\n }\n\n if (column.primaryKey) {\n let arg = ''\n\n if (column.type === 'integer' && column.autoIncrement) {\n arg = `{ autoIncrement: true }`\n }\n\n code = `${code}.primaryKey(${arg})`\n }\n\n if (defaultStatement) {\n code = `${code}.${defaultStatement}`\n } else if (typeof column.default !== 'undefined') {\n let sanitizedDefault = column.default\n\n if (column.type === 'jsonb' || column.type === 'geometry') {\n sanitizedDefault = `'${JSON.stringify(column.default)}'`\n } else if (typeof column.default === 'string') {\n sanitizedDefault = JSON.stringify(column.default)\n } else if (column.type === 'numeric') {\n sanitizedDefault = `'${column.default}'`\n }\n\n code = `${code}.default(${sanitizedDefault})`\n }\n\n if (column.reference) {\n let callback = `()`\n\n if (column.reference.table === tableKey) {\n addImport(`${adapter.packageName}/drizzle/sqlite-core`, 'type AnySQLiteColumn')\n callback = `${callback}: AnySQLiteColumn`\n }\n\n callback = `${callback} => ${column.reference.table}.${column.reference.name}`\n\n code = `${code}.references(${callback}, {\n ${column.reference.onDelete ? `onDelete: '${column.reference.onDelete}'` : ''}\n })`\n }\n\n return code\n}\n"],"names":["columnToCodeConverter","adapter","addImport","column","locales","tableKey","columnBuilderFn","type","columnBuilderArgsArray","defaultStatement","push","options","length","Error","map","locale","join","defaultRandom","packageName","columnBuilderArgs","code","name","notNull","primaryKey","arg","autoIncrement","default","sanitizedDefault","JSON","stringify","reference","callback","table","onDelete"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"countDistinct.d.ts","sourceRoot":"","sources":["../../src/sqlite/countDistinct.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAqB,aAAa,EAAE,MAAM,YAAY,CAAA;AAElE,eAAO,MAAM,aAAa,EAAE,aAoC3B,CAAA"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import { count, sql } from 'drizzle-orm';
|
|
2
|
-
export const countDistinct = async function countDistinct({ column, db, joins, tableName, where }) {
|
|
3
|
-
// When we don't have any joins - use a simple COUNT(*) query.
|
|
4
|
-
if (joins.length === 0) {
|
|
5
|
-
const countResult = await db.select({
|
|
6
|
-
count: column ? count(sql`DISTINCT ${column}`) : count()
|
|
7
|
-
}).from(this.tables[tableName]).where(where);
|
|
8
|
-
return Number(countResult?.[0]?.count ?? 0);
|
|
9
|
-
}
|
|
10
|
-
let query = db.select({
|
|
11
|
-
count: sql`COUNT(1) OVER()`
|
|
12
|
-
}).from(this.tables[tableName]).where(where).groupBy(column ?? this.tables[tableName].id).limit(1).$dynamic();
|
|
13
|
-
joins.forEach(({ type, condition, table })=>{
|
|
14
|
-
query = query[type ?? 'leftJoin'](table, condition);
|
|
15
|
-
});
|
|
16
|
-
// When we have any joins, we need to count each individual ID only once.
|
|
17
|
-
// COUNT(*) doesn't work for this well in this case, as it also counts joined tables.
|
|
18
|
-
// SELECT (COUNT DISTINCT id) has a very slow performance on large tables.
|
|
19
|
-
// Instead, COUNT (GROUP BY id) can be used which is still slower than COUNT(*) but acceptable.
|
|
20
|
-
const countResult = await query;
|
|
21
|
-
return Number(countResult?.[0]?.count ?? 0);
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
//# sourceMappingURL=countDistinct.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/sqlite/countDistinct.ts"],"sourcesContent":["import type { SQLiteSelect } from 'drizzle-orm/sqlite-core'\n\nimport { count, sql } from 'drizzle-orm'\n\nimport type { BaseSQLiteAdapter, CountDistinct } from './types.js'\n\nexport const countDistinct: CountDistinct = async function countDistinct(\n this: BaseSQLiteAdapter,\n { column, db, joins, tableName, where },\n) {\n // When we don't have any joins - use a simple COUNT(*) query.\n if (joins.length === 0) {\n const countResult = await db\n .select({\n count: column ? count(sql`DISTINCT ${column}`) : count(),\n })\n .from(this.tables[tableName])\n .where(where)\n return Number(countResult?.[0]?.count ?? 0)\n }\n\n let query: SQLiteSelect = db\n .select({\n count: sql`COUNT(1) OVER()`,\n })\n .from(this.tables[tableName])\n .where(where)\n .groupBy(column ?? this.tables[tableName].id)\n .limit(1)\n .$dynamic()\n\n joins.forEach(({ type, condition, table }) => {\n query = query[type ?? 'leftJoin'](table, condition)\n })\n\n // When we have any joins, we need to count each individual ID only once.\n // COUNT(*) doesn't work for this well in this case, as it also counts joined tables.\n // SELECT (COUNT DISTINCT id) has a very slow performance on large tables.\n // Instead, COUNT (GROUP BY id) can be used which is still slower than COUNT(*) but acceptable.\n const countResult = await query\n\n return Number(countResult?.[0]?.count ?? 0)\n}\n"],"names":["count","sql","countDistinct","column","db","joins","tableName","where","length","countResult","select","from","tables","Number","query","groupBy","id","limit","$dynamic","forEach","type","condition","table"],"mappings":"AAEA,SAASA,KAAK,EAAEC,GAAG,QAAQ,cAAa;AAIxC,OAAO,MAAMC,gBAA+B,eAAeA,cAEzD,EAAEC,MAAM,EAAEC,EAAE,EAAEC,KAAK,EAAEC,SAAS,EAAEC,KAAK,EAAE;IAEvC,8DAA8D;IAC9D,IAAIF,MAAMG,MAAM,KAAK,GAAG;QACtB,MAAMC,cAAc,MAAML,GACvBM,MAAM,CAAC;YACNV,OAAOG,SAASH,MAAMC,GAAG,CAAC,SAAS,EAAEE,OAAO,CAAC,IAAIH;QACnD,GACCW,IAAI,CAAC,IAAI,CAACC,MAAM,CAACN,UAAU,EAC3BC,KAAK,CAACA;QACT,OAAOM,OAAOJ,aAAa,CAAC,EAAE,EAAET,SAAS;IAC3C;IAEA,IAAIc,QAAsBV,GACvBM,MAAM,CAAC;QACNV,OAAOC,GAAG,CAAC,eAAe,CAAC;IAC7B,GACCU,IAAI,CAAC,IAAI,CAACC,MAAM,CAACN,UAAU,EAC3BC,KAAK,CAACA,OACNQ,OAAO,CAACZ,UAAU,IAAI,CAACS,MAAM,CAACN,UAAU,CAACU,EAAE,EAC3CC,KAAK,CAAC,GACNC,QAAQ;IAEXb,MAAMc,OAAO,CAAC,CAAC,EAAEC,IAAI,EAAEC,SAAS,EAAEC,KAAK,EAAE;QACvCR,QAAQA,KAAK,CAACM,QAAQ,WAAW,CAACE,OAAOD;IAC3C;IAEA,yEAAyE;IACzE,qFAAqF;IACrF,0EAA0E;IAC1E,+FAA+F;IAC/F,MAAMZ,cAAc,MAAMK;IAE1B,OAAOD,OAAOJ,aAAa,CAAC,EAAE,EAAET,SAAS;AAC3C,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"convertPathToJSONTraversal.d.ts","sourceRoot":"","sources":["../../../src/sqlite/createJSONQuery/convertPathToJSONTraversal.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,0BAA0B,qBAAsB,MAAM,EAAE,KAAG,MAQvE,CAAA"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
export const convertPathToJSONTraversal = (incomingSegments)=>{
|
|
2
|
-
const segments = [
|
|
3
|
-
...incomingSegments
|
|
4
|
-
];
|
|
5
|
-
segments.shift();
|
|
6
|
-
return segments.reduce((res, segment)=>{
|
|
7
|
-
const formattedSegment = Number.isNaN(parseInt(segment)) ? `'${segment}'` : segment;
|
|
8
|
-
return `${res}->>${formattedSegment}`;
|
|
9
|
-
}, '');
|
|
10
|
-
};
|
|
11
|
-
|
|
12
|
-
//# sourceMappingURL=convertPathToJSONTraversal.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/sqlite/createJSONQuery/convertPathToJSONTraversal.ts"],"sourcesContent":["export const convertPathToJSONTraversal = (incomingSegments: string[]): string => {\n const segments = [...incomingSegments]\n segments.shift()\n\n return segments.reduce((res, segment) => {\n const formattedSegment = Number.isNaN(parseInt(segment)) ? `'${segment}'` : segment\n return `${res}->>${formattedSegment}`\n }, '')\n}\n"],"names":["convertPathToJSONTraversal","incomingSegments","segments","shift","reduce","res","segment","formattedSegment","Number","isNaN","parseInt"],"mappings":"AAAA,OAAO,MAAMA,6BAA6B,CAACC;IACzC,MAAMC,WAAW;WAAID;KAAiB;IACtCC,SAASC,KAAK;IAEd,OAAOD,SAASE,MAAM,CAAC,CAACC,KAAKC;QAC3B,MAAMC,mBAAmBC,OAAOC,KAAK,CAACC,SAASJ,YAAY,CAAC,CAAC,EAAEA,QAAQ,CAAC,CAAC,GAAGA;QAC5E,OAAO,GAAGD,IAAI,GAAG,EAAEE,kBAAkB;IACvC,GAAG;AACL,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/sqlite/createJSONQuery/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAqEzD,eAAO,MAAM,eAAe,4DAMzB,mBAAmB,KAAG,MAYxB,CAAA"}
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
const fromArray = ({ isRoot, operator, pathSegments, table, treatAsArray, value })=>{
|
|
2
|
-
const newPathSegments = pathSegments.slice(1);
|
|
3
|
-
const alias = `${pathSegments[isRoot ? 0 : 1]}_alias_${newPathSegments.length}`;
|
|
4
|
-
return `EXISTS (
|
|
5
|
-
SELECT 1
|
|
6
|
-
FROM json_each(${table}.${pathSegments[0]}) AS ${alias}
|
|
7
|
-
WHERE ${createJSONQuery({
|
|
8
|
-
operator,
|
|
9
|
-
pathSegments: newPathSegments,
|
|
10
|
-
table: alias,
|
|
11
|
-
treatAsArray,
|
|
12
|
-
value
|
|
13
|
-
})}
|
|
14
|
-
)`;
|
|
15
|
-
};
|
|
16
|
-
const createConstraint = ({ alias, operator, pathSegments, value })=>{
|
|
17
|
-
const newAlias = `${pathSegments[0]}_alias_${pathSegments.length - 1}`;
|
|
18
|
-
let formattedValue = value;
|
|
19
|
-
let formattedOperator = operator;
|
|
20
|
-
if ([
|
|
21
|
-
'contains',
|
|
22
|
-
'like'
|
|
23
|
-
].includes(operator)) {
|
|
24
|
-
formattedOperator = 'like';
|
|
25
|
-
formattedValue = `%${value}%`;
|
|
26
|
-
} else if ([
|
|
27
|
-
'not_like',
|
|
28
|
-
'notlike'
|
|
29
|
-
].includes(operator)) {
|
|
30
|
-
formattedOperator = 'not like';
|
|
31
|
-
formattedValue = `%${value}%`;
|
|
32
|
-
} else if (operator === 'equals') {
|
|
33
|
-
formattedOperator = '=';
|
|
34
|
-
}
|
|
35
|
-
return `EXISTS (
|
|
36
|
-
SELECT 1
|
|
37
|
-
FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}
|
|
38
|
-
WHERE COALESCE(${newAlias}.value ->> '${pathSegments[1]}', '') ${formattedOperator} '${formattedValue}'
|
|
39
|
-
)`;
|
|
40
|
-
};
|
|
41
|
-
export const createJSONQuery = ({ operator, pathSegments, table, treatAsArray, value })=>{
|
|
42
|
-
if (treatAsArray?.includes(pathSegments[1]) && table) {
|
|
43
|
-
return fromArray({
|
|
44
|
-
operator,
|
|
45
|
-
pathSegments,
|
|
46
|
-
table,
|
|
47
|
-
treatAsArray,
|
|
48
|
-
value
|
|
49
|
-
});
|
|
50
|
-
}
|
|
51
|
-
return createConstraint({
|
|
52
|
-
alias: table,
|
|
53
|
-
operator,
|
|
54
|
-
pathSegments,
|
|
55
|
-
treatAsArray,
|
|
56
|
-
value
|
|
57
|
-
});
|
|
58
|
-
};
|
|
59
|
-
|
|
60
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/sqlite/createJSONQuery/index.ts"],"sourcesContent":["import type { CreateJSONQueryArgs } from '../../types.js'\n\ntype FromArrayArgs = {\n isRoot?: true\n operator: string\n pathSegments: string[]\n table: string\n treatAsArray?: string[]\n value: boolean | number | string\n}\n\nconst fromArray = ({\n isRoot,\n operator,\n pathSegments,\n table,\n treatAsArray,\n value,\n}: FromArrayArgs) => {\n const newPathSegments = pathSegments.slice(1)\n const alias = `${pathSegments[isRoot ? 0 : 1]}_alias_${newPathSegments.length}`\n\n return `EXISTS (\n SELECT 1\n FROM json_each(${table}.${pathSegments[0]}) AS ${alias}\n WHERE ${createJSONQuery({\n operator,\n pathSegments: newPathSegments,\n table: alias,\n treatAsArray,\n value,\n })}\n )`\n}\n\ntype CreateConstraintArgs = {\n alias?: string\n operator: string\n pathSegments: string[]\n treatAsArray?: string[]\n value: boolean | number | string\n}\n\nconst createConstraint = ({\n alias,\n operator,\n pathSegments,\n value,\n}: CreateConstraintArgs): string => {\n const newAlias = `${pathSegments[0]}_alias_${pathSegments.length - 1}`\n let formattedValue = value\n let formattedOperator = operator\n if (['contains', 'like'].includes(operator)) {\n formattedOperator = 'like'\n formattedValue = `%${value}%`\n } else if (['not_like', 'notlike'].includes(operator)) {\n formattedOperator = 'not like'\n formattedValue = `%${value}%`\n } else if (operator === 'equals') {\n formattedOperator = '='\n }\n\n return `EXISTS (\n SELECT 1\n FROM json_each(${alias}.value -> '${pathSegments[0]}') AS ${newAlias}\n WHERE COALESCE(${newAlias}.value ->> '${pathSegments[1]}', '') ${formattedOperator} '${formattedValue}'\n )`\n}\n\nexport const createJSONQuery = ({\n operator,\n pathSegments,\n table,\n treatAsArray,\n value,\n}: CreateJSONQueryArgs): string => {\n if (treatAsArray?.includes(pathSegments[1]) && table) {\n return fromArray({\n operator,\n pathSegments,\n table,\n treatAsArray,\n value,\n })\n }\n\n return createConstraint({ alias: table, operator, pathSegments, treatAsArray, value })\n}\n"],"names":["fromArray","isRoot","operator","pathSegments","table","treatAsArray","value","newPathSegments","slice","alias","length","createJSONQuery","createConstraint","newAlias","formattedValue","formattedOperator","includes"],"mappings":"AAWA,MAAMA,YAAY,CAAC,EACjBC,MAAM,EACNC,QAAQ,EACRC,YAAY,EACZC,KAAK,EACLC,YAAY,EACZC,KAAK,EACS;IACd,MAAMC,kBAAkBJ,aAAaK,KAAK,CAAC;IAC3C,MAAMC,QAAQ,GAAGN,YAAY,CAACF,SAAS,IAAI,EAAE,CAAC,OAAO,EAAEM,gBAAgBG,MAAM,EAAE;IAE/E,OAAO,CAAC;;mBAES,EAAEN,MAAM,CAAC,EAAED,YAAY,CAAC,EAAE,CAAC,KAAK,EAAEM,MAAM;UACjD,EAAEE,gBAAgB;QACtBT;QACAC,cAAcI;QACdH,OAAOK;QACPJ;QACAC;IACF,GAAG;GACJ,CAAC;AACJ;AAUA,MAAMM,mBAAmB,CAAC,EACxBH,KAAK,EACLP,QAAQ,EACRC,YAAY,EACZG,KAAK,EACgB;IACrB,MAAMO,WAAW,GAAGV,YAAY,CAAC,EAAE,CAAC,OAAO,EAAEA,aAAaO,MAAM,GAAG,GAAG;IACtE,IAAII,iBAAiBR;IACrB,IAAIS,oBAAoBb;IACxB,IAAI;QAAC;QAAY;KAAO,CAACc,QAAQ,CAACd,WAAW;QAC3Ca,oBAAoB;QACpBD,iBAAiB,CAAC,CAAC,EAAER,MAAM,CAAC,CAAC;IAC/B,OAAO,IAAI;QAAC;QAAY;KAAU,CAACU,QAAQ,CAACd,WAAW;QACrDa,oBAAoB;QACpBD,iBAAiB,CAAC,CAAC,EAAER,MAAM,CAAC,CAAC;IAC/B,OAAO,IAAIJ,aAAa,UAAU;QAChCa,oBAAoB;IACtB;IAEA,OAAO,CAAC;;iBAEO,EAAEN,MAAM,WAAW,EAAEN,YAAY,CAAC,EAAE,CAAC,MAAM,EAAEU,SAAS;iBACtD,EAAEA,SAAS,YAAY,EAAEV,YAAY,CAAC,EAAE,CAAC,OAAO,EAAEY,kBAAkB,EAAE,EAAED,eAAe;GACrG,CAAC;AACJ;AAEA,OAAO,MAAMH,kBAAkB,CAAC,EAC9BT,QAAQ,EACRC,YAAY,EACZC,KAAK,EACLC,YAAY,EACZC,KAAK,EACe;IACpB,IAAID,cAAcW,SAASb,YAAY,CAAC,EAAE,KAAKC,OAAO;QACpD,OAAOJ,UAAU;YACfE;YACAC;YACAC;YACAC;YACAC;QACF;IACF;IAEA,OAAOM,iBAAiB;QAAEH,OAAOL;QAAOF;QAAUC;QAAcE;QAAcC;IAAM;AACtF,EAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"defaultSnapshot.d.ts","sourceRoot":"","sources":["../../src/sqlite/defaultSnapshot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAA;AAEhE,eAAO,MAAM,sBAAsB,EAAE,yBAYpC,CAAA"}
|