@webiny/api-headless-cms-sql 6.6.0-alpha.7 → 6.6.0-alpha.8
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/features/entryTableManager/EntryTableManager.js +5 -1
- package/features/entryTableManager/EntryTableManager.js.map +1 -1
- package/features/groupSchemaManager/GroupSchemaManager.js +5 -1
- package/features/groupSchemaManager/GroupSchemaManager.js.map +1 -1
- package/features/modelSchemaManager/ModelSchemaManager.js +5 -1
- package/features/modelSchemaManager/ModelSchemaManager.js.map +1 -1
- package/operations/entry/SqlCreateEntryRevisionFrom.d.ts +1 -0
- package/operations/entry/SqlCreateEntryRevisionFrom.js +8 -5
- package/operations/entry/SqlCreateEntryRevisionFrom.js.map +1 -1
- package/operations/entry/SqlDeleteEntry.d.ts +1 -1
- package/operations/entry/SqlDeleteEntry.js +4 -4
- package/operations/entry/SqlDeleteEntry.js.map +1 -1
- package/operations/entry/SqlDeleteEntryRevision.d.ts +1 -1
- package/operations/entry/SqlDeleteEntryRevision.js +6 -6
- package/operations/entry/SqlDeleteEntryRevision.js.map +1 -1
- package/operations/entry/SqlDeleteMultipleEntries.d.ts +1 -1
- package/operations/entry/SqlDeleteMultipleEntries.js +4 -4
- package/operations/entry/SqlDeleteMultipleEntries.js.map +1 -1
- package/operations/entry/SqlMoveEntry.js +1 -1
- package/operations/entry/SqlMoveEntry.js.map +1 -1
- package/operations/entry/SqlMoveToBin.js +1 -1
- package/operations/entry/SqlMoveToBin.js.map +1 -1
- package/operations/entry/SqlPublishEntry.d.ts +1 -1
- package/operations/entry/SqlPublishEntry.js +8 -8
- package/operations/entry/SqlPublishEntry.js.map +1 -1
- package/operations/entry/SqlRestoreFromBin.js +1 -1
- package/operations/entry/SqlRestoreFromBin.js.map +1 -1
- package/operations/entry/SqlUnpublishEntry.d.ts +1 -1
- package/operations/entry/SqlUnpublishEntry.js +6 -6
- package/operations/entry/SqlUnpublishEntry.js.map +1 -1
- package/operations/entry/SqlUpdateEntry.d.ts +1 -1
- package/operations/entry/SqlUpdateEntry.js +6 -6
- package/operations/entry/SqlUpdateEntry.js.map +1 -1
- package/operations/entry/queryHelpers.d.ts +7 -2
- package/operations/entry/queryHelpers.js +8 -7
- package/operations/entry/queryHelpers.js.map +1 -1
- package/operations/group/SqlDeleteGroup.js +1 -1
- package/operations/group/SqlDeleteGroup.js.map +1 -1
- package/operations/group/SqlUpdateGroup.js +1 -1
- package/operations/group/SqlUpdateGroup.js.map +1 -1
- package/operations/model/SqlDeleteModel.js +1 -1
- package/operations/model/SqlDeleteModel.js.map +1 -1
- package/operations/model/SqlUpdateModel.js +1 -1
- package/operations/model/SqlUpdateModel.js.map +1 -1
- package/package.json +10 -10
|
@@ -33,7 +33,7 @@ class EntryTableManagerImpl {
|
|
|
33
33
|
async createTable() {
|
|
34
34
|
try {
|
|
35
35
|
await this.knex.client.schema.createTable(this.tableName, (table)=>{
|
|
36
|
-
table.text("id").
|
|
36
|
+
table.text("id").notNullable();
|
|
37
37
|
table.text("entryId").notNullable();
|
|
38
38
|
table.text("modelId").notNullable();
|
|
39
39
|
table.text("tenant").notNullable();
|
|
@@ -42,6 +42,10 @@ class EntryTableManagerImpl {
|
|
|
42
42
|
table.boolean("isPublished").defaultTo(false);
|
|
43
43
|
table.boolean("wbyDeleted").defaultTo(false);
|
|
44
44
|
table.text("data").notNullable();
|
|
45
|
+
table.primary([
|
|
46
|
+
"tenant",
|
|
47
|
+
"id"
|
|
48
|
+
]);
|
|
45
49
|
table.index([
|
|
46
50
|
"tenant",
|
|
47
51
|
"modelId",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/entryTableManager/EntryTableManager.js","sources":["../../../src/features/entryTableManager/EntryTableManager.ts"],"sourcesContent":["import { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager as EntryTableManagerAbstraction } from \"./abstractions.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\n\nclass EntryTableManagerImpl implements EntryTableManagerAbstraction.Interface {\n private readonly knex;\n private readonly tableName;\n private initialized = false;\n private initPromise?: Promise<void>;\n\n constructor(knex: KnexClient.Interface, tableNameResolver: TableNameResolver.Interface) {\n this.knex = knex;\n this.tableName = tableNameResolver.resolve(\"entries\");\n\n const g = globalThis as Record<string, unknown>;\n const managers = (g.__sqlTableManagers ??= []) as EntryTableManagerAbstraction.Interface[];\n managers.push(this);\n }\n\n public reset(): void {\n this.initialized = false;\n this.initPromise = undefined;\n }\n\n public async ensureTable(): Promise<void> {\n if (this.initialized) {\n return;\n }\n // Memoize the in-flight init so concurrent callers (e.g. Promise.all entry creates) share a\n // single hasTable+createTable and don't race into \"table already exists\". Clear on failure\n // so a later call can retry.\n if (!this.initPromise) {\n this.initPromise = this.doEnsureTable().catch(err => {\n this.initPromise = undefined;\n throw err;\n });\n }\n return this.initPromise;\n }\n\n private async doEnsureTable(): Promise<void> {\n const exists = await this.knex.client.schema.hasTable(this.tableName);\n\n if (!exists) {\n await this.createTable();\n }\n\n this.initialized = true;\n }\n\n public getTableName(): string {\n return this.tableName;\n }\n\n private async createTable(): Promise<void> {\n try {\n await this.knex.client.schema.createTable(this.tableName, table => {\n table.text(\"id\").
|
|
1
|
+
{"version":3,"file":"features/entryTableManager/EntryTableManager.js","sources":["../../../src/features/entryTableManager/EntryTableManager.ts"],"sourcesContent":["import { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager as EntryTableManagerAbstraction } from \"./abstractions.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\n\nclass EntryTableManagerImpl implements EntryTableManagerAbstraction.Interface {\n private readonly knex;\n private readonly tableName;\n private initialized = false;\n private initPromise?: Promise<void>;\n\n constructor(knex: KnexClient.Interface, tableNameResolver: TableNameResolver.Interface) {\n this.knex = knex;\n this.tableName = tableNameResolver.resolve(\"entries\");\n\n const g = globalThis as Record<string, unknown>;\n const managers = (g.__sqlTableManagers ??= []) as EntryTableManagerAbstraction.Interface[];\n managers.push(this);\n }\n\n public reset(): void {\n this.initialized = false;\n this.initPromise = undefined;\n }\n\n public async ensureTable(): Promise<void> {\n if (this.initialized) {\n return;\n }\n // Memoize the in-flight init so concurrent callers (e.g. Promise.all entry creates) share a\n // single hasTable+createTable and don't race into \"table already exists\". Clear on failure\n // so a later call can retry.\n if (!this.initPromise) {\n this.initPromise = this.doEnsureTable().catch(err => {\n this.initPromise = undefined;\n throw err;\n });\n }\n return this.initPromise;\n }\n\n private async doEnsureTable(): Promise<void> {\n const exists = await this.knex.client.schema.hasTable(this.tableName);\n\n if (!exists) {\n await this.createTable();\n }\n\n this.initialized = true;\n }\n\n public getTableName(): string {\n return this.tableName;\n }\n\n private async createTable(): Promise<void> {\n try {\n await this.knex.client.schema.createTable(this.tableName, table => {\n table.text(\"id\").notNullable();\n table.text(\"entryId\").notNullable();\n table.text(\"modelId\").notNullable();\n table.text(\"tenant\").notNullable();\n table.integer(\"version\").notNullable();\n table.boolean(\"isLatest\").defaultTo(false);\n table.boolean(\"isPublished\").defaultTo(false);\n table.boolean(\"wbyDeleted\").defaultTo(false);\n table.text(\"data\").notNullable();\n\n table.primary([\"tenant\", \"id\"]);\n\n table.index([\"tenant\", \"modelId\", \"isLatest\"]);\n table.index([\"tenant\", \"modelId\", \"isPublished\"]);\n table.index([\"tenant\", \"modelId\", \"entryId\"]);\n });\n } catch (err) {\n // The entries table is shared across all EntryTableManager instances (one per request\n // container), so another instance/connection may create it concurrently. If it now\n // exists, that's success; otherwise the failure is real.\n if (await this.knex.client.schema.hasTable(this.tableName)) {\n return;\n }\n throw err;\n }\n }\n}\n\nexport const EntryTableManager = EntryTableManagerAbstraction.createImplementation({\n implementation: EntryTableManagerImpl,\n dependencies: [KnexClient, TableNameResolver]\n});\n"],"names":["EntryTableManagerImpl","knex","tableNameResolver","g","globalThis","managers","undefined","err","exists","table","EntryTableManager","EntryTableManagerAbstraction","KnexClient","TableNameResolver"],"mappings":";;;AAIA,MAAMA;IAMF,YAAYC,IAA0B,EAAEC,iBAA8C,CAAE;aAHhF,WAAW,GAAG;QAIlB,IAAI,CAAC,IAAI,GAAGD;QACZ,IAAI,CAAC,SAAS,GAAGC,kBAAkB,OAAO,CAAC;QAE3C,MAAMC,IAAIC;QACV,MAAMC,WAAYF,EAAE,kBAAkB,KAAK,EAAE;QAC7CE,SAAS,IAAI,CAAC,IAAI;IACtB;IAEO,QAAc;QACjB,IAAI,CAAC,WAAW,GAAG;QACnB,IAAI,CAAC,WAAW,GAAGC;IACvB;IAEA,MAAa,cAA6B;QACtC,IAAI,IAAI,CAAC,WAAW,EAChB;QAKJ,IAAI,CAAC,IAAI,CAAC,WAAW,EACjB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAACC,CAAAA;YAC1C,IAAI,CAAC,WAAW,GAAGD;YACnB,MAAMC;QACV;QAEJ,OAAO,IAAI,CAAC,WAAW;IAC3B;IAEA,MAAc,gBAA+B;QACzC,MAAMC,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS;QAEpE,IAAI,CAACA,QACD,MAAM,IAAI,CAAC,WAAW;QAG1B,IAAI,CAAC,WAAW,GAAG;IACvB;IAEO,eAAuB;QAC1B,OAAO,IAAI,CAAC,SAAS;IACzB;IAEA,MAAc,cAA6B;QACvC,IAAI;YACA,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAEC,CAAAA;gBACtDA,MAAM,IAAI,CAAC,MAAM,WAAW;gBAC5BA,MAAM,IAAI,CAAC,WAAW,WAAW;gBACjCA,MAAM,IAAI,CAAC,WAAW,WAAW;gBACjCA,MAAM,IAAI,CAAC,UAAU,WAAW;gBAChCA,MAAM,OAAO,CAAC,WAAW,WAAW;gBACpCA,MAAM,OAAO,CAAC,YAAY,SAAS,CAAC;gBACpCA,MAAM,OAAO,CAAC,eAAe,SAAS,CAAC;gBACvCA,MAAM,OAAO,CAAC,cAAc,SAAS,CAAC;gBACtCA,MAAM,IAAI,CAAC,QAAQ,WAAW;gBAE9BA,MAAM,OAAO,CAAC;oBAAC;oBAAU;iBAAK;gBAE9BA,MAAM,KAAK,CAAC;oBAAC;oBAAU;oBAAW;iBAAW;gBAC7CA,MAAM,KAAK,CAAC;oBAAC;oBAAU;oBAAW;iBAAc;gBAChDA,MAAM,KAAK,CAAC;oBAAC;oBAAU;oBAAW;iBAAU;YAChD;QACJ,EAAE,OAAOF,KAAK;YAIV,IAAI,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,GACrD;YAEJ,MAAMA;QACV;IACJ;AACJ;AAEO,MAAMG,sCAAoBC,kBAAAA,oBAAiD,CAAC;IAC/E,gBAAgBX;IAChB,cAAc;QAACY;QAAYC;KAAkB;AACjD"}
|
|
@@ -15,7 +15,7 @@ class GroupSchemaManagerImpl {
|
|
|
15
15
|
if (this.verified.has(tableName)) return;
|
|
16
16
|
const exists = await this.knex.client.schema.hasTable(tableName);
|
|
17
17
|
if (!exists) await this.knex.client.schema.createTable(tableName, (table)=>{
|
|
18
|
-
table.text("id").
|
|
18
|
+
table.text("id").notNullable();
|
|
19
19
|
table.text("name").notNullable();
|
|
20
20
|
table.text("slug").notNullable();
|
|
21
21
|
table.text("tenant").notNullable();
|
|
@@ -29,6 +29,10 @@ class GroupSchemaManagerImpl {
|
|
|
29
29
|
table.text("savedOn");
|
|
30
30
|
table.boolean("isPrivate").notNullable().defaultTo(false);
|
|
31
31
|
table.boolean("isPlugin").notNullable().defaultTo(false);
|
|
32
|
+
table.primary([
|
|
33
|
+
"tenant",
|
|
34
|
+
"id"
|
|
35
|
+
]);
|
|
32
36
|
});
|
|
33
37
|
this.verified.add(tableName);
|
|
34
38
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/groupSchemaManager/GroupSchemaManager.js","sources":["../../../src/features/groupSchemaManager/GroupSchemaManager.ts"],"sourcesContent":["import { KnexClient } from \"@webiny/api-core-sql\";\nimport { GroupSchemaManager as GroupSchemaManagerAbstraction } from \"./abstractions.js\";\n\nclass GroupSchemaManagerImpl implements GroupSchemaManagerAbstraction.Interface {\n private readonly knex;\n private readonly verified = new Set<string>();\n\n constructor(knex: KnexClient.Interface) {\n this.knex = knex;\n\n const g = globalThis as Record<string, unknown>;\n const managers = (g.__sqlTableManagers ??= []) as GroupSchemaManagerAbstraction.Interface[];\n managers.push(this);\n }\n\n public reset(): void {\n this.verified.clear();\n }\n\n public async ensure(tableName: string): Promise<void> {\n if (this.verified.has(tableName)) {\n return;\n }\n\n const exists = await this.knex.client.schema.hasTable(tableName);\n\n if (!exists) {\n await this.knex.client.schema.createTable(tableName, table => {\n table.text(\"id\").
|
|
1
|
+
{"version":3,"file":"features/groupSchemaManager/GroupSchemaManager.js","sources":["../../../src/features/groupSchemaManager/GroupSchemaManager.ts"],"sourcesContent":["import { KnexClient } from \"@webiny/api-core-sql\";\nimport { GroupSchemaManager as GroupSchemaManagerAbstraction } from \"./abstractions.js\";\n\nclass GroupSchemaManagerImpl implements GroupSchemaManagerAbstraction.Interface {\n private readonly knex;\n private readonly verified = new Set<string>();\n\n constructor(knex: KnexClient.Interface) {\n this.knex = knex;\n\n const g = globalThis as Record<string, unknown>;\n const managers = (g.__sqlTableManagers ??= []) as GroupSchemaManagerAbstraction.Interface[];\n managers.push(this);\n }\n\n public reset(): void {\n this.verified.clear();\n }\n\n public async ensure(tableName: string): Promise<void> {\n if (this.verified.has(tableName)) {\n return;\n }\n\n const exists = await this.knex.client.schema.hasTable(tableName);\n\n if (!exists) {\n await this.knex.client.schema.createTable(tableName, table => {\n table.text(\"id\").notNullable();\n table.text(\"name\").notNullable();\n table.text(\"slug\").notNullable();\n table.text(\"tenant\").notNullable();\n table.text(\"description\");\n table.text(\"icon\");\n table.text(\"createdBy_id\");\n table.text(\"createdBy_displayName\");\n table.text(\"createdBy_type\");\n table.text(\"createdBy\");\n table.text(\"createdOn\");\n table.text(\"savedOn\");\n table.boolean(\"isPrivate\").notNullable().defaultTo(false);\n table.boolean(\"isPlugin\").notNullable().defaultTo(false);\n\n table.primary([\"tenant\", \"id\"]);\n });\n }\n\n this.verified.add(tableName);\n }\n}\n\nexport const GroupSchemaManager = GroupSchemaManagerAbstraction.createImplementation({\n implementation: GroupSchemaManagerImpl,\n dependencies: [KnexClient]\n});\n"],"names":["GroupSchemaManagerImpl","knex","Set","g","globalThis","managers","tableName","exists","table","GroupSchemaManager","GroupSchemaManagerAbstraction","KnexClient"],"mappings":";;AAGA,MAAMA;IAIF,YAAYC,IAA0B,CAAE;aAFvB,QAAQ,GAAG,IAAIC;QAG5B,IAAI,CAAC,IAAI,GAAGD;QAEZ,MAAME,IAAIC;QACV,MAAMC,WAAYF,EAAE,kBAAkB,KAAK,EAAE;QAC7CE,SAAS,IAAI,CAAC,IAAI;IACtB;IAEO,QAAc;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK;IACvB;IAEA,MAAa,OAAOC,SAAiB,EAAiB;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAClB;QAGJ,MAAMC,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAACD;QAEtD,IAAI,CAACC,QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAACD,WAAWE,CAAAA;YACjDA,MAAM,IAAI,CAAC,MAAM,WAAW;YAC5BA,MAAM,IAAI,CAAC,QAAQ,WAAW;YAC9BA,MAAM,IAAI,CAAC,QAAQ,WAAW;YAC9BA,MAAM,IAAI,CAAC,UAAU,WAAW;YAChCA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,OAAO,CAAC,aAAa,WAAW,GAAG,SAAS,CAAC;YACnDA,MAAM,OAAO,CAAC,YAAY,WAAW,GAAG,SAAS,CAAC;YAElDA,MAAM,OAAO,CAAC;gBAAC;gBAAU;aAAK;QAClC;QAGJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACF;IACtB;AACJ;AAEO,MAAMG,wCAAqBC,mBAAAA,oBAAkD,CAAC;IACjF,gBAAgBV;IAChB,cAAc;QAACW;KAAW;AAC9B"}
|
|
@@ -15,7 +15,7 @@ class ModelSchemaManagerImpl {
|
|
|
15
15
|
if (this.verified.has(tableName)) return;
|
|
16
16
|
const exists = await this.knex.client.schema.hasTable(tableName);
|
|
17
17
|
if (!exists) await this.knex.client.schema.createTable(tableName, (table)=>{
|
|
18
|
-
table.text("modelId").
|
|
18
|
+
table.text("modelId").notNullable();
|
|
19
19
|
table.text("tenant").notNullable();
|
|
20
20
|
table.text("name").notNullable();
|
|
21
21
|
table.text("singularApiName").notNullable();
|
|
@@ -39,6 +39,10 @@ class ModelSchemaManagerImpl {
|
|
|
39
39
|
table.text("createdOn");
|
|
40
40
|
table.text("savedOn");
|
|
41
41
|
table.text("settings");
|
|
42
|
+
table.primary([
|
|
43
|
+
"tenant",
|
|
44
|
+
"modelId"
|
|
45
|
+
]);
|
|
42
46
|
});
|
|
43
47
|
this.verified.add(tableName);
|
|
44
48
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features/modelSchemaManager/ModelSchemaManager.js","sources":["../../../src/features/modelSchemaManager/ModelSchemaManager.ts"],"sourcesContent":["import { KnexClient } from \"@webiny/api-core-sql\";\nimport { ModelSchemaManager as ModelSchemaManagerAbstraction } from \"./abstractions.js\";\n\nclass ModelSchemaManagerImpl implements ModelSchemaManagerAbstraction.Interface {\n private readonly knex;\n private readonly verified = new Set<string>();\n\n constructor(knex: KnexClient.Interface) {\n this.knex = knex;\n\n const g = globalThis as Record<string, unknown>;\n const managers = (g.__sqlTableManagers ??= []) as ModelSchemaManagerAbstraction.Interface[];\n managers.push(this);\n }\n\n public reset(): void {\n this.verified.clear();\n }\n\n public async ensure(tableName: string): Promise<void> {\n if (this.verified.has(tableName)) {\n return;\n }\n\n const exists = await this.knex.client.schema.hasTable(tableName);\n\n if (!exists) {\n await this.knex.client.schema.createTable(tableName, table => {\n table.text(\"modelId\").
|
|
1
|
+
{"version":3,"file":"features/modelSchemaManager/ModelSchemaManager.js","sources":["../../../src/features/modelSchemaManager/ModelSchemaManager.ts"],"sourcesContent":["import { KnexClient } from \"@webiny/api-core-sql\";\nimport { ModelSchemaManager as ModelSchemaManagerAbstraction } from \"./abstractions.js\";\n\nclass ModelSchemaManagerImpl implements ModelSchemaManagerAbstraction.Interface {\n private readonly knex;\n private readonly verified = new Set<string>();\n\n constructor(knex: KnexClient.Interface) {\n this.knex = knex;\n\n const g = globalThis as Record<string, unknown>;\n const managers = (g.__sqlTableManagers ??= []) as ModelSchemaManagerAbstraction.Interface[];\n managers.push(this);\n }\n\n public reset(): void {\n this.verified.clear();\n }\n\n public async ensure(tableName: string): Promise<void> {\n if (this.verified.has(tableName)) {\n return;\n }\n\n const exists = await this.knex.client.schema.hasTable(tableName);\n\n if (!exists) {\n await this.knex.client.schema.createTable(tableName, table => {\n table.text(\"modelId\").notNullable();\n table.text(\"tenant\").notNullable();\n table.text(\"name\").notNullable();\n table.text(\"singularApiName\").notNullable();\n table.text(\"pluralApiName\").notNullable();\n table.text(\"group\").notNullable();\n table.text(\"icon\");\n table.text(\"description\");\n table.text(\"fields\").notNullable();\n table.text(\"layout\").notNullable();\n table.text(\"tags\");\n table.text(\"titleFieldId\").notNullable();\n table.text(\"descriptionFieldId\");\n table.text(\"imageFieldId\");\n table.boolean(\"isPrivate\").notNullable().defaultTo(false);\n table.boolean(\"isPlugin\").notNullable().defaultTo(false);\n table.text(\"authorization\");\n table.text(\"createdBy_id\");\n table.text(\"createdBy_displayName\");\n table.text(\"createdBy_type\");\n table.text(\"createdBy\");\n table.text(\"createdOn\");\n table.text(\"savedOn\");\n table.text(\"settings\");\n\n table.primary([\"tenant\", \"modelId\"]);\n });\n }\n\n this.verified.add(tableName);\n }\n}\n\nexport const ModelSchemaManager = ModelSchemaManagerAbstraction.createImplementation({\n implementation: ModelSchemaManagerImpl,\n dependencies: [KnexClient]\n});\n"],"names":["ModelSchemaManagerImpl","knex","Set","g","globalThis","managers","tableName","exists","table","ModelSchemaManager","ModelSchemaManagerAbstraction","KnexClient"],"mappings":";;AAGA,MAAMA;IAIF,YAAYC,IAA0B,CAAE;aAFvB,QAAQ,GAAG,IAAIC;QAG5B,IAAI,CAAC,IAAI,GAAGD;QAEZ,MAAME,IAAIC;QACV,MAAMC,WAAYF,EAAE,kBAAkB,KAAK,EAAE;QAC7CE,SAAS,IAAI,CAAC,IAAI;IACtB;IAEO,QAAc;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK;IACvB;IAEA,MAAa,OAAOC,SAAiB,EAAiB;QAClD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACA,YAClB;QAGJ,MAAMC,SAAS,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAACD;QAEtD,IAAI,CAACC,QACD,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAACD,WAAWE,CAAAA;YACjDA,MAAM,IAAI,CAAC,WAAW,WAAW;YACjCA,MAAM,IAAI,CAAC,UAAU,WAAW;YAChCA,MAAM,IAAI,CAAC,QAAQ,WAAW;YAC9BA,MAAM,IAAI,CAAC,mBAAmB,WAAW;YACzCA,MAAM,IAAI,CAAC,iBAAiB,WAAW;YACvCA,MAAM,IAAI,CAAC,SAAS,WAAW;YAC/BA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC,UAAU,WAAW;YAChCA,MAAM,IAAI,CAAC,UAAU,WAAW;YAChCA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC,gBAAgB,WAAW;YACtCA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,OAAO,CAAC,aAAa,WAAW,GAAG,SAAS,CAAC;YACnDA,MAAM,OAAO,CAAC,YAAY,WAAW,GAAG,SAAS,CAAC;YAClDA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YACXA,MAAM,IAAI,CAAC;YAEXA,MAAM,OAAO,CAAC;gBAAC;gBAAU;aAAU;QACvC;QAGJ,IAAI,CAAC,QAAQ,CAAC,GAAG,CAACF;IACtB;AACJ;AAEO,MAAMG,wCAAqBC,mBAAAA,oBAAkD,CAAC;IACjF,gBAAgBV;IAChB,cAAc;QAACW;KAAW;AAC9B"}
|
|
@@ -7,6 +7,7 @@ declare class SqlCreateEntryRevisionFromImpl implements CreateEntryRevisionFromS
|
|
|
7
7
|
private readonly knex;
|
|
8
8
|
constructor(knexClient: KnexClient.Interface, entryTableManager: EntryTableManager.Interface);
|
|
9
9
|
private query;
|
|
10
|
+
private modelQuery;
|
|
10
11
|
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsCreateRevisionFromParams<T>): Promise<import("@webiny/api-headless-cms/types/types.js").CmsEntry<T>>;
|
|
11
12
|
}
|
|
12
13
|
export declare const SqlCreateEntryRevisionFrom: typeof SqlCreateEntryRevisionFromImpl & {
|
|
@@ -2,7 +2,7 @@ import { CreateEntryRevisionFromStorageOperation } from "@webiny/api-headless-cm
|
|
|
2
2
|
import { KnexClient } from "@webiny/api-core-sql";
|
|
3
3
|
import { EntryTableManager } from "../../features/entryTableManager/abstractions.js";
|
|
4
4
|
import { entryToRow } from "./mappers.js";
|
|
5
|
-
import { createEntryQuery } from "./queryHelpers.js";
|
|
5
|
+
import { createEntryQuery, createModelEntryQuery } from "./queryHelpers.js";
|
|
6
6
|
class SqlCreateEntryRevisionFromImpl {
|
|
7
7
|
constructor(knexClient, entryTableManager){
|
|
8
8
|
this.entryTableManager = entryTableManager;
|
|
@@ -11,25 +11,28 @@ class SqlCreateEntryRevisionFromImpl {
|
|
|
11
11
|
query() {
|
|
12
12
|
return createEntryQuery(this.knex, this.entryTableManager.getTableName());
|
|
13
13
|
}
|
|
14
|
+
modelQuery(model) {
|
|
15
|
+
return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);
|
|
16
|
+
}
|
|
14
17
|
async execute(model, params) {
|
|
15
18
|
await this.entryTableManager.ensureTable();
|
|
16
19
|
const isPublished = "published" === params.entry.status;
|
|
17
|
-
const oldLatestRows = await this.
|
|
20
|
+
const oldLatestRows = await this.modelQuery(model).andWhere("entryId", params.entry.entryId).andWhere("isLatest", true);
|
|
18
21
|
for (const row of oldLatestRows){
|
|
19
22
|
const parsed = JSON.parse(row.data);
|
|
20
23
|
parsed.isLatest = false;
|
|
21
|
-
await this.
|
|
24
|
+
await this.modelQuery(model).andWhere("id", row.id).update({
|
|
22
25
|
isLatest: false,
|
|
23
26
|
data: JSON.stringify(parsed)
|
|
24
27
|
});
|
|
25
28
|
}
|
|
26
29
|
if (isPublished) {
|
|
27
|
-
const oldPublishedRows = await this.
|
|
30
|
+
const oldPublishedRows = await this.modelQuery(model).andWhere("entryId", params.entry.entryId).andWhere("isPublished", true);
|
|
28
31
|
for (const row of oldPublishedRows){
|
|
29
32
|
const parsed = JSON.parse(row.data);
|
|
30
33
|
parsed.isPublished = false;
|
|
31
34
|
parsed.status = "unpublished";
|
|
32
|
-
await this.
|
|
35
|
+
await this.modelQuery(model).andWhere("id", row.id).update({
|
|
33
36
|
isPublished: false,
|
|
34
37
|
data: JSON.stringify(parsed)
|
|
35
38
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlCreateEntryRevisionFrom.js","sources":["../../../src/operations/entry/SqlCreateEntryRevisionFrom.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsCreateRevisionFromParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { CreateEntryRevisionFromStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport { createEntryQuery } from \"./queryHelpers.js\";\n\nclass SqlCreateEntryRevisionFromImpl implements CreateEntryRevisionFromStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n private query(): Knex.QueryBuilder<IEntryRow> {\n return createEntryQuery(this.knex, this.entryTableManager.getTableName());\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsCreateRevisionFromParams<T>\n ) {\n await this.entryTableManager.ensureTable();\n\n const isPublished = params.entry.status === \"published\";\n\n const oldLatestRows = await this.
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlCreateEntryRevisionFrom.js","sources":["../../../src/operations/entry/SqlCreateEntryRevisionFrom.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsCreateRevisionFromParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { CreateEntryRevisionFromStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/CreateEntryRevisionFromStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport { createEntryQuery, createModelEntryQuery } from \"./queryHelpers.js\";\n\nclass SqlCreateEntryRevisionFromImpl implements CreateEntryRevisionFromStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n private query(): Knex.QueryBuilder<IEntryRow> {\n return createEntryQuery(this.knex, this.entryTableManager.getTableName());\n }\n\n private modelQuery(model: CmsModel): Knex.QueryBuilder<IEntryRow> {\n return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsCreateRevisionFromParams<T>\n ) {\n await this.entryTableManager.ensureTable();\n\n const isPublished = params.entry.status === \"published\";\n\n const oldLatestRows = await this.modelQuery(model)\n .andWhere(\"entryId\", params.entry.entryId)\n .andWhere(\"isLatest\", true);\n\n for (const row of oldLatestRows) {\n const parsed = JSON.parse(row.data);\n parsed.isLatest = false;\n\n await this.modelQuery(model)\n .andWhere(\"id\", row.id)\n .update({ isLatest: false, data: JSON.stringify(parsed) });\n }\n\n if (isPublished) {\n const oldPublishedRows = await this.modelQuery(model)\n .andWhere(\"entryId\", params.entry.entryId)\n .andWhere(\"isPublished\", true);\n\n for (const row of oldPublishedRows) {\n const parsed = JSON.parse(row.data);\n parsed.isPublished = false;\n parsed.status = \"unpublished\";\n\n await this.modelQuery(model)\n .andWhere(\"id\", row.id)\n .update({ isPublished: false, data: JSON.stringify(parsed) });\n }\n }\n\n const se = params.storageEntry as CmsStorageEntry;\n se.isLatest = true;\n se.isPublished = isPublished;\n\n const row = entryToRow(se);\n await this.query().insert(row);\n\n return params.entry;\n }\n}\n\nexport const SqlCreateEntryRevisionFrom =\n CreateEntryRevisionFromStorageOperation.createImplementation({\n implementation: SqlCreateEntryRevisionFromImpl,\n dependencies: [KnexClient, EntryTableManager]\n });\n"],"names":["SqlCreateEntryRevisionFromImpl","knexClient","entryTableManager","createEntryQuery","model","createModelEntryQuery","params","isPublished","oldLatestRows","row","parsed","JSON","oldPublishedRows","se","entryToRow","SqlCreateEntryRevisionFrom","CreateEntryRevisionFromStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;;AAcA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEQ,QAAsC;QAC1C,OAAOE,iBAAiB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY;IAC1E;IAEQ,WAAWC,KAAe,EAAgC;QAC9D,OAAOC,sBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAID;IACnF;IAEA,MAAM,QACFA,KAAe,EACfE,MAA4D,EAC9D;QACE,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAMC,cAAcD,AAAwB,gBAAxBA,OAAO,KAAK,CAAC,MAAM;QAEvC,MAAME,gBAAgB,MAAM,IAAI,CAAC,UAAU,CAACJ,OACvC,QAAQ,CAAC,WAAWE,OAAO,KAAK,CAAC,OAAO,EACxC,QAAQ,CAAC,YAAY;QAE1B,KAAK,MAAMG,OAAOD,cAAe;YAC7B,MAAME,SAASC,KAAK,KAAK,CAACF,IAAI,IAAI;YAClCC,OAAO,QAAQ,GAAG;YAElB,MAAM,IAAI,CAAC,UAAU,CAACN,OACjB,QAAQ,CAAC,MAAMK,IAAI,EAAE,EACrB,MAAM,CAAC;gBAAE,UAAU;gBAAO,MAAME,KAAK,SAAS,CAACD;YAAQ;QAChE;QAEA,IAAIH,aAAa;YACb,MAAMK,mBAAmB,MAAM,IAAI,CAAC,UAAU,CAACR,OAC1C,QAAQ,CAAC,WAAWE,OAAO,KAAK,CAAC,OAAO,EACxC,QAAQ,CAAC,eAAe;YAE7B,KAAK,MAAMG,OAAOG,iBAAkB;gBAChC,MAAMF,SAASC,KAAK,KAAK,CAACF,IAAI,IAAI;gBAClCC,OAAO,WAAW,GAAG;gBACrBA,OAAO,MAAM,GAAG;gBAEhB,MAAM,IAAI,CAAC,UAAU,CAACN,OACjB,QAAQ,CAAC,MAAMK,IAAI,EAAE,EACrB,MAAM,CAAC;oBAAE,aAAa;oBAAO,MAAME,KAAK,SAAS,CAACD;gBAAQ;YACnE;QACJ;QAEA,MAAMG,KAAKP,OAAO,YAAY;QAC9BO,GAAG,QAAQ,GAAG;QACdA,GAAG,WAAW,GAAGN;QAEjB,MAAME,MAAMK,WAAWD;QACvB,MAAM,IAAI,CAAC,KAAK,GAAG,MAAM,CAACJ;QAE1B,OAAOH,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMS,6BACTC,wCAAwC,oBAAoB,CAAC;IACzD,gBAAgBhB;IAChB,cAAc;QAACiB;QAAYC;KAAkB;AACjD"}
|
|
@@ -6,7 +6,7 @@ declare class SqlDeleteEntryImpl implements DeleteEntryStorageOperation.Interfac
|
|
|
6
6
|
private readonly entryTableManager;
|
|
7
7
|
private readonly knex;
|
|
8
8
|
constructor(knexClient: KnexClient.Interface, entryTableManager: EntryTableManager.Interface);
|
|
9
|
-
private
|
|
9
|
+
private modelQuery;
|
|
10
10
|
execute(model: CmsModel, params: CmsEntryStorageOperationsDeleteParams): Promise<void>;
|
|
11
11
|
}
|
|
12
12
|
export declare const SqlDeleteEntry: typeof SqlDeleteEntryImpl & {
|
|
@@ -2,19 +2,19 @@ import { DeleteEntryStorageOperation } from "@webiny/api-headless-cms/features/s
|
|
|
2
2
|
import { KnexClient } from "@webiny/api-core-sql";
|
|
3
3
|
import { EntryTableManager } from "../../features/entryTableManager/abstractions.js";
|
|
4
4
|
import { parseIdentifier } from "@webiny/utils";
|
|
5
|
-
import {
|
|
5
|
+
import { createModelEntryQuery } from "./queryHelpers.js";
|
|
6
6
|
class SqlDeleteEntryImpl {
|
|
7
7
|
constructor(knexClient, entryTableManager){
|
|
8
8
|
this.entryTableManager = entryTableManager;
|
|
9
9
|
this.knex = knexClient.client;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
return
|
|
11
|
+
modelQuery(model) {
|
|
12
|
+
return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);
|
|
13
13
|
}
|
|
14
14
|
async execute(model, params) {
|
|
15
15
|
await this.entryTableManager.ensureTable();
|
|
16
16
|
const { id: entryId } = parseIdentifier(params.entry.id);
|
|
17
|
-
await this.
|
|
17
|
+
await this.modelQuery(model).andWhere("entryId", entryId).delete();
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
const SqlDeleteEntry = DeleteEntryStorageOperation.createImplementation({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlDeleteEntry.js","sources":["../../../src/operations/entry/SqlDeleteEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsDeleteParams,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { DeleteEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport type { IEntryRow } from \"./types.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlDeleteEntry.js","sources":["../../../src/operations/entry/SqlDeleteEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsDeleteParams,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { DeleteEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/DeleteEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport type { IEntryRow } from \"./types.js\";\nimport { createModelEntryQuery } from \"./queryHelpers.js\";\n\nclass SqlDeleteEntryImpl implements DeleteEntryStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n private modelQuery(model: CmsModel): Knex.QueryBuilder<IEntryRow> {\n return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);\n }\n\n async execute(model: CmsModel, params: CmsEntryStorageOperationsDeleteParams) {\n await this.entryTableManager.ensureTable();\n\n const { id: entryId } = parseIdentifier(params.entry.id);\n\n await this.modelQuery(model).andWhere(\"entryId\", entryId).delete();\n }\n}\n\nexport const SqlDeleteEntry = DeleteEntryStorageOperation.createImplementation({\n implementation: SqlDeleteEntryImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlDeleteEntryImpl","knexClient","entryTableManager","model","createModelEntryQuery","params","entryId","parseIdentifier","SqlDeleteEntry","DeleteEntryStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;;AAYA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEQ,WAAWE,KAAe,EAAgC;QAC9D,OAAOC,sBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAID;IACnF;IAEA,MAAM,QAAQA,KAAe,EAAEE,MAA6C,EAAE;QAC1E,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAM,EAAE,IAAIC,OAAO,EAAE,GAAGC,gBAAgBF,OAAO,KAAK,CAAC,EAAE;QAEvD,MAAM,IAAI,CAAC,UAAU,CAACF,OAAO,QAAQ,CAAC,WAAWG,SAAS,MAAM;IACpE;AACJ;AAEO,MAAME,iBAAiBC,4BAA4B,oBAAoB,CAAC;IAC3E,gBAAgBT;IAChB,cAAc;QAACU;QAAYC;KAAkB;AACjD"}
|
|
@@ -6,7 +6,7 @@ declare class SqlDeleteEntryRevisionImpl implements DeleteEntryRevisionStorageOp
|
|
|
6
6
|
private readonly entryTableManager;
|
|
7
7
|
private readonly knex;
|
|
8
8
|
constructor(knexClient: KnexClient.Interface, entryTableManager: EntryTableManager.Interface);
|
|
9
|
-
private
|
|
9
|
+
private modelQuery;
|
|
10
10
|
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsDeleteRevisionParams<T>): Promise<void>;
|
|
11
11
|
}
|
|
12
12
|
export declare const SqlDeleteEntryRevision: typeof SqlDeleteEntryRevisionImpl & {
|
|
@@ -2,20 +2,20 @@ import { DeleteEntryRevisionStorageOperation } from "@webiny/api-headless-cms/fe
|
|
|
2
2
|
import { KnexClient } from "@webiny/api-core-sql";
|
|
3
3
|
import { EntryTableManager } from "../../features/entryTableManager/abstractions.js";
|
|
4
4
|
import { entryToRow } from "./mappers.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createModelEntryQuery, patchAllEntryRevisions } from "./queryHelpers.js";
|
|
6
6
|
class SqlDeleteEntryRevisionImpl {
|
|
7
7
|
constructor(knexClient, entryTableManager){
|
|
8
8
|
this.entryTableManager = entryTableManager;
|
|
9
9
|
this.knex = knexClient.client;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
return
|
|
11
|
+
modelQuery(model) {
|
|
12
|
+
return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);
|
|
13
13
|
}
|
|
14
14
|
async execute(model, params) {
|
|
15
15
|
await this.entryTableManager.ensureTable();
|
|
16
16
|
const wasPublished = "published" === params.storageEntry.status;
|
|
17
|
-
await this.
|
|
18
|
-
if (wasPublished) await patchAllEntryRevisions(this.knex, this.entryTableManager.getTableName(), params.storageEntry.entryId,
|
|
17
|
+
await this.modelQuery(model).andWhere("id", params.storageEntry.id).delete();
|
|
18
|
+
if (wasPublished) await patchAllEntryRevisions(this.knex, this.entryTableManager.getTableName(), model, params.storageEntry.entryId, (parsed)=>{
|
|
19
19
|
parsed.live = null;
|
|
20
20
|
});
|
|
21
21
|
if (params.latestStorageEntry) {
|
|
@@ -23,7 +23,7 @@ class SqlDeleteEntryRevisionImpl {
|
|
|
23
23
|
latestParsed.isLatest = true;
|
|
24
24
|
if (wasPublished) latestParsed.live = null;
|
|
25
25
|
const latestRow = entryToRow(latestParsed);
|
|
26
|
-
await this.
|
|
26
|
+
await this.modelQuery(model).andWhere("id", params.latestStorageEntry.id).update(latestRow);
|
|
27
27
|
}
|
|
28
28
|
}
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlDeleteEntryRevision.js","sources":["../../../src/operations/entry/SqlDeleteEntryRevision.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsDeleteRevisionParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { DeleteEntryRevisionStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlDeleteEntryRevision.js","sources":["../../../src/operations/entry/SqlDeleteEntryRevision.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsDeleteRevisionParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { DeleteEntryRevisionStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/DeleteEntryRevisionStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport { createModelEntryQuery, patchAllEntryRevisions } from \"./queryHelpers.js\";\n\nclass SqlDeleteEntryRevisionImpl implements DeleteEntryRevisionStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n private modelQuery(model: CmsModel): Knex.QueryBuilder<IEntryRow> {\n return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsDeleteRevisionParams<T>\n ) {\n await this.entryTableManager.ensureTable();\n\n const wasPublished = params.storageEntry.status === \"published\";\n\n await this.modelQuery(model).andWhere(\"id\", params.storageEntry.id).delete();\n\n if (wasPublished) {\n await patchAllEntryRevisions(\n this.knex,\n this.entryTableManager.getTableName(),\n model,\n params.storageEntry.entryId,\n parsed => {\n parsed.live = null;\n }\n );\n }\n\n if (params.latestStorageEntry) {\n const latestParsed = structuredClone(params.latestStorageEntry);\n latestParsed.isLatest = true;\n\n if (wasPublished) {\n latestParsed.live = null;\n }\n\n const latestRow = entryToRow(latestParsed as CmsStorageEntry);\n\n await this.modelQuery(model)\n .andWhere(\"id\", params.latestStorageEntry.id)\n .update(latestRow);\n }\n }\n}\n\nexport const SqlDeleteEntryRevision = DeleteEntryRevisionStorageOperation.createImplementation({\n implementation: SqlDeleteEntryRevisionImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlDeleteEntryRevisionImpl","knexClient","entryTableManager","model","createModelEntryQuery","params","wasPublished","patchAllEntryRevisions","parsed","latestParsed","structuredClone","latestRow","entryToRow","SqlDeleteEntryRevision","DeleteEntryRevisionStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;;AAcA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEQ,WAAWE,KAAe,EAAgC;QAC9D,OAAOC,sBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAID;IACnF;IAEA,MAAM,QACFA,KAAe,EACfE,MAAwD,EAC1D;QACE,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAMC,eAAeD,AAA+B,gBAA/BA,OAAO,YAAY,CAAC,MAAM;QAE/C,MAAM,IAAI,CAAC,UAAU,CAACF,OAAO,QAAQ,CAAC,MAAME,OAAO,YAAY,CAAC,EAAE,EAAE,MAAM;QAE1E,IAAIC,cACA,MAAMC,uBACF,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,iBAAiB,CAAC,YAAY,IACnCJ,OACAE,OAAO,YAAY,CAAC,OAAO,EAC3BG,CAAAA;YACIA,OAAO,IAAI,GAAG;QAClB;QAIR,IAAIH,OAAO,kBAAkB,EAAE;YAC3B,MAAMI,eAAeC,gBAAgBL,OAAO,kBAAkB;YAC9DI,aAAa,QAAQ,GAAG;YAExB,IAAIH,cACAG,aAAa,IAAI,GAAG;YAGxB,MAAME,YAAYC,WAAWH;YAE7B,MAAM,IAAI,CAAC,UAAU,CAACN,OACjB,QAAQ,CAAC,MAAME,OAAO,kBAAkB,CAAC,EAAE,EAC3C,MAAM,CAACM;QAChB;IACJ;AACJ;AAEO,MAAME,yBAAyBC,oCAAoC,oBAAoB,CAAC;IAC3F,gBAAgBd;IAChB,cAAc;QAACe;QAAYC;KAAkB;AACjD"}
|
|
@@ -6,7 +6,7 @@ declare class SqlDeleteMultipleEntriesImpl implements DeleteMultipleEntriesStora
|
|
|
6
6
|
private readonly entryTableManager;
|
|
7
7
|
private readonly knex;
|
|
8
8
|
constructor(knexClient: KnexClient.Interface, entryTableManager: EntryTableManager.Interface);
|
|
9
|
-
private
|
|
9
|
+
private modelQuery;
|
|
10
10
|
execute(model: CmsModel, params: CmsEntryStorageOperationsDeleteEntriesParams): Promise<void>;
|
|
11
11
|
}
|
|
12
12
|
export declare const SqlDeleteMultipleEntries: typeof SqlDeleteMultipleEntriesImpl & {
|
|
@@ -2,19 +2,19 @@ import { DeleteMultipleEntriesStorageOperation } from "@webiny/api-headless-cms/
|
|
|
2
2
|
import { KnexClient } from "@webiny/api-core-sql";
|
|
3
3
|
import { EntryTableManager } from "../../features/entryTableManager/abstractions.js";
|
|
4
4
|
import { parseIdentifier } from "@webiny/utils";
|
|
5
|
-
import {
|
|
5
|
+
import { createModelEntryQuery } from "./queryHelpers.js";
|
|
6
6
|
class SqlDeleteMultipleEntriesImpl {
|
|
7
7
|
constructor(knexClient, entryTableManager){
|
|
8
8
|
this.entryTableManager = entryTableManager;
|
|
9
9
|
this.knex = knexClient.client;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
return
|
|
11
|
+
modelQuery(model) {
|
|
12
|
+
return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);
|
|
13
13
|
}
|
|
14
14
|
async execute(model, params) {
|
|
15
15
|
await this.entryTableManager.ensureTable();
|
|
16
16
|
const entryIds = params.entries.map((id)=>parseIdentifier(id).id);
|
|
17
|
-
await this.
|
|
17
|
+
await this.modelQuery(model).whereIn("entryId", entryIds).delete();
|
|
18
18
|
}
|
|
19
19
|
}
|
|
20
20
|
const SqlDeleteMultipleEntries = DeleteMultipleEntriesStorageOperation.createImplementation({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlDeleteMultipleEntries.js","sources":["../../../src/operations/entry/SqlDeleteMultipleEntries.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsDeleteEntriesParams,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { DeleteMultipleEntriesStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport type { IEntryRow } from \"./types.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlDeleteMultipleEntries.js","sources":["../../../src/operations/entry/SqlDeleteMultipleEntries.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsDeleteEntriesParams,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { DeleteMultipleEntriesStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/DeleteMultipleEntriesStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport type { IEntryRow } from \"./types.js\";\nimport { createModelEntryQuery } from \"./queryHelpers.js\";\n\nclass SqlDeleteMultipleEntriesImpl implements DeleteMultipleEntriesStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n private modelQuery(model: CmsModel): Knex.QueryBuilder<IEntryRow> {\n return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);\n }\n\n async execute(model: CmsModel, params: CmsEntryStorageOperationsDeleteEntriesParams) {\n await this.entryTableManager.ensureTable();\n\n const entryIds = params.entries.map(id => parseIdentifier(id).id);\n\n await this.modelQuery(model).whereIn(\"entryId\", entryIds).delete();\n }\n}\n\nexport const SqlDeleteMultipleEntries = DeleteMultipleEntriesStorageOperation.createImplementation({\n implementation: SqlDeleteMultipleEntriesImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlDeleteMultipleEntriesImpl","knexClient","entryTableManager","model","createModelEntryQuery","params","entryIds","id","parseIdentifier","SqlDeleteMultipleEntries","DeleteMultipleEntriesStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;;AAYA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEQ,WAAWE,KAAe,EAAgC;QAC9D,OAAOC,sBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAID;IACnF;IAEA,MAAM,QAAQA,KAAe,EAAEE,MAAoD,EAAE;QACjF,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAMC,WAAWD,OAAO,OAAO,CAAC,GAAG,CAACE,CAAAA,KAAMC,gBAAgBD,IAAI,EAAE;QAEhE,MAAM,IAAI,CAAC,UAAU,CAACJ,OAAO,OAAO,CAAC,WAAWG,UAAU,MAAM;IACpE;AACJ;AAEO,MAAMG,2BAA2BC,sCAAsC,oBAAoB,CAAC;IAC/F,gBAAgBV;IAChB,cAAc;QAACW;QAAYC;KAAkB;AACjD"}
|
|
@@ -11,7 +11,7 @@ class SqlMoveEntryImpl {
|
|
|
11
11
|
async execute(model, id, folderId) {
|
|
12
12
|
await this.entryTableManager.ensureTable();
|
|
13
13
|
const { id: entryId } = parseIdentifier(id);
|
|
14
|
-
await patchAllEntryRevisions(this.knex, this.entryTableManager.getTableName(),
|
|
14
|
+
await patchAllEntryRevisions(this.knex, this.entryTableManager.getTableName(), model, entryId, (parsed)=>{
|
|
15
15
|
parsed.location = {
|
|
16
16
|
folderId
|
|
17
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlMoveEntry.js","sources":["../../../src/operations/entry/SqlMoveEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { MoveEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { patchAllEntryRevisions } from \"./queryHelpers.js\";\n\nclass SqlMoveEntryImpl implements MoveEntryStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n async execute(model: CmsModel, id: string, folderId: string) {\n await this.entryTableManager.ensureTable();\n\n const { id: entryId } = parseIdentifier(id);\n\n await patchAllEntryRevisions(\n this.knex,\n this.entryTableManager.getTableName(),\n
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlMoveEntry.js","sources":["../../../src/operations/entry/SqlMoveEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type { CmsModel } from \"@webiny/api-headless-cms/types/index.js\";\nimport { MoveEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { parseIdentifier } from \"@webiny/utils\";\nimport { patchAllEntryRevisions } from \"./queryHelpers.js\";\n\nclass SqlMoveEntryImpl implements MoveEntryStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n async execute(model: CmsModel, id: string, folderId: string) {\n await this.entryTableManager.ensureTable();\n\n const { id: entryId } = parseIdentifier(id);\n\n await patchAllEntryRevisions(\n this.knex,\n this.entryTableManager.getTableName(),\n model,\n entryId,\n parsed => {\n parsed.location = { folderId };\n }\n );\n }\n}\n\nexport const SqlMoveEntry = MoveEntryStorageOperation.createImplementation({\n implementation: SqlMoveEntryImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlMoveEntryImpl","knexClient","entryTableManager","model","id","folderId","entryId","parseIdentifier","patchAllEntryRevisions","parsed","SqlMoveEntry","MoveEntryStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;;AAQA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEA,MAAM,QAAQE,KAAe,EAAEC,EAAU,EAAEC,QAAgB,EAAE;QACzD,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAM,EAAE,IAAIC,OAAO,EAAE,GAAGC,gBAAgBH;QAExC,MAAMI,uBACF,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,iBAAiB,CAAC,YAAY,IACnCL,OACAG,SACAG,CAAAA;YACIA,OAAO,QAAQ,GAAG;gBAAEJ;YAAS;QACjC;IAER;AACJ;AAEO,MAAMK,eAAeC,0BAA0B,oBAAoB,CAAC;IACvE,gBAAgBX;IAChB,cAAc;QAACY;QAAYC;KAAkB;AACjD"}
|
|
@@ -9,7 +9,7 @@ class SqlMoveToBinImpl {
|
|
|
9
9
|
}
|
|
10
10
|
async execute(model, params) {
|
|
11
11
|
await this.entryTableManager.ensureTable();
|
|
12
|
-
await patchAllEntryRevisions(this.knex, this.entryTableManager.getTableName(), params.entry.entryId,
|
|
12
|
+
await patchAllEntryRevisions(this.knex, this.entryTableManager.getTableName(), model, params.entry.entryId, (parsed)=>{
|
|
13
13
|
const p = parsed;
|
|
14
14
|
p["wbyDeleted"] = true;
|
|
15
15
|
p["binOriginalFolderId"] = params.storageEntry.binOriginalFolderId ?? null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlMoveToBin.js","sources":["../../../src/operations/entry/SqlMoveToBin.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsMoveToBinParams,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { MoveToBinStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveToBinStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { patchAllEntryRevisions } from \"./queryHelpers.js\";\n\nclass SqlMoveToBinImpl implements MoveToBinStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n async execute(model: CmsModel, params: CmsEntryStorageOperationsMoveToBinParams) {\n await this.entryTableManager.ensureTable();\n\n await patchAllEntryRevisions(\n this.knex,\n this.entryTableManager.getTableName(),\n params.entry.entryId,\n
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlMoveToBin.js","sources":["../../../src/operations/entry/SqlMoveToBin.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsMoveToBinParams,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { MoveToBinStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveToBinStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { patchAllEntryRevisions } from \"./queryHelpers.js\";\n\nclass SqlMoveToBinImpl implements MoveToBinStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n async execute(model: CmsModel, params: CmsEntryStorageOperationsMoveToBinParams) {\n await this.entryTableManager.ensureTable();\n\n await patchAllEntryRevisions(\n this.knex,\n this.entryTableManager.getTableName(),\n model,\n params.entry.entryId,\n parsed => {\n const p = parsed as unknown as Record<string, unknown>;\n p[\"wbyDeleted\"] = true;\n p[\"binOriginalFolderId\"] = params.storageEntry.binOriginalFolderId ?? null;\n p[\"location\"] = params.storageEntry.location ?? null;\n\n const fields = Object.keys(params.storageEntry);\n for (const field of fields) {\n if (field === \"createdOn\" || field === \"createdBy\") {\n continue;\n }\n if (\n (field.endsWith(\"On\") || field.endsWith(\"By\")) &&\n !field.startsWith(\"revision\")\n ) {\n p[field] = (params.storageEntry as Record<string, unknown>)[field];\n }\n }\n },\n {\n wbyDeleted: true\n }\n );\n }\n}\n\nexport const SqlMoveToBin = MoveToBinStorageOperation.createImplementation({\n implementation: SqlMoveToBinImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlMoveToBinImpl","knexClient","entryTableManager","model","params","patchAllEntryRevisions","parsed","p","fields","Object","field","SqlMoveToBin","MoveToBinStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;AAUA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEA,MAAM,QAAQE,KAAe,EAAEC,MAAgD,EAAE;QAC7E,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAMC,uBACF,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,iBAAiB,CAAC,YAAY,IACnCF,OACAC,OAAO,KAAK,CAAC,OAAO,EACpBE,CAAAA;YACI,MAAMC,IAAID;YACVC,CAAC,CAAC,aAAa,GAAG;YAClBA,CAAC,CAAC,sBAAsB,GAAGH,OAAO,YAAY,CAAC,mBAAmB,IAAI;YACtEG,CAAC,CAAC,WAAW,GAAGH,OAAO,YAAY,CAAC,QAAQ,IAAI;YAEhD,MAAMI,SAASC,OAAO,IAAI,CAACL,OAAO,YAAY;YAC9C,KAAK,MAAMM,SAASF,OAChB,IAAIE,AAAU,gBAAVA,SAAyBA,AAAU,gBAAVA,OAG7B;gBAAA,IACKA,AAAAA,CAAAA,MAAM,QAAQ,CAAC,SAASA,MAAM,QAAQ,CAAC,KAAI,KAC5C,CAACA,MAAM,UAAU,CAAC,aAElBH,CAAC,CAACG,MAAM,GAAIN,OAAO,YAAwC,CAACM,MAAM;YACtE;QAER,GACA;YACI,YAAY;QAChB;IAER;AACJ;AAEO,MAAMC,eAAeC,0BAA0B,oBAAoB,CAAC;IACvE,gBAAgBZ;IAChB,cAAc;QAACa;QAAYC;KAAkB;AACjD"}
|
|
@@ -6,7 +6,7 @@ declare class SqlPublishEntryImpl implements PublishEntryStorageOperation.Interf
|
|
|
6
6
|
private readonly entryTableManager;
|
|
7
7
|
private readonly knex;
|
|
8
8
|
constructor(knexClient: KnexClient.Interface, entryTableManager: EntryTableManager.Interface);
|
|
9
|
-
private
|
|
9
|
+
private modelQuery;
|
|
10
10
|
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsPublishParams<T>): Promise<import("@webiny/api-headless-cms/types/types.js").CmsEntry<T>>;
|
|
11
11
|
}
|
|
12
12
|
export declare const SqlPublishEntry: typeof SqlPublishEntryImpl & {
|
|
@@ -2,38 +2,38 @@ import { PublishEntryStorageOperation } from "@webiny/api-headless-cms/features/
|
|
|
2
2
|
import { KnexClient } from "@webiny/api-core-sql";
|
|
3
3
|
import { EntryTableManager } from "../../features/entryTableManager/abstractions.js";
|
|
4
4
|
import { entryToRow } from "./mappers.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createModelEntryQuery, syncEntryToLatest } from "./queryHelpers.js";
|
|
6
6
|
class SqlPublishEntryImpl {
|
|
7
7
|
constructor(knexClient, entryTableManager){
|
|
8
8
|
this.entryTableManager = entryTableManager;
|
|
9
9
|
this.knex = knexClient.client;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
return
|
|
11
|
+
modelQuery(model) {
|
|
12
|
+
return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);
|
|
13
13
|
}
|
|
14
14
|
async execute(model, params) {
|
|
15
15
|
await this.entryTableManager.ensureTable();
|
|
16
|
-
const oldPublishedRows = await this.
|
|
16
|
+
const oldPublishedRows = await this.modelQuery(model).andWhere("entryId", params.entry.entryId).andWhere("isPublished", true);
|
|
17
17
|
for (const row of oldPublishedRows){
|
|
18
18
|
const parsed = JSON.parse(row.data);
|
|
19
19
|
parsed.isPublished = false;
|
|
20
20
|
parsed.status = "unpublished";
|
|
21
|
-
await this.
|
|
21
|
+
await this.modelQuery(model).andWhere("id", row.id).update({
|
|
22
22
|
isPublished: false,
|
|
23
23
|
data: JSON.stringify(parsed)
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
-
const existing = await this.
|
|
26
|
+
const existing = await this.modelQuery(model).andWhere("id", params.storageEntry.id).first();
|
|
27
27
|
const se = params.storageEntry;
|
|
28
28
|
se.isLatest = existing?.isLatest ?? se.isLatest;
|
|
29
29
|
se.isPublished = true;
|
|
30
30
|
const row = entryToRow(se);
|
|
31
31
|
const { isLatest: _il, ...rowWithoutIsLatest } = row;
|
|
32
|
-
await this.
|
|
32
|
+
await this.modelQuery(model).andWhere("id", params.storageEntry.id).update(rowWithoutIsLatest);
|
|
33
33
|
const liveValue = {
|
|
34
34
|
version: params.entry.version
|
|
35
35
|
};
|
|
36
|
-
await syncEntryToLatest(this.knex, this.entryTableManager.getTableName(), se, (latest)=>{
|
|
36
|
+
await syncEntryToLatest(this.knex, this.entryTableManager.getTableName(), model, se, (latest)=>{
|
|
37
37
|
latest.live = liveValue;
|
|
38
38
|
});
|
|
39
39
|
return params.entry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlPublishEntry.js","sources":["../../../src/operations/entry/SqlPublishEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsPublishParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { PublishEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/PublishEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlPublishEntry.js","sources":["../../../src/operations/entry/SqlPublishEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsPublishParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { PublishEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/PublishEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport { createModelEntryQuery, syncEntryToLatest } from \"./queryHelpers.js\";\n\nclass SqlPublishEntryImpl implements PublishEntryStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n private modelQuery(model: CmsModel): Knex.QueryBuilder<IEntryRow> {\n return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsPublishParams<T>\n ) {\n await this.entryTableManager.ensureTable();\n\n const oldPublishedRows = await this.modelQuery(model)\n .andWhere(\"entryId\", params.entry.entryId)\n .andWhere(\"isPublished\", true);\n\n for (const row of oldPublishedRows) {\n const parsed = JSON.parse(row.data);\n parsed.isPublished = false;\n parsed.status = \"unpublished\";\n\n await this.modelQuery(model)\n .andWhere(\"id\", row.id)\n .update({ isPublished: false, data: JSON.stringify(parsed) });\n }\n\n const existing = await this.modelQuery(model)\n .andWhere(\"id\", params.storageEntry.id)\n .first();\n const se = params.storageEntry as CmsStorageEntry;\n se.isLatest = existing?.isLatest ?? se.isLatest;\n se.isPublished = true;\n\n const row = entryToRow(se);\n const { isLatest: _il, ...rowWithoutIsLatest } = row;\n\n await this.modelQuery(model)\n .andWhere(\"id\", params.storageEntry.id)\n .update(rowWithoutIsLatest);\n\n const liveValue = { version: params.entry.version };\n await syncEntryToLatest(\n this.knex,\n this.entryTableManager.getTableName(),\n model,\n se,\n latest => {\n latest.live = liveValue;\n }\n );\n\n return params.entry;\n }\n}\n\nexport const SqlPublishEntry = PublishEntryStorageOperation.createImplementation({\n implementation: SqlPublishEntryImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlPublishEntryImpl","knexClient","entryTableManager","model","createModelEntryQuery","params","oldPublishedRows","row","parsed","JSON","existing","se","entryToRow","_il","rowWithoutIsLatest","liveValue","syncEntryToLatest","latest","SqlPublishEntry","PublishEntryStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;;AAcA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEQ,WAAWE,KAAe,EAAgC;QAC9D,OAAOC,sBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAID;IACnF;IAEA,MAAM,QACFA,KAAe,EACfE,MAAiD,EACnD;QACE,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAMC,mBAAmB,MAAM,IAAI,CAAC,UAAU,CAACH,OAC1C,QAAQ,CAAC,WAAWE,OAAO,KAAK,CAAC,OAAO,EACxC,QAAQ,CAAC,eAAe;QAE7B,KAAK,MAAME,OAAOD,iBAAkB;YAChC,MAAME,SAASC,KAAK,KAAK,CAACF,IAAI,IAAI;YAClCC,OAAO,WAAW,GAAG;YACrBA,OAAO,MAAM,GAAG;YAEhB,MAAM,IAAI,CAAC,UAAU,CAACL,OACjB,QAAQ,CAAC,MAAMI,IAAI,EAAE,EACrB,MAAM,CAAC;gBAAE,aAAa;gBAAO,MAAME,KAAK,SAAS,CAACD;YAAQ;QACnE;QAEA,MAAME,WAAW,MAAM,IAAI,CAAC,UAAU,CAACP,OAClC,QAAQ,CAAC,MAAME,OAAO,YAAY,CAAC,EAAE,EACrC,KAAK;QACV,MAAMM,KAAKN,OAAO,YAAY;QAC9BM,GAAG,QAAQ,GAAGD,UAAU,YAAYC,GAAG,QAAQ;QAC/CA,GAAG,WAAW,GAAG;QAEjB,MAAMJ,MAAMK,WAAWD;QACvB,MAAM,EAAE,UAAUE,GAAG,EAAE,GAAGC,oBAAoB,GAAGP;QAEjD,MAAM,IAAI,CAAC,UAAU,CAACJ,OACjB,QAAQ,CAAC,MAAME,OAAO,YAAY,CAAC,EAAE,EACrC,MAAM,CAACS;QAEZ,MAAMC,YAAY;YAAE,SAASV,OAAO,KAAK,CAAC,OAAO;QAAC;QAClD,MAAMW,kBACF,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,iBAAiB,CAAC,YAAY,IACnCb,OACAQ,IACAM,CAAAA;YACIA,OAAO,IAAI,GAAGF;QAClB;QAGJ,OAAOV,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMa,kBAAkBC,6BAA6B,oBAAoB,CAAC;IAC7E,gBAAgBnB;IAChB,cAAc;QAACoB;QAAYC;KAAkB;AACjD"}
|
|
@@ -9,7 +9,7 @@ class SqlRestoreFromBinImpl {
|
|
|
9
9
|
}
|
|
10
10
|
async execute(model, params) {
|
|
11
11
|
await this.entryTableManager.ensureTable();
|
|
12
|
-
await patchAllEntryRevisions(this.knex, this.entryTableManager.getTableName(), params.entry.entryId,
|
|
12
|
+
await patchAllEntryRevisions(this.knex, this.entryTableManager.getTableName(), model, params.entry.entryId, (parsed)=>{
|
|
13
13
|
const p = parsed;
|
|
14
14
|
p["wbyDeleted"] = false;
|
|
15
15
|
p["binOriginalFolderId"] = null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlRestoreFromBin.js","sources":["../../../src/operations/entry/SqlRestoreFromBin.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsRestoreFromBinParams,\n CmsEntryValues,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { RestoreFromBinStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { patchAllEntryRevisions } from \"./queryHelpers.js\";\n\nclass SqlRestoreFromBinImpl implements RestoreFromBinStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsRestoreFromBinParams<T>\n ) {\n await this.entryTableManager.ensureTable();\n\n await patchAllEntryRevisions(\n this.knex,\n this.entryTableManager.getTableName(),\n params.entry.entryId,\n
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlRestoreFromBin.js","sources":["../../../src/operations/entry/SqlRestoreFromBin.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsRestoreFromBinParams,\n CmsEntryValues,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { RestoreFromBinStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { patchAllEntryRevisions } from \"./queryHelpers.js\";\n\nclass SqlRestoreFromBinImpl implements RestoreFromBinStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsRestoreFromBinParams<T>\n ) {\n await this.entryTableManager.ensureTable();\n\n await patchAllEntryRevisions(\n this.knex,\n this.entryTableManager.getTableName(),\n model,\n params.entry.entryId,\n parsed => {\n const p = parsed as unknown as Record<string, unknown>;\n p[\"wbyDeleted\"] = false;\n p[\"binOriginalFolderId\"] = null;\n p[\"location\"] = params.storageEntry.location ?? null;\n\n const fields = Object.keys(params.storageEntry);\n for (const field of fields) {\n if (field === \"createdOn\" || field === \"createdBy\") {\n continue;\n }\n if (\n (field.endsWith(\"On\") || field.endsWith(\"By\")) &&\n !field.startsWith(\"revision\")\n ) {\n p[field] = (params.storageEntry as Record<string, unknown>)[field];\n }\n }\n },\n { wbyDeleted: false }\n );\n\n return params.entry;\n }\n}\n\nexport const SqlRestoreFromBin = RestoreFromBinStorageOperation.createImplementation({\n implementation: SqlRestoreFromBinImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlRestoreFromBinImpl","knexClient","entryTableManager","model","params","patchAllEntryRevisions","parsed","p","fields","Object","field","SqlRestoreFromBin","RestoreFromBinStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;AAWA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEA,MAAM,QACFE,KAAe,EACfC,MAAwD,EAC1D;QACE,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAMC,uBACF,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,iBAAiB,CAAC,YAAY,IACnCF,OACAC,OAAO,KAAK,CAAC,OAAO,EACpBE,CAAAA;YACI,MAAMC,IAAID;YACVC,CAAC,CAAC,aAAa,GAAG;YAClBA,CAAC,CAAC,sBAAsB,GAAG;YAC3BA,CAAC,CAAC,WAAW,GAAGH,OAAO,YAAY,CAAC,QAAQ,IAAI;YAEhD,MAAMI,SAASC,OAAO,IAAI,CAACL,OAAO,YAAY;YAC9C,KAAK,MAAMM,SAASF,OAChB,IAAIE,AAAU,gBAAVA,SAAyBA,AAAU,gBAAVA,OAG7B;gBAAA,IACKA,AAAAA,CAAAA,MAAM,QAAQ,CAAC,SAASA,MAAM,QAAQ,CAAC,KAAI,KAC5C,CAACA,MAAM,UAAU,CAAC,aAElBH,CAAC,CAACG,MAAM,GAAIN,OAAO,YAAwC,CAACM,MAAM;YACtE;QAER,GACA;YAAE,YAAY;QAAM;QAGxB,OAAON,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMO,oBAAoBC,+BAA+B,oBAAoB,CAAC;IACjF,gBAAgBZ;IAChB,cAAc;QAACa;QAAYC;KAAkB;AACjD"}
|
|
@@ -6,7 +6,7 @@ declare class SqlUnpublishEntryImpl implements UnpublishEntryStorageOperation.In
|
|
|
6
6
|
private readonly entryTableManager;
|
|
7
7
|
private readonly knex;
|
|
8
8
|
constructor(knexClient: KnexClient.Interface, entryTableManager: EntryTableManager.Interface);
|
|
9
|
-
private
|
|
9
|
+
private modelQuery;
|
|
10
10
|
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsUnpublishParams<T>): Promise<import("@webiny/api-headless-cms/types/types.js").CmsEntry<T>>;
|
|
11
11
|
}
|
|
12
12
|
export declare const SqlUnpublishEntry: typeof SqlUnpublishEntryImpl & {
|
|
@@ -2,25 +2,25 @@ import { UnpublishEntryStorageOperation } from "@webiny/api-headless-cms/feature
|
|
|
2
2
|
import { KnexClient } from "@webiny/api-core-sql";
|
|
3
3
|
import { EntryTableManager } from "../../features/entryTableManager/abstractions.js";
|
|
4
4
|
import { entryToRow } from "./mappers.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createModelEntryQuery, syncEntryToLatest } from "./queryHelpers.js";
|
|
6
6
|
class SqlUnpublishEntryImpl {
|
|
7
7
|
constructor(knexClient, entryTableManager){
|
|
8
8
|
this.entryTableManager = entryTableManager;
|
|
9
9
|
this.knex = knexClient.client;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
return
|
|
11
|
+
modelQuery(model) {
|
|
12
|
+
return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);
|
|
13
13
|
}
|
|
14
14
|
async execute(model, params) {
|
|
15
15
|
await this.entryTableManager.ensureTable();
|
|
16
|
-
const existing = await this.
|
|
16
|
+
const existing = await this.modelQuery(model).andWhere("id", params.storageEntry.id).first();
|
|
17
17
|
const se = params.storageEntry;
|
|
18
18
|
se.isLatest = existing?.isLatest ?? se.isLatest;
|
|
19
19
|
se.isPublished = false;
|
|
20
20
|
const row = entryToRow(se);
|
|
21
21
|
const { isLatest: _il, ...rowWithoutIsLatest } = row;
|
|
22
|
-
await this.
|
|
23
|
-
await syncEntryToLatest(this.knex, this.entryTableManager.getTableName(), se, (latest)=>{
|
|
22
|
+
await this.modelQuery(model).andWhere("id", params.storageEntry.id).update(rowWithoutIsLatest);
|
|
23
|
+
await syncEntryToLatest(this.knex, this.entryTableManager.getTableName(), model, se, (latest)=>{
|
|
24
24
|
latest.live = null;
|
|
25
25
|
});
|
|
26
26
|
return params.entry;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlUnpublishEntry.js","sources":["../../../src/operations/entry/SqlUnpublishEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsUnpublishParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { UnpublishEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlUnpublishEntry.js","sources":["../../../src/operations/entry/SqlUnpublishEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsUnpublishParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { UnpublishEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport { createModelEntryQuery, syncEntryToLatest } from \"./queryHelpers.js\";\n\nclass SqlUnpublishEntryImpl implements UnpublishEntryStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n private modelQuery(model: CmsModel): Knex.QueryBuilder<IEntryRow> {\n return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsUnpublishParams<T>\n ) {\n await this.entryTableManager.ensureTable();\n\n const existing = await this.modelQuery(model)\n .andWhere(\"id\", params.storageEntry.id)\n .first();\n const se = params.storageEntry as CmsStorageEntry;\n se.isLatest = existing?.isLatest ?? se.isLatest;\n se.isPublished = false;\n\n const row = entryToRow(se);\n const { isLatest: _il, ...rowWithoutIsLatest } = row;\n\n await this.modelQuery(model)\n .andWhere(\"id\", params.storageEntry.id)\n .update(rowWithoutIsLatest);\n\n await syncEntryToLatest(\n this.knex,\n this.entryTableManager.getTableName(),\n model,\n se,\n latest => {\n latest.live = null;\n }\n );\n\n return params.entry;\n }\n}\n\nexport const SqlUnpublishEntry = UnpublishEntryStorageOperation.createImplementation({\n implementation: SqlUnpublishEntryImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlUnpublishEntryImpl","knexClient","entryTableManager","model","createModelEntryQuery","params","existing","se","row","entryToRow","_il","rowWithoutIsLatest","syncEntryToLatest","latest","SqlUnpublishEntry","UnpublishEntryStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;;AAcA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEQ,WAAWE,KAAe,EAAgC;QAC9D,OAAOC,sBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAID;IACnF;IAEA,MAAM,QACFA,KAAe,EACfE,MAAmD,EACrD;QACE,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAMC,WAAW,MAAM,IAAI,CAAC,UAAU,CAACH,OAClC,QAAQ,CAAC,MAAME,OAAO,YAAY,CAAC,EAAE,EACrC,KAAK;QACV,MAAME,KAAKF,OAAO,YAAY;QAC9BE,GAAG,QAAQ,GAAGD,UAAU,YAAYC,GAAG,QAAQ;QAC/CA,GAAG,WAAW,GAAG;QAEjB,MAAMC,MAAMC,WAAWF;QACvB,MAAM,EAAE,UAAUG,GAAG,EAAE,GAAGC,oBAAoB,GAAGH;QAEjD,MAAM,IAAI,CAAC,UAAU,CAACL,OACjB,QAAQ,CAAC,MAAME,OAAO,YAAY,CAAC,EAAE,EACrC,MAAM,CAACM;QAEZ,MAAMC,kBACF,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,iBAAiB,CAAC,YAAY,IACnCT,OACAI,IACAM,CAAAA;YACIA,OAAO,IAAI,GAAG;QAClB;QAGJ,OAAOR,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMS,oBAAoBC,+BAA+B,oBAAoB,CAAC;IACjF,gBAAgBf;IAChB,cAAc;QAACgB;QAAYC;KAAkB;AACjD"}
|
|
@@ -6,7 +6,7 @@ declare class SqlUpdateEntryImpl implements UpdateEntryStorageOperation.Interfac
|
|
|
6
6
|
private readonly entryTableManager;
|
|
7
7
|
private readonly knex;
|
|
8
8
|
constructor(knexClient: KnexClient.Interface, entryTableManager: EntryTableManager.Interface);
|
|
9
|
-
private
|
|
9
|
+
private modelQuery;
|
|
10
10
|
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsUpdateParams<T>): Promise<import("@webiny/api-headless-cms/types/types.js").CmsEntry<T>>;
|
|
11
11
|
}
|
|
12
12
|
export declare const SqlUpdateEntry: typeof SqlUpdateEntryImpl & {
|
|
@@ -2,25 +2,25 @@ import { UpdateEntryStorageOperation } from "@webiny/api-headless-cms/features/s
|
|
|
2
2
|
import { KnexClient } from "@webiny/api-core-sql";
|
|
3
3
|
import { EntryTableManager } from "../../features/entryTableManager/abstractions.js";
|
|
4
4
|
import { entryToRow } from "./mappers.js";
|
|
5
|
-
import {
|
|
5
|
+
import { createModelEntryQuery, syncEntryToLatest } from "./queryHelpers.js";
|
|
6
6
|
class SqlUpdateEntryImpl {
|
|
7
7
|
constructor(knexClient, entryTableManager){
|
|
8
8
|
this.entryTableManager = entryTableManager;
|
|
9
9
|
this.knex = knexClient.client;
|
|
10
10
|
}
|
|
11
|
-
|
|
12
|
-
return
|
|
11
|
+
modelQuery(model) {
|
|
12
|
+
return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);
|
|
13
13
|
}
|
|
14
14
|
async execute(model, params) {
|
|
15
15
|
await this.entryTableManager.ensureTable();
|
|
16
|
-
const existing = await this.
|
|
16
|
+
const existing = await this.modelQuery(model).andWhere("id", params.storageEntry.id).first();
|
|
17
17
|
const se = params.storageEntry;
|
|
18
18
|
se.isLatest = existing?.isLatest ?? se.isLatest;
|
|
19
19
|
se.isPublished = existing?.isPublished ?? se.isPublished;
|
|
20
20
|
const row = entryToRow(se);
|
|
21
21
|
const { isLatest: _il, isPublished: _ip, ...rowWithoutFlags } = row;
|
|
22
|
-
await this.
|
|
23
|
-
await syncEntryToLatest(this.knex, this.entryTableManager.getTableName(), se);
|
|
22
|
+
await this.modelQuery(model).andWhere("id", params.storageEntry.id).update(rowWithoutFlags);
|
|
23
|
+
await syncEntryToLatest(this.knex, this.entryTableManager.getTableName(), model, se);
|
|
24
24
|
return params.entry;
|
|
25
25
|
}
|
|
26
26
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/SqlUpdateEntry.js","sources":["../../../src/operations/entry/SqlUpdateEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsUpdateParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { UpdateEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport {
|
|
1
|
+
{"version":3,"file":"operations/entry/SqlUpdateEntry.js","sources":["../../../src/operations/entry/SqlUpdateEntry.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntryStorageOperationsUpdateParams,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { UpdateEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport type { IEntryRow } from \"./types.js\";\nimport { entryToRow } from \"./mappers.js\";\nimport { createModelEntryQuery, syncEntryToLatest } from \"./queryHelpers.js\";\n\nclass SqlUpdateEntryImpl implements UpdateEntryStorageOperation.Interface {\n private readonly knex: Knex;\n\n public constructor(\n knexClient: KnexClient.Interface,\n private readonly entryTableManager: EntryTableManager.Interface\n ) {\n this.knex = knexClient.client;\n }\n\n private modelQuery(model: CmsModel): Knex.QueryBuilder<IEntryRow> {\n return createModelEntryQuery(this.knex, this.entryTableManager.getTableName(), model);\n }\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsUpdateParams<T>\n ) {\n await this.entryTableManager.ensureTable();\n\n const existing = await this.modelQuery(model)\n .andWhere(\"id\", params.storageEntry.id)\n .first();\n const se = params.storageEntry as CmsStorageEntry;\n se.isLatest = existing?.isLatest ?? se.isLatest;\n se.isPublished = existing?.isPublished ?? se.isPublished;\n\n const row = entryToRow(se);\n const { isLatest: _il, isPublished: _ip, ...rowWithoutFlags } = row;\n\n await this.modelQuery(model).andWhere(\"id\", params.storageEntry.id).update(rowWithoutFlags);\n\n await syncEntryToLatest(this.knex, this.entryTableManager.getTableName(), model, se);\n\n return params.entry;\n }\n}\n\nexport const SqlUpdateEntry = UpdateEntryStorageOperation.createImplementation({\n implementation: SqlUpdateEntryImpl,\n dependencies: [KnexClient, EntryTableManager]\n});\n"],"names":["SqlUpdateEntryImpl","knexClient","entryTableManager","model","createModelEntryQuery","params","existing","se","row","entryToRow","_il","_ip","rowWithoutFlags","syncEntryToLatest","SqlUpdateEntry","UpdateEntryStorageOperation","KnexClient","EntryTableManager"],"mappings":";;;;;AAcA,MAAMA;IAGF,YACIC,UAAgC,EACfC,iBAA8C,CACjE;aADmBA,iBAAiB,GAAjBA;QAEjB,IAAI,CAAC,IAAI,GAAGD,WAAW,MAAM;IACjC;IAEQ,WAAWE,KAAe,EAAgC;QAC9D,OAAOC,sBAAsB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAID;IACnF;IAEA,MAAM,QACFA,KAAe,EACfE,MAAgD,EAClD;QACE,MAAM,IAAI,CAAC,iBAAiB,CAAC,WAAW;QAExC,MAAMC,WAAW,MAAM,IAAI,CAAC,UAAU,CAACH,OAClC,QAAQ,CAAC,MAAME,OAAO,YAAY,CAAC,EAAE,EACrC,KAAK;QACV,MAAME,KAAKF,OAAO,YAAY;QAC9BE,GAAG,QAAQ,GAAGD,UAAU,YAAYC,GAAG,QAAQ;QAC/CA,GAAG,WAAW,GAAGD,UAAU,eAAeC,GAAG,WAAW;QAExD,MAAMC,MAAMC,WAAWF;QACvB,MAAM,EAAE,UAAUG,GAAG,EAAE,aAAaC,GAAG,EAAE,GAAGC,iBAAiB,GAAGJ;QAEhE,MAAM,IAAI,CAAC,UAAU,CAACL,OAAO,QAAQ,CAAC,MAAME,OAAO,YAAY,CAAC,EAAE,EAAE,MAAM,CAACO;QAE3E,MAAMC,kBAAkB,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,iBAAiB,CAAC,YAAY,IAAIV,OAAOI;QAEjF,OAAOF,OAAO,KAAK;IACvB;AACJ;AAEO,MAAMS,iBAAiBC,4BAA4B,oBAAoB,CAAC;IAC3E,gBAAgBf;IAChB,cAAc;QAACgB;QAAYC;KAAkB;AACjD"}
|
|
@@ -7,8 +7,13 @@ import type { FieldFilterPathRegistry, FieldFilterValueTransformRegistry, FieldF
|
|
|
7
7
|
import type { IEntryRow } from "./types.js";
|
|
8
8
|
export declare const MAX_LIST_LIMIT = 1000000;
|
|
9
9
|
export declare const createEntryQuery: (knex: Knex, tableName: string) => Knex.QueryBuilder<IEntryRow>;
|
|
10
|
-
export
|
|
11
|
-
|
|
10
|
+
export interface IEntryQueryModel {
|
|
11
|
+
tenant: string;
|
|
12
|
+
modelId: string;
|
|
13
|
+
}
|
|
14
|
+
export declare const createModelEntryQuery: (knex: Knex, tableName: string, model: IEntryQueryModel) => Knex.QueryBuilder<IEntryRow>;
|
|
15
|
+
export declare const syncEntryToLatest: (knex: Knex, tableName: string, model: IEntryQueryModel, entry: CmsStorageEntry, extraPatch?: (latest: CmsEntry) => void) => Promise<void>;
|
|
16
|
+
export declare const patchAllEntryRevisions: (knex: Knex, tableName: string, model: IEntryQueryModel, entryId: string, patch: (entry: CmsEntry) => void, columnUpdates?: Partial<IEntryRow>) => Promise<void>;
|
|
12
17
|
export interface IListEntriesDeps {
|
|
13
18
|
knex: Knex;
|
|
14
19
|
tableName: string;
|
|
@@ -3,19 +3,20 @@ import { createFields, createStorageTransformCallable, filter, sort } from "@web
|
|
|
3
3
|
import { mergeEntryLevelMeta, rowToEntry } from "./mappers.js";
|
|
4
4
|
const MAX_LIST_LIMIT = 1000000;
|
|
5
5
|
const createEntryQuery = (knex, tableName)=>knex(tableName);
|
|
6
|
-
const
|
|
6
|
+
const createModelEntryQuery = (knex, tableName, model)=>createEntryQuery(knex, tableName).where("tenant", model.tenant).andWhere("modelId", model.modelId);
|
|
7
|
+
const syncEntryToLatest = async (knex, tableName, model, entry, extraPatch)=>{
|
|
7
8
|
if (entry.isLatest) return;
|
|
8
|
-
const latestRow = await
|
|
9
|
+
const latestRow = await createModelEntryQuery(knex, tableName, model).andWhere("entryId", entry.entryId).andWhere("isLatest", true).first();
|
|
9
10
|
if (!latestRow) return;
|
|
10
11
|
const latest = JSON.parse(latestRow.data);
|
|
11
12
|
const merged = mergeEntryLevelMeta(entry, latest);
|
|
12
13
|
if (extraPatch) extraPatch(merged);
|
|
13
|
-
await
|
|
14
|
+
await createModelEntryQuery(knex, tableName, model).andWhere("id", latestRow.id).update({
|
|
14
15
|
data: JSON.stringify(merged)
|
|
15
16
|
});
|
|
16
17
|
};
|
|
17
|
-
const patchAllEntryRevisions = async (knex, tableName,
|
|
18
|
-
const rows = await
|
|
18
|
+
const patchAllEntryRevisions = async (knex, tableName, model, entryId, patch, columnUpdates)=>{
|
|
19
|
+
const rows = await createModelEntryQuery(knex, tableName, model).andWhere("entryId", entryId);
|
|
19
20
|
if (0 === rows.length) return;
|
|
20
21
|
const cases = rows.map((row)=>{
|
|
21
22
|
const parsed = JSON.parse(row.data);
|
|
@@ -32,7 +33,7 @@ const patchAllEntryRevisions = async (knex, tableName, entryId, tenant, patch, c
|
|
|
32
33
|
])),
|
|
33
34
|
...columnUpdates
|
|
34
35
|
};
|
|
35
|
-
await
|
|
36
|
+
await createModelEntryQuery(knex, tableName, model).andWhere("entryId", entryId).update(update);
|
|
36
37
|
};
|
|
37
38
|
const listEntries = async (deps, initialModel, params)=>{
|
|
38
39
|
const model = deps.storageModelProvider.getModel(initialModel);
|
|
@@ -100,6 +101,6 @@ const listEntries = async (deps, initialModel, params)=>{
|
|
|
100
101
|
items: slicedItems
|
|
101
102
|
};
|
|
102
103
|
};
|
|
103
|
-
export { MAX_LIST_LIMIT, createEntryQuery, listEntries, patchAllEntryRevisions, syncEntryToLatest };
|
|
104
|
+
export { MAX_LIST_LIMIT, createEntryQuery, createModelEntryQuery, listEntries, patchAllEntryRevisions, syncEntryToLatest };
|
|
104
105
|
|
|
105
106
|
//# sourceMappingURL=queryHelpers.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/entry/queryHelpers.js","sources":["../../../src/operations/entry/queryHelpers.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntry,\n CmsEntryListWhere,\n CmsEntryStorageOperationsListParams,\n CmsEntryStorageOperationsListResponse,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { decodeCursor, encodeCursor } from \"@webiny/utils\";\nimport type { StorageTransformRegistry } from \"@webiny/api-headless-cms/exports/api/cms/storage.js\";\nimport type { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport type { ValueFilterRegistry } from \"@webiny/db-utils\";\nimport {\n createFields,\n filter,\n sort,\n createStorageTransformCallable\n} from \"@webiny/api-headless-cms-storage\";\nimport type {\n FieldFilterPathRegistry,\n FieldFilterValueTransformRegistry,\n FieldFilterCreateRegistry,\n FieldSortingRegistry\n} from \"@webiny/api-headless-cms-storage\";\nimport type { IEntryRow } from \"./types.js\";\nimport { rowToEntry, mergeEntryLevelMeta } from \"./mappers.js\";\n\nexport const MAX_LIST_LIMIT = 1000000;\n\nexport const createEntryQuery = (knex: Knex, tableName: string): Knex.QueryBuilder<IEntryRow> => {\n return knex<IEntryRow>(tableName);\n};\n\nexport const syncEntryToLatest = async (\n knex: Knex,\n tableName: string,\n entry: CmsStorageEntry,\n extraPatch?: (latest: CmsEntry) => void\n): Promise<void> => {\n if (entry.isLatest) {\n return;\n }\n\n const latestRow = await createEntryQuery(knex, tableName)\n .where(\"entryId\", entry.entryId)\n .andWhere(\"isLatest\", true)\n .first();\n\n if (!latestRow) {\n return;\n }\n\n const latest = JSON.parse(latestRow.data);\n const merged = mergeEntryLevelMeta(entry, latest);\n\n if (extraPatch) {\n extraPatch(merged);\n }\n\n await createEntryQuery(knex, tableName)\n .where(\"id\", latestRow.id)\n .update({ data: JSON.stringify(merged) });\n};\n\nexport const patchAllEntryRevisions = async (\n knex: Knex,\n tableName: string,\n entryId: string,\n tenant: string,\n patch: (entry: CmsEntry) => void,\n columnUpdates?: Partial<IEntryRow>\n): Promise<void> => {\n const rows = await createEntryQuery(knex, tableName)\n .where(\"tenant\", tenant)\n .where(\"entryId\", entryId);\n\n if (rows.length === 0) {\n return;\n }\n\n const cases: Array<{ id: string; data: string }> = rows.map((row: IEntryRow) => {\n const parsed = JSON.parse(row.data);\n patch(parsed);\n return { id: row.id, data: JSON.stringify(parsed) };\n });\n\n const update: Record<string, unknown> = {\n data: knex.raw(\n `CASE id ${cases.map(() => \"WHEN ? THEN ?\").join(\" \")} END`,\n cases.flatMap((c: { id: string; data: string }) => [c.id, c.data])\n ),\n ...columnUpdates\n };\n\n await createEntryQuery(knex, tableName)\n .where(\"tenant\", tenant)\n .where(\"entryId\", entryId)\n .update(update);\n};\n\nexport interface IListEntriesDeps {\n knex: Knex;\n tableName: string;\n storageModelProvider: CmsStorageModelProvider.Interface;\n storageTransformRegistry: StorageTransformRegistry.Interface;\n pathRegistry: FieldFilterPathRegistry.Interface;\n transformRegistry: FieldFilterValueTransformRegistry.Interface;\n filterCreateRegistry: FieldFilterCreateRegistry.Interface;\n sortingRegistry: FieldSortingRegistry.Interface;\n valueFilterRegistry: ValueFilterRegistry.Interface;\n}\n\nexport const listEntries = async <T extends CmsEntryValues = CmsEntryValues>(\n deps: IListEntriesDeps,\n initialModel: CmsModel,\n params: CmsEntryStorageOperationsListParams\n): Promise<CmsEntryStorageOperationsListResponse<CmsEntry<T>>> => {\n const model = deps.storageModelProvider.getModel(initialModel);\n const {\n where: initialWhere,\n sort: sortBy,\n search,\n fields: searchFields,\n limit: initialLimit,\n after\n } = params;\n\n const limit =\n initialLimit <= 0 || initialLimit >= MAX_LIST_LIMIT ? MAX_LIST_LIMIT : initialLimit;\n\n const qb = createEntryQuery(deps.knex, deps.tableName)\n .where(\"tenant\", model.tenant)\n .andWhere(\"modelId\", model.modelId);\n\n if (initialWhere.entryId) {\n qb.andWhere(\"entryId\", initialWhere.entryId);\n } else if (initialWhere.published === true) {\n qb.andWhere(\"isPublished\", true);\n } else {\n qb.andWhere(\"isLatest\", true);\n }\n\n if (initialWhere.wbyDeleted !== undefined) {\n qb.andWhere(\"wbyDeleted\", initialWhere.wbyDeleted);\n } else {\n qb.andWhere(\"wbyDeleted\", false);\n }\n\n const rows: IEntryRow[] = await qb;\n\n if (rows.length === 0) {\n return {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null,\n items: [] as CmsEntry<T>[]\n };\n }\n\n const fromStorage = createStorageTransformCallable(deps.storageTransformRegistry, model);\n\n const records = await Promise.all(\n rows.map(async row => {\n const entry = rowToEntry(row) as CmsStorageEntry;\n\n for (const field of model.fields) {\n entry.values[field.fieldId] = await fromStorage(field, entry.values[field.fieldId]);\n }\n\n return entry as CmsEntry<T>;\n })\n );\n\n const where: Partial<CmsEntryListWhere> = { ...initialWhere };\n delete where[\"published\"];\n delete where[\"latest\"];\n delete where[\"entryId\"];\n delete where[\"wbyDeleted\"];\n\n const modelFields = createFields({\n pathRegistry: deps.pathRegistry,\n transformRegistry: deps.transformRegistry,\n fields: model.fields\n });\n\n const filteredItems = filter<T>({\n items: records,\n where,\n filterCreateRegistry: deps.filterCreateRegistry,\n transformRegistry: deps.transformRegistry,\n fields: modelFields,\n fullTextSearch: {\n term: search,\n fields: searchFields || []\n },\n valueFilterRegistry: deps.valueFilterRegistry\n });\n\n const totalCount = filteredItems.length;\n\n const sortedItems = sort<T>({\n model,\n items: filteredItems,\n sort: sortBy,\n fields: modelFields,\n sortingRegistry: deps.sortingRegistry\n });\n\n const start = parseInt((decodeCursor(after) as string) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const slicedItems = sortedItems.slice(start, start + limit);\n const cursor = encodeCursor(`${start + limit}`);\n\n return {\n hasMoreItems,\n totalCount,\n cursor,\n items: slicedItems\n };\n};\n"],"names":["MAX_LIST_LIMIT","createEntryQuery","knex","tableName","syncEntryToLatest","entry","extraPatch","latestRow","latest","JSON","merged","mergeEntryLevelMeta","patchAllEntryRevisions","entryId","tenant","patch","columnUpdates","rows","cases","row","parsed","update","c","listEntries","deps","initialModel","params","model","initialWhere","sortBy","search","searchFields","initialLimit","after","limit","qb","undefined","fromStorage","createStorageTransformCallable","records","Promise","rowToEntry","field","where","modelFields","createFields","filteredItems","filter","totalCount","sortedItems","sort","start","parseInt","decodeCursor","hasMoreItems","slicedItems","cursor","encodeCursor"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"operations/entry/queryHelpers.js","sources":["../../../src/operations/entry/queryHelpers.ts"],"sourcesContent":["import type { Knex } from \"knex\";\nimport type {\n CmsEntry,\n CmsEntryListWhere,\n CmsEntryStorageOperationsListParams,\n CmsEntryStorageOperationsListResponse,\n CmsEntryValues,\n CmsModel,\n CmsStorageEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { decodeCursor, encodeCursor } from \"@webiny/utils\";\nimport type { StorageTransformRegistry } from \"@webiny/api-headless-cms/exports/api/cms/storage.js\";\nimport type { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport type { ValueFilterRegistry } from \"@webiny/db-utils\";\nimport {\n createFields,\n filter,\n sort,\n createStorageTransformCallable\n} from \"@webiny/api-headless-cms-storage\";\nimport type {\n FieldFilterPathRegistry,\n FieldFilterValueTransformRegistry,\n FieldFilterCreateRegistry,\n FieldSortingRegistry\n} from \"@webiny/api-headless-cms-storage\";\nimport type { IEntryRow } from \"./types.js\";\nimport { rowToEntry, mergeEntryLevelMeta } from \"./mappers.js\";\n\nexport const MAX_LIST_LIMIT = 1000000;\n\nexport const createEntryQuery = (knex: Knex, tableName: string): Knex.QueryBuilder<IEntryRow> => {\n return knex<IEntryRow>(tableName);\n};\n\nexport interface IEntryQueryModel {\n tenant: string;\n modelId: string;\n}\n\nexport const createModelEntryQuery = (\n knex: Knex,\n tableName: string,\n model: IEntryQueryModel\n): Knex.QueryBuilder<IEntryRow> => {\n return createEntryQuery(knex, tableName)\n .where(\"tenant\", model.tenant)\n .andWhere(\"modelId\", model.modelId);\n};\n\nexport const syncEntryToLatest = async (\n knex: Knex,\n tableName: string,\n model: IEntryQueryModel,\n entry: CmsStorageEntry,\n extraPatch?: (latest: CmsEntry) => void\n): Promise<void> => {\n if (entry.isLatest) {\n return;\n }\n\n const latestRow = await createModelEntryQuery(knex, tableName, model)\n .andWhere(\"entryId\", entry.entryId)\n .andWhere(\"isLatest\", true)\n .first();\n\n if (!latestRow) {\n return;\n }\n\n const latest = JSON.parse(latestRow.data);\n const merged = mergeEntryLevelMeta(entry, latest);\n\n if (extraPatch) {\n extraPatch(merged);\n }\n\n await createModelEntryQuery(knex, tableName, model)\n .andWhere(\"id\", latestRow.id)\n .update({ data: JSON.stringify(merged) });\n};\n\nexport const patchAllEntryRevisions = async (\n knex: Knex,\n tableName: string,\n model: IEntryQueryModel,\n entryId: string,\n patch: (entry: CmsEntry) => void,\n columnUpdates?: Partial<IEntryRow>\n): Promise<void> => {\n const rows = await createModelEntryQuery(knex, tableName, model).andWhere(\"entryId\", entryId);\n\n if (rows.length === 0) {\n return;\n }\n\n const cases: Array<{ id: string; data: string }> = rows.map((row: IEntryRow) => {\n const parsed = JSON.parse(row.data);\n patch(parsed);\n return { id: row.id, data: JSON.stringify(parsed) };\n });\n\n const update: Record<string, unknown> = {\n data: knex.raw(\n `CASE id ${cases.map(() => \"WHEN ? THEN ?\").join(\" \")} END`,\n cases.flatMap((c: { id: string; data: string }) => [c.id, c.data])\n ),\n ...columnUpdates\n };\n\n await createModelEntryQuery(knex, tableName, model).andWhere(\"entryId\", entryId).update(update);\n};\n\nexport interface IListEntriesDeps {\n knex: Knex;\n tableName: string;\n storageModelProvider: CmsStorageModelProvider.Interface;\n storageTransformRegistry: StorageTransformRegistry.Interface;\n pathRegistry: FieldFilterPathRegistry.Interface;\n transformRegistry: FieldFilterValueTransformRegistry.Interface;\n filterCreateRegistry: FieldFilterCreateRegistry.Interface;\n sortingRegistry: FieldSortingRegistry.Interface;\n valueFilterRegistry: ValueFilterRegistry.Interface;\n}\n\nexport const listEntries = async <T extends CmsEntryValues = CmsEntryValues>(\n deps: IListEntriesDeps,\n initialModel: CmsModel,\n params: CmsEntryStorageOperationsListParams\n): Promise<CmsEntryStorageOperationsListResponse<CmsEntry<T>>> => {\n const model = deps.storageModelProvider.getModel(initialModel);\n const {\n where: initialWhere,\n sort: sortBy,\n search,\n fields: searchFields,\n limit: initialLimit,\n after\n } = params;\n\n const limit =\n initialLimit <= 0 || initialLimit >= MAX_LIST_LIMIT ? MAX_LIST_LIMIT : initialLimit;\n\n const qb = createEntryQuery(deps.knex, deps.tableName)\n .where(\"tenant\", model.tenant)\n .andWhere(\"modelId\", model.modelId);\n\n if (initialWhere.entryId) {\n qb.andWhere(\"entryId\", initialWhere.entryId);\n } else if (initialWhere.published === true) {\n qb.andWhere(\"isPublished\", true);\n } else {\n qb.andWhere(\"isLatest\", true);\n }\n\n if (initialWhere.wbyDeleted !== undefined) {\n qb.andWhere(\"wbyDeleted\", initialWhere.wbyDeleted);\n } else {\n qb.andWhere(\"wbyDeleted\", false);\n }\n\n const rows: IEntryRow[] = await qb;\n\n if (rows.length === 0) {\n return {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null,\n items: [] as CmsEntry<T>[]\n };\n }\n\n const fromStorage = createStorageTransformCallable(deps.storageTransformRegistry, model);\n\n const records = await Promise.all(\n rows.map(async row => {\n const entry = rowToEntry(row) as CmsStorageEntry;\n\n for (const field of model.fields) {\n entry.values[field.fieldId] = await fromStorage(field, entry.values[field.fieldId]);\n }\n\n return entry as CmsEntry<T>;\n })\n );\n\n const where: Partial<CmsEntryListWhere> = { ...initialWhere };\n delete where[\"published\"];\n delete where[\"latest\"];\n delete where[\"entryId\"];\n delete where[\"wbyDeleted\"];\n\n const modelFields = createFields({\n pathRegistry: deps.pathRegistry,\n transformRegistry: deps.transformRegistry,\n fields: model.fields\n });\n\n const filteredItems = filter<T>({\n items: records,\n where,\n filterCreateRegistry: deps.filterCreateRegistry,\n transformRegistry: deps.transformRegistry,\n fields: modelFields,\n fullTextSearch: {\n term: search,\n fields: searchFields || []\n },\n valueFilterRegistry: deps.valueFilterRegistry\n });\n\n const totalCount = filteredItems.length;\n\n const sortedItems = sort<T>({\n model,\n items: filteredItems,\n sort: sortBy,\n fields: modelFields,\n sortingRegistry: deps.sortingRegistry\n });\n\n const start = parseInt((decodeCursor(after) as string) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const slicedItems = sortedItems.slice(start, start + limit);\n const cursor = encodeCursor(`${start + limit}`);\n\n return {\n hasMoreItems,\n totalCount,\n cursor,\n items: slicedItems\n };\n};\n"],"names":["MAX_LIST_LIMIT","createEntryQuery","knex","tableName","createModelEntryQuery","model","syncEntryToLatest","entry","extraPatch","latestRow","latest","JSON","merged","mergeEntryLevelMeta","patchAllEntryRevisions","entryId","patch","columnUpdates","rows","cases","row","parsed","update","c","listEntries","deps","initialModel","params","initialWhere","sortBy","search","searchFields","initialLimit","after","limit","qb","undefined","fromStorage","createStorageTransformCallable","records","Promise","rowToEntry","field","where","modelFields","createFields","filteredItems","filter","totalCount","sortedItems","sort","start","parseInt","decodeCursor","hasMoreItems","slicedItems","cursor","encodeCursor"],"mappings":"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"}
|
|
@@ -10,7 +10,7 @@ class SqlDeleteGroupImpl {
|
|
|
10
10
|
}
|
|
11
11
|
async execute(params) {
|
|
12
12
|
await this.groupSchemaManager.ensure(this.tableName);
|
|
13
|
-
await this.knex.client(this.tableName).where("id", params.group.id).delete();
|
|
13
|
+
await this.knex.client(this.tableName).where("tenant", params.group.tenant).andWhere("id", params.group.id).delete();
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
const SqlDeleteGroup = DeleteGroupStorageOperation.createImplementation({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/group/SqlDeleteGroup.js","sources":["../../../src/operations/group/SqlDeleteGroup.ts"],"sourcesContent":["import type { CmsGroupStorageOperationsDeleteParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IGroupRow } from \"./types.js\";\nimport { DeleteGroupStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/group/DeleteGroupStorageOperation.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { GroupSchemaManager } from \"~/features/groupSchemaManager/abstractions.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nclass SqlDeleteGroupImpl implements DeleteGroupStorageOperation.Interface {\n private tableName: string;\n\n constructor(\n private knex: KnexClient.Interface,\n tableNameResolver: TableNameResolver.Interface,\n private groupSchemaManager: GroupSchemaManager.Interface\n ) {\n this.tableName = tableNameResolver.resolve(\"groups\");\n }\n\n async execute(params: CmsGroupStorageOperationsDeleteParams) {\n await this.groupSchemaManager.ensure(this.tableName);\n await this.knex.client<IGroupRow>(this.tableName).where(\"id\", params.group.id).delete();\n }\n}\n\nexport const SqlDeleteGroup = DeleteGroupStorageOperation.createImplementation({\n implementation: SqlDeleteGroupImpl,\n dependencies: [KnexClient, TableNameResolver, GroupSchemaManager]\n});\n"],"names":["SqlDeleteGroupImpl","knex","tableNameResolver","groupSchemaManager","params","SqlDeleteGroup","DeleteGroupStorageOperation","KnexClient","TableNameResolver","GroupSchemaManager"],"mappings":";;;;AAOA,MAAMA;IAGF,YACYC,IAA0B,EAClCC,iBAA8C,EACtCC,kBAAgD,CAC1D;aAHUF,IAAI,GAAJA;aAEAE,kBAAkB,GAAlBA;QAER,IAAI,CAAC,SAAS,GAAGD,kBAAkB,OAAO,CAAC;IAC/C;IAEA,MAAM,QAAQE,MAA6C,EAAE;QACzD,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;QACnD,MAAM,IAAI,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"operations/group/SqlDeleteGroup.js","sources":["../../../src/operations/group/SqlDeleteGroup.ts"],"sourcesContent":["import type { CmsGroupStorageOperationsDeleteParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IGroupRow } from \"./types.js\";\nimport { DeleteGroupStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/group/DeleteGroupStorageOperation.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { GroupSchemaManager } from \"~/features/groupSchemaManager/abstractions.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nclass SqlDeleteGroupImpl implements DeleteGroupStorageOperation.Interface {\n private tableName: string;\n\n constructor(\n private knex: KnexClient.Interface,\n tableNameResolver: TableNameResolver.Interface,\n private groupSchemaManager: GroupSchemaManager.Interface\n ) {\n this.tableName = tableNameResolver.resolve(\"groups\");\n }\n\n async execute(params: CmsGroupStorageOperationsDeleteParams) {\n await this.groupSchemaManager.ensure(this.tableName);\n await this.knex\n .client<IGroupRow>(this.tableName)\n .where(\"tenant\", params.group.tenant)\n .andWhere(\"id\", params.group.id)\n .delete();\n }\n}\n\nexport const SqlDeleteGroup = DeleteGroupStorageOperation.createImplementation({\n implementation: SqlDeleteGroupImpl,\n dependencies: [KnexClient, TableNameResolver, GroupSchemaManager]\n});\n"],"names":["SqlDeleteGroupImpl","knex","tableNameResolver","groupSchemaManager","params","SqlDeleteGroup","DeleteGroupStorageOperation","KnexClient","TableNameResolver","GroupSchemaManager"],"mappings":";;;;AAOA,MAAMA;IAGF,YACYC,IAA0B,EAClCC,iBAA8C,EACtCC,kBAAgD,CAC1D;aAHUF,IAAI,GAAJA;aAEAE,kBAAkB,GAAlBA;QAER,IAAI,CAAC,SAAS,GAAGD,kBAAkB,OAAO,CAAC;IAC/C;IAEA,MAAM,QAAQE,MAA6C,EAAE;QACzD,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;QACnD,MAAM,IAAI,CAAC,IAAI,CACV,MAAM,CAAY,IAAI,CAAC,SAAS,EAChC,KAAK,CAAC,UAAUA,OAAO,KAAK,CAAC,MAAM,EACnC,QAAQ,CAAC,MAAMA,OAAO,KAAK,CAAC,EAAE,EAC9B,MAAM;IACf;AACJ;AAEO,MAAMC,iBAAiBC,4BAA4B,oBAAoB,CAAC;IAC3E,gBAAgBN;IAChB,cAAc;QAACO;QAAYC;QAAmBC;KAAmB;AACrE"}
|
|
@@ -12,7 +12,7 @@ class SqlUpdateGroupImpl {
|
|
|
12
12
|
async execute(params) {
|
|
13
13
|
const row = groupToRow(params.group);
|
|
14
14
|
await this.groupSchemaManager.ensure(this.tableName);
|
|
15
|
-
await this.knex.client(this.tableName).where("id", params.group.id).update(row);
|
|
15
|
+
await this.knex.client(this.tableName).where("tenant", params.group.tenant).andWhere("id", params.group.id).update(row);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
18
18
|
const SqlUpdateGroup = UpdateGroupStorageOperation.createImplementation({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/group/SqlUpdateGroup.js","sources":["../../../src/operations/group/SqlUpdateGroup.ts"],"sourcesContent":["import type { CmsGroupStorageOperationsUpdateParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IGroupRow } from \"./types.js\";\nimport { UpdateGroupStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/group/UpdateGroupStorageOperation.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { GroupSchemaManager } from \"~/features/groupSchemaManager/abstractions.js\";\nimport { groupToRow } from \"./mappers.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nclass SqlUpdateGroupImpl implements UpdateGroupStorageOperation.Interface {\n private tableName: string;\n\n constructor(\n private knex: KnexClient.Interface,\n tableNameResolver: TableNameResolver.Interface,\n private groupSchemaManager: GroupSchemaManager.Interface\n ) {\n this.tableName = tableNameResolver.resolve(\"groups\");\n }\n\n async execute(params: CmsGroupStorageOperationsUpdateParams) {\n const row = groupToRow(params.group);\n\n await this.groupSchemaManager.ensure(this.tableName);\n await this.knex.client<IGroupRow>(this.tableName).where(\"id\", params.group.id).update(row);\n }\n}\n\nexport const SqlUpdateGroup = UpdateGroupStorageOperation.createImplementation({\n implementation: SqlUpdateGroupImpl,\n dependencies: [KnexClient, TableNameResolver, GroupSchemaManager]\n});\n"],"names":["SqlUpdateGroupImpl","knex","tableNameResolver","groupSchemaManager","params","row","groupToRow","SqlUpdateGroup","UpdateGroupStorageOperation","KnexClient","TableNameResolver","GroupSchemaManager"],"mappings":";;;;;AAQA,MAAMA;IAGF,YACYC,IAA0B,EAClCC,iBAA8C,EACtCC,kBAAgD,CAC1D;aAHUF,IAAI,GAAJA;aAEAE,kBAAkB,GAAlBA;QAER,IAAI,CAAC,SAAS,GAAGD,kBAAkB,OAAO,CAAC;IAC/C;IAEA,MAAM,QAAQE,MAA6C,EAAE;QACzD,MAAMC,MAAMC,WAAWF,OAAO,KAAK;QAEnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;QACnD,MAAM,IAAI,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"operations/group/SqlUpdateGroup.js","sources":["../../../src/operations/group/SqlUpdateGroup.ts"],"sourcesContent":["import type { CmsGroupStorageOperationsUpdateParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IGroupRow } from \"./types.js\";\nimport { UpdateGroupStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/group/UpdateGroupStorageOperation.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { GroupSchemaManager } from \"~/features/groupSchemaManager/abstractions.js\";\nimport { groupToRow } from \"./mappers.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nclass SqlUpdateGroupImpl implements UpdateGroupStorageOperation.Interface {\n private tableName: string;\n\n constructor(\n private knex: KnexClient.Interface,\n tableNameResolver: TableNameResolver.Interface,\n private groupSchemaManager: GroupSchemaManager.Interface\n ) {\n this.tableName = tableNameResolver.resolve(\"groups\");\n }\n\n async execute(params: CmsGroupStorageOperationsUpdateParams) {\n const row = groupToRow(params.group);\n\n await this.groupSchemaManager.ensure(this.tableName);\n await this.knex\n .client<IGroupRow>(this.tableName)\n .where(\"tenant\", params.group.tenant)\n .andWhere(\"id\", params.group.id)\n .update(row);\n }\n}\n\nexport const SqlUpdateGroup = UpdateGroupStorageOperation.createImplementation({\n implementation: SqlUpdateGroupImpl,\n dependencies: [KnexClient, TableNameResolver, GroupSchemaManager]\n});\n"],"names":["SqlUpdateGroupImpl","knex","tableNameResolver","groupSchemaManager","params","row","groupToRow","SqlUpdateGroup","UpdateGroupStorageOperation","KnexClient","TableNameResolver","GroupSchemaManager"],"mappings":";;;;;AAQA,MAAMA;IAGF,YACYC,IAA0B,EAClCC,iBAA8C,EACtCC,kBAAgD,CAC1D;aAHUF,IAAI,GAAJA;aAEAE,kBAAkB,GAAlBA;QAER,IAAI,CAAC,SAAS,GAAGD,kBAAkB,OAAO,CAAC;IAC/C;IAEA,MAAM,QAAQE,MAA6C,EAAE;QACzD,MAAMC,MAAMC,WAAWF,OAAO,KAAK;QAEnC,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;QACnD,MAAM,IAAI,CAAC,IAAI,CACV,MAAM,CAAY,IAAI,CAAC,SAAS,EAChC,KAAK,CAAC,UAAUA,OAAO,KAAK,CAAC,MAAM,EACnC,QAAQ,CAAC,MAAMA,OAAO,KAAK,CAAC,EAAE,EAC9B,MAAM,CAACC;IAChB;AACJ;AAEO,MAAME,iBAAiBC,4BAA4B,oBAAoB,CAAC;IAC3E,gBAAgBR;IAChB,cAAc;QAACS;QAAYC;QAAmBC;KAAmB;AACrE"}
|
|
@@ -10,7 +10,7 @@ class SqlDeleteModelImpl {
|
|
|
10
10
|
}
|
|
11
11
|
async execute(params) {
|
|
12
12
|
await this.modelSchemaManager.ensure(this.tableName);
|
|
13
|
-
await this.knex.client(this.tableName).where("modelId", params.model.modelId).delete();
|
|
13
|
+
await this.knex.client(this.tableName).where("tenant", params.model.tenant).andWhere("modelId", params.model.modelId).delete();
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
const SqlDeleteModel = DeleteModelStorageOperation.createImplementation({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/model/SqlDeleteModel.js","sources":["../../../src/operations/model/SqlDeleteModel.ts"],"sourcesContent":["import type { CmsModelStorageOperationsDeleteParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IModelRow } from \"./types.js\";\nimport { DeleteModelStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/model/DeleteModelStorageOperation.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { ModelSchemaManager } from \"~/features/modelSchemaManager/abstractions.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nclass SqlDeleteModelImpl implements DeleteModelStorageOperation.Interface {\n private tableName: string;\n\n constructor(\n private knex: KnexClient.Interface,\n tableNameResolver: TableNameResolver.Interface,\n private modelSchemaManager: ModelSchemaManager.Interface\n ) {\n this.tableName = tableNameResolver.resolve(\"models\");\n }\n\n async execute(params: CmsModelStorageOperationsDeleteParams) {\n await this.modelSchemaManager.ensure(this.tableName);\n await this.knex\n .client<IModelRow>(this.tableName)\n .where(\"modelId\", params.model.modelId)\n .delete();\n }\n}\n\nexport const SqlDeleteModel = DeleteModelStorageOperation.createImplementation({\n implementation: SqlDeleteModelImpl,\n dependencies: [KnexClient, TableNameResolver, ModelSchemaManager]\n});\n"],"names":["SqlDeleteModelImpl","knex","tableNameResolver","modelSchemaManager","params","SqlDeleteModel","DeleteModelStorageOperation","KnexClient","TableNameResolver","ModelSchemaManager"],"mappings":";;;;AAOA,MAAMA;IAGF,YACYC,IAA0B,EAClCC,iBAA8C,EACtCC,kBAAgD,CAC1D;aAHUF,IAAI,GAAJA;aAEAE,kBAAkB,GAAlBA;QAER,IAAI,CAAC,SAAS,GAAGD,kBAAkB,OAAO,CAAC;IAC/C;IAEA,MAAM,QAAQE,MAA6C,EAAE;QACzD,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;QACnD,MAAM,IAAI,CAAC,IAAI,CACV,MAAM,CAAY,IAAI,CAAC,SAAS,EAChC,KAAK,CAAC,WAAWA,OAAO,KAAK,CAAC,OAAO,
|
|
1
|
+
{"version":3,"file":"operations/model/SqlDeleteModel.js","sources":["../../../src/operations/model/SqlDeleteModel.ts"],"sourcesContent":["import type { CmsModelStorageOperationsDeleteParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IModelRow } from \"./types.js\";\nimport { DeleteModelStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/model/DeleteModelStorageOperation.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { ModelSchemaManager } from \"~/features/modelSchemaManager/abstractions.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nclass SqlDeleteModelImpl implements DeleteModelStorageOperation.Interface {\n private tableName: string;\n\n constructor(\n private knex: KnexClient.Interface,\n tableNameResolver: TableNameResolver.Interface,\n private modelSchemaManager: ModelSchemaManager.Interface\n ) {\n this.tableName = tableNameResolver.resolve(\"models\");\n }\n\n async execute(params: CmsModelStorageOperationsDeleteParams) {\n await this.modelSchemaManager.ensure(this.tableName);\n await this.knex\n .client<IModelRow>(this.tableName)\n .where(\"tenant\", params.model.tenant)\n .andWhere(\"modelId\", params.model.modelId)\n .delete();\n }\n}\n\nexport const SqlDeleteModel = DeleteModelStorageOperation.createImplementation({\n implementation: SqlDeleteModelImpl,\n dependencies: [KnexClient, TableNameResolver, ModelSchemaManager]\n});\n"],"names":["SqlDeleteModelImpl","knex","tableNameResolver","modelSchemaManager","params","SqlDeleteModel","DeleteModelStorageOperation","KnexClient","TableNameResolver","ModelSchemaManager"],"mappings":";;;;AAOA,MAAMA;IAGF,YACYC,IAA0B,EAClCC,iBAA8C,EACtCC,kBAAgD,CAC1D;aAHUF,IAAI,GAAJA;aAEAE,kBAAkB,GAAlBA;QAER,IAAI,CAAC,SAAS,GAAGD,kBAAkB,OAAO,CAAC;IAC/C;IAEA,MAAM,QAAQE,MAA6C,EAAE;QACzD,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;QACnD,MAAM,IAAI,CAAC,IAAI,CACV,MAAM,CAAY,IAAI,CAAC,SAAS,EAChC,KAAK,CAAC,UAAUA,OAAO,KAAK,CAAC,MAAM,EACnC,QAAQ,CAAC,WAAWA,OAAO,KAAK,CAAC,OAAO,EACxC,MAAM;IACf;AACJ;AAEO,MAAMC,iBAAiBC,4BAA4B,oBAAoB,CAAC;IAC3E,gBAAgBN;IAChB,cAAc;QAACO;QAAYC;QAAmBC;KAAmB;AACrE"}
|
|
@@ -13,7 +13,7 @@ class SqlUpdateModelImpl {
|
|
|
13
13
|
const model = params.model;
|
|
14
14
|
const row = modelToRow(model);
|
|
15
15
|
await this.modelSchemaManager.ensure(this.tableName);
|
|
16
|
-
await this.knex.client(this.tableName).where("modelId", model.modelId).update(row);
|
|
16
|
+
await this.knex.client(this.tableName).where("tenant", model.tenant).andWhere("modelId", model.modelId).update(row);
|
|
17
17
|
return model;
|
|
18
18
|
}
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"operations/model/SqlUpdateModel.js","sources":["../../../src/operations/model/SqlUpdateModel.ts"],"sourcesContent":["import type { CmsModelStorageOperationsUpdateParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IModelRow } from \"./types.js\";\nimport { UpdateModelStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/model/UpdateModelStorageOperation.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { ModelSchemaManager } from \"~/features/modelSchemaManager/abstractions.js\";\nimport { modelToRow } from \"./mappers.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nclass SqlUpdateModelImpl implements UpdateModelStorageOperation.Interface {\n private tableName: string;\n\n constructor(\n private knex: KnexClient.Interface,\n tableNameResolver: TableNameResolver.Interface,\n private modelSchemaManager: ModelSchemaManager.Interface\n ) {\n this.tableName = tableNameResolver.resolve(\"models\");\n }\n\n async execute(params: CmsModelStorageOperationsUpdateParams) {\n const model = params.model;\n const row = modelToRow(model);\n\n await this.modelSchemaManager.ensure(this.tableName);\n await this.knex\n .client<IModelRow>(this.tableName)\n .where(\"modelId\", model.modelId)\n .update(row);\n\n return model;\n }\n}\n\nexport const SqlUpdateModel = UpdateModelStorageOperation.createImplementation({\n implementation: SqlUpdateModelImpl,\n dependencies: [KnexClient, TableNameResolver, ModelSchemaManager]\n});\n"],"names":["SqlUpdateModelImpl","knex","tableNameResolver","modelSchemaManager","params","model","row","modelToRow","SqlUpdateModel","UpdateModelStorageOperation","KnexClient","TableNameResolver","ModelSchemaManager"],"mappings":";;;;;AAQA,MAAMA;IAGF,YACYC,IAA0B,EAClCC,iBAA8C,EACtCC,kBAAgD,CAC1D;aAHUF,IAAI,GAAJA;aAEAE,kBAAkB,GAAlBA;QAER,IAAI,CAAC,SAAS,GAAGD,kBAAkB,OAAO,CAAC;IAC/C;IAEA,MAAM,QAAQE,MAA6C,EAAE;QACzD,MAAMC,QAAQD,OAAO,KAAK;QAC1B,MAAME,MAAMC,WAAWF;QAEvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;QACnD,MAAM,IAAI,CAAC,IAAI,CACV,MAAM,CAAY,IAAI,CAAC,SAAS,EAChC,KAAK,CAAC,WAAWA,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"operations/model/SqlUpdateModel.js","sources":["../../../src/operations/model/SqlUpdateModel.ts"],"sourcesContent":["import type { CmsModelStorageOperationsUpdateParams } from \"@webiny/api-headless-cms/types/index.js\";\nimport type { IModelRow } from \"./types.js\";\nimport { UpdateModelStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/model/UpdateModelStorageOperation.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { ModelSchemaManager } from \"~/features/modelSchemaManager/abstractions.js\";\nimport { modelToRow } from \"./mappers.js\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nclass SqlUpdateModelImpl implements UpdateModelStorageOperation.Interface {\n private tableName: string;\n\n constructor(\n private knex: KnexClient.Interface,\n tableNameResolver: TableNameResolver.Interface,\n private modelSchemaManager: ModelSchemaManager.Interface\n ) {\n this.tableName = tableNameResolver.resolve(\"models\");\n }\n\n async execute(params: CmsModelStorageOperationsUpdateParams) {\n const model = params.model;\n const row = modelToRow(model);\n\n await this.modelSchemaManager.ensure(this.tableName);\n await this.knex\n .client<IModelRow>(this.tableName)\n .where(\"tenant\", model.tenant)\n .andWhere(\"modelId\", model.modelId)\n .update(row);\n\n return model;\n }\n}\n\nexport const SqlUpdateModel = UpdateModelStorageOperation.createImplementation({\n implementation: SqlUpdateModelImpl,\n dependencies: [KnexClient, TableNameResolver, ModelSchemaManager]\n});\n"],"names":["SqlUpdateModelImpl","knex","tableNameResolver","modelSchemaManager","params","model","row","modelToRow","SqlUpdateModel","UpdateModelStorageOperation","KnexClient","TableNameResolver","ModelSchemaManager"],"mappings":";;;;;AAQA,MAAMA;IAGF,YACYC,IAA0B,EAClCC,iBAA8C,EACtCC,kBAAgD,CAC1D;aAHUF,IAAI,GAAJA;aAEAE,kBAAkB,GAAlBA;QAER,IAAI,CAAC,SAAS,GAAGD,kBAAkB,OAAO,CAAC;IAC/C;IAEA,MAAM,QAAQE,MAA6C,EAAE;QACzD,MAAMC,QAAQD,OAAO,KAAK;QAC1B,MAAME,MAAMC,WAAWF;QAEvB,MAAM,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;QACnD,MAAM,IAAI,CAAC,IAAI,CACV,MAAM,CAAY,IAAI,CAAC,SAAS,EAChC,KAAK,CAAC,UAAUA,MAAM,MAAM,EAC5B,QAAQ,CAAC,WAAWA,MAAM,OAAO,EACjC,MAAM,CAACC;QAEZ,OAAOD;IACX;AACJ;AAEO,MAAMG,iBAAiBC,4BAA4B,oBAAoB,CAAC;IAC3E,gBAAgBT;IAChB,cAAc;QAACU;QAAYC;QAAmBC;KAAmB;AACrE"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@webiny/api-headless-cms-sql",
|
|
3
|
-
"version": "6.6.0-alpha.
|
|
3
|
+
"version": "6.6.0-alpha.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./index.js",
|
|
@@ -22,20 +22,20 @@
|
|
|
22
22
|
"description": "SQL storage operations for Headless CMS API.",
|
|
23
23
|
"license": "MIT",
|
|
24
24
|
"dependencies": {
|
|
25
|
-
"@webiny/api-core-sql": "6.6.0-alpha.
|
|
26
|
-
"@webiny/api-headless-cms": "6.6.0-alpha.
|
|
27
|
-
"@webiny/api-headless-cms-storage": "6.6.0-alpha.
|
|
28
|
-
"@webiny/db-utils": "6.6.0-alpha.
|
|
29
|
-
"@webiny/feature": "6.6.0-alpha.
|
|
30
|
-
"@webiny/handler": "6.6.0-alpha.
|
|
31
|
-
"@webiny/utils": "6.6.0-alpha.
|
|
25
|
+
"@webiny/api-core-sql": "6.6.0-alpha.8",
|
|
26
|
+
"@webiny/api-headless-cms": "6.6.0-alpha.8",
|
|
27
|
+
"@webiny/api-headless-cms-storage": "6.6.0-alpha.8",
|
|
28
|
+
"@webiny/db-utils": "6.6.0-alpha.8",
|
|
29
|
+
"@webiny/feature": "6.6.0-alpha.8",
|
|
30
|
+
"@webiny/handler": "6.6.0-alpha.8",
|
|
31
|
+
"@webiny/utils": "6.6.0-alpha.8",
|
|
32
32
|
"knex": "3.3.0"
|
|
33
33
|
},
|
|
34
34
|
"devDependencies": {
|
|
35
35
|
"@electric-sql/pglite": "0.5.5",
|
|
36
36
|
"@electric-sql/pglite-socket": "0.2.8",
|
|
37
|
-
"@webiny/api-core": "6.6.0-alpha.
|
|
38
|
-
"@webiny/build-tools": "6.6.0-alpha.
|
|
37
|
+
"@webiny/api-core": "6.6.0-alpha.8",
|
|
38
|
+
"@webiny/build-tools": "6.6.0-alpha.8",
|
|
39
39
|
"@webiny/di": "1.1.0",
|
|
40
40
|
"better-sqlite3": "13.0.3",
|
|
41
41
|
"pg": "8.23.0",
|