@webiny/api-headless-cms-sql 0.0.0-unstable.0d717d18dd → 0.0.0-unstable.a4f3e4ea8b
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.d.ts +0 -2
- package/features/entryTableManager/EntryTableManager.js +26 -39
- package/features/entryTableManager/EntryTableManager.js.map +1 -1
- package/index.d.ts +1 -4
- package/index.js +71 -24
- package/index.js.map +1 -1
- package/operations/entry/index.d.ts +13 -0
- package/operations/entry/index.js +373 -0
- package/operations/entry/index.js.map +1 -0
- package/operations/group/index.d.ts +5 -0
- package/operations/group/index.js +58 -0
- package/operations/group/index.js.map +1 -0
- package/operations/model/index.d.ts +5 -0
- package/operations/model/index.js +50 -0
- package/operations/model/index.js.map +1 -0
- package/package.json +12 -15
- package/types.d.ts +10 -0
- package/types.js +0 -0
- package/operations/entry/SqlCreateEntry.d.ts +0 -15
- package/operations/entry/SqlCreateEntry.js +0 -35
- package/operations/entry/SqlCreateEntry.js.map +0 -1
- package/operations/entry/SqlCreateEntryRevisionFrom.d.ts +0 -15
- package/operations/entry/SqlCreateEntryRevisionFrom.js +0 -55
- package/operations/entry/SqlCreateEntryRevisionFrom.js.map +0 -1
- package/operations/entry/SqlDeleteEntry.d.ts +0 -15
- package/operations/entry/SqlDeleteEntry.js +0 -29
- package/operations/entry/SqlDeleteEntry.js.map +0 -1
- package/operations/entry/SqlDeleteEntryRevision.d.ts +0 -15
- package/operations/entry/SqlDeleteEntryRevision.js +0 -39
- package/operations/entry/SqlDeleteEntryRevision.js.map +0 -1
- package/operations/entry/SqlDeleteMultipleEntries.d.ts +0 -15
- package/operations/entry/SqlDeleteMultipleEntries.js +0 -29
- package/operations/entry/SqlDeleteMultipleEntries.js.map +0 -1
- package/operations/entry/SqlGetEntriesByIds.d.ts +0 -15
- package/operations/entry/SqlGetEntriesByIds.js +0 -35
- package/operations/entry/SqlGetEntriesByIds.js.map +0 -1
- package/operations/entry/SqlGetEntry.d.ts +0 -25
- package/operations/entry/SqlGetEntry.js +0 -56
- package/operations/entry/SqlGetEntry.js.map +0 -1
- package/operations/entry/SqlGetLatestEntriesByIds.d.ts +0 -15
- package/operations/entry/SqlGetLatestEntriesByIds.js +0 -37
- package/operations/entry/SqlGetLatestEntriesByIds.js.map +0 -1
- package/operations/entry/SqlGetLatestRevisionByEntryId.d.ts +0 -15
- package/operations/entry/SqlGetLatestRevisionByEntryId.js +0 -32
- package/operations/entry/SqlGetLatestRevisionByEntryId.js.map +0 -1
- package/operations/entry/SqlGetPreviousRevision.d.ts +0 -15
- package/operations/entry/SqlGetPreviousRevision.js +0 -30
- package/operations/entry/SqlGetPreviousRevision.js.map +0 -1
- package/operations/entry/SqlGetPublishedEntriesByIds.d.ts +0 -15
- package/operations/entry/SqlGetPublishedEntriesByIds.js +0 -37
- package/operations/entry/SqlGetPublishedEntriesByIds.js.map +0 -1
- package/operations/entry/SqlGetPublishedRevisionByEntryId.d.ts +0 -15
- package/operations/entry/SqlGetPublishedRevisionByEntryId.js +0 -32
- package/operations/entry/SqlGetPublishedRevisionByEntryId.js.map +0 -1
- package/operations/entry/SqlGetRevisionById.d.ts +0 -15
- package/operations/entry/SqlGetRevisionById.js +0 -30
- package/operations/entry/SqlGetRevisionById.js.map +0 -1
- package/operations/entry/SqlGetRevisions.d.ts +0 -15
- package/operations/entry/SqlGetRevisions.js +0 -31
- package/operations/entry/SqlGetRevisions.js.map +0 -1
- package/operations/entry/SqlGetUniqueFieldValues.d.ts +0 -25
- package/operations/entry/SqlGetUniqueFieldValues.js +0 -58
- package/operations/entry/SqlGetUniqueFieldValues.js.map +0 -1
- package/operations/entry/SqlListEntries.d.ts +0 -25
- package/operations/entry/SqlListEntries.js +0 -52
- package/operations/entry/SqlListEntries.js.map +0 -1
- package/operations/entry/SqlMoveEntry.d.ts +0 -14
- package/operations/entry/SqlMoveEntry.js +0 -30
- package/operations/entry/SqlMoveEntry.js.map +0 -1
- package/operations/entry/SqlMoveToBin.d.ts +0 -14
- package/operations/entry/SqlMoveToBin.js +0 -35
- package/operations/entry/SqlMoveToBin.js.map +0 -1
- package/operations/entry/SqlPublishEntry.d.ts +0 -15
- package/operations/entry/SqlPublishEntry.js +0 -51
- package/operations/entry/SqlPublishEntry.js.map +0 -1
- package/operations/entry/SqlRestoreFromBin.d.ts +0 -14
- package/operations/entry/SqlRestoreFromBin.js +0 -36
- package/operations/entry/SqlRestoreFromBin.js.map +0 -1
- package/operations/entry/SqlUnpublishEntry.d.ts +0 -15
- package/operations/entry/SqlUnpublishEntry.js +0 -38
- package/operations/entry/SqlUnpublishEntry.js.map +0 -1
- package/operations/entry/SqlUpdateEntry.d.ts +0 -15
- package/operations/entry/SqlUpdateEntry.js +0 -36
- package/operations/entry/SqlUpdateEntry.js.map +0 -1
- package/operations/entry/feature.d.ts +0 -4
- package/operations/entry/feature.js +0 -53
- package/operations/entry/feature.js.map +0 -1
- package/operations/entry/queryHelpers.d.ts +0 -23
- package/operations/entry/queryHelpers.js +0 -105
- package/operations/entry/queryHelpers.js.map +0 -1
- package/operations/group/SqlCreateGroup.d.ts +0 -16
- package/operations/group/SqlCreateGroup.js +0 -28
- package/operations/group/SqlCreateGroup.js.map +0 -1
- package/operations/group/SqlDeleteGroup.d.ts +0 -16
- package/operations/group/SqlDeleteGroup.js +0 -26
- package/operations/group/SqlDeleteGroup.js.map +0 -1
- package/operations/group/SqlGetGroup.d.ts +0 -16
- package/operations/group/SqlGetGroup.js +0 -29
- package/operations/group/SqlGetGroup.js.map +0 -1
- package/operations/group/SqlListGroups.d.ts +0 -16
- package/operations/group/SqlListGroups.js +0 -43
- package/operations/group/SqlListGroups.js.map +0 -1
- package/operations/group/SqlUpdateGroup.d.ts +0 -16
- package/operations/group/SqlUpdateGroup.js +0 -28
- package/operations/group/SqlUpdateGroup.js.map +0 -1
- package/operations/group/feature.d.ts +0 -4
- package/operations/group/feature.js +0 -19
- package/operations/group/feature.js.map +0 -1
- package/operations/model/SqlCreateModel.d.ts +0 -16
- package/operations/model/SqlCreateModel.js +0 -30
- package/operations/model/SqlCreateModel.js.map +0 -1
- package/operations/model/SqlDeleteModel.d.ts +0 -16
- package/operations/model/SqlDeleteModel.js +0 -26
- package/operations/model/SqlDeleteModel.js.map +0 -1
- package/operations/model/SqlGetModel.d.ts +0 -16
- package/operations/model/SqlGetModel.js +0 -29
- package/operations/model/SqlGetModel.js.map +0 -1
- package/operations/model/SqlListModels.d.ts +0 -16
- package/operations/model/SqlListModels.js +0 -31
- package/operations/model/SqlListModels.js.map +0 -1
- package/operations/model/SqlUpdateModel.d.ts +0 -16
- package/operations/model/SqlUpdateModel.js +0 -30
- package/operations/model/SqlUpdateModel.js.map +0 -1
- package/operations/model/feature.d.ts +0 -4
- package/operations/model/feature.js +0 -19
- package/operations/model/feature.js.map +0 -1
|
@@ -5,11 +5,9 @@ declare class EntryTableManagerImpl implements EntryTableManagerAbstraction.Inte
|
|
|
5
5
|
private readonly knex;
|
|
6
6
|
private readonly tableName;
|
|
7
7
|
private initialized;
|
|
8
|
-
private initPromise?;
|
|
9
8
|
constructor(knex: KnexClient.Interface, tableNameResolver: TableNameResolver.Interface);
|
|
10
9
|
reset(): void;
|
|
11
10
|
ensureTable(): Promise<void>;
|
|
12
|
-
private doEnsureTable;
|
|
13
11
|
getTableName(): string;
|
|
14
12
|
private createTable;
|
|
15
13
|
}
|
|
@@ -12,17 +12,9 @@ class EntryTableManagerImpl {
|
|
|
12
12
|
}
|
|
13
13
|
reset() {
|
|
14
14
|
this.initialized = false;
|
|
15
|
-
this.initPromise = void 0;
|
|
16
15
|
}
|
|
17
16
|
async ensureTable() {
|
|
18
17
|
if (this.initialized) return;
|
|
19
|
-
if (!this.initPromise) this.initPromise = this.doEnsureTable().catch((err)=>{
|
|
20
|
-
this.initPromise = void 0;
|
|
21
|
-
throw err;
|
|
22
|
-
});
|
|
23
|
-
return this.initPromise;
|
|
24
|
-
}
|
|
25
|
-
async doEnsureTable() {
|
|
26
18
|
const exists = await this.knex.client.schema.hasTable(this.tableName);
|
|
27
19
|
if (!exists) await this.createTable();
|
|
28
20
|
this.initialized = true;
|
|
@@ -31,37 +23,32 @@ class EntryTableManagerImpl {
|
|
|
31
23
|
return this.tableName;
|
|
32
24
|
}
|
|
33
25
|
async createTable() {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
});
|
|
61
|
-
} catch (err) {
|
|
62
|
-
if (await this.knex.client.schema.hasTable(this.tableName)) return;
|
|
63
|
-
throw err;
|
|
64
|
-
}
|
|
26
|
+
await this.knex.client.schema.createTable(this.tableName, (table)=>{
|
|
27
|
+
table.text("id").primary();
|
|
28
|
+
table.text("entryId").notNullable();
|
|
29
|
+
table.text("modelId").notNullable();
|
|
30
|
+
table.text("tenant").notNullable();
|
|
31
|
+
table.integer("version").notNullable();
|
|
32
|
+
table.boolean("isLatest").defaultTo(false);
|
|
33
|
+
table.boolean("isPublished").defaultTo(false);
|
|
34
|
+
table.boolean("wbyDeleted").defaultTo(false);
|
|
35
|
+
table.text("data").notNullable();
|
|
36
|
+
table.index([
|
|
37
|
+
"tenant",
|
|
38
|
+
"modelId",
|
|
39
|
+
"isLatest"
|
|
40
|
+
]);
|
|
41
|
+
table.index([
|
|
42
|
+
"tenant",
|
|
43
|
+
"modelId",
|
|
44
|
+
"isPublished"
|
|
45
|
+
]);
|
|
46
|
+
table.index([
|
|
47
|
+
"tenant",
|
|
48
|
+
"modelId",
|
|
49
|
+
"entryId"
|
|
50
|
+
]);
|
|
51
|
+
});
|
|
65
52
|
}
|
|
66
53
|
}
|
|
67
54
|
const EntryTableManager_EntryTableManager = EntryTableManager.createImplementation({
|
|
@@ -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
|
|
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\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 }\n\n public async ensureTable(): Promise<void> {\n if (this.initialized) {\n return;\n }\n\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 await this.knex.client.schema.createTable(this.tableName, table => {\n table.text(\"id\").primary();\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.index([\"tenant\", \"modelId\", \"isLatest\"]);\n table.index([\"tenant\", \"modelId\", \"isPublished\"]);\n table.index([\"tenant\", \"modelId\", \"entryId\"]);\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","exists","table","EntryTableManager","EntryTableManagerAbstraction","KnexClient","TableNameResolver"],"mappings":";;;AAIA,MAAMA;IAKF,YAAYC,IAA0B,EAAEC,iBAA8C,CAAE;aAFhF,WAAW,GAAG;QAGlB,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;IACvB;IAEA,MAAa,cAA6B;QACtC,IAAI,IAAI,CAAC,WAAW,EAChB;QAGJ,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,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,EAAEC,CAAAA;YACtDA,MAAM,IAAI,CAAC,MAAM,OAAO;YACxBA,MAAM,IAAI,CAAC,WAAW,WAAW;YACjCA,MAAM,IAAI,CAAC,WAAW,WAAW;YACjCA,MAAM,IAAI,CAAC,UAAU,WAAW;YAChCA,MAAM,OAAO,CAAC,WAAW,WAAW;YACpCA,MAAM,OAAO,CAAC,YAAY,SAAS,CAAC;YACpCA,MAAM,OAAO,CAAC,eAAe,SAAS,CAAC;YACvCA,MAAM,OAAO,CAAC,cAAc,SAAS,CAAC;YACtCA,MAAM,IAAI,CAAC,QAAQ,WAAW;YAE9BA,MAAM,KAAK,CAAC;gBAAC;gBAAU;gBAAW;aAAW;YAC7CA,MAAM,KAAK,CAAC;gBAAC;gBAAU;gBAAW;aAAc;YAChDA,MAAM,KAAK,CAAC;gBAAC;gBAAU;gBAAW;aAAU;QAChD;IACJ;AACJ;AAEO,MAAMC,sCAAoBC,kBAAAA,oBAAiD,CAAC;IAC/E,gBAAgBT;IAChB,cAAc;QAACU;QAAYC;KAAkB;AACjD"}
|
package/index.d.ts
CHANGED
|
@@ -4,8 +4,5 @@ interface ISqlStorageOperationsConfig {
|
|
|
4
4
|
tableNamePrefix?: string;
|
|
5
5
|
tableNameSuffix?: string;
|
|
6
6
|
}
|
|
7
|
-
export declare const
|
|
8
|
-
name: string;
|
|
9
|
-
register(container: import("@webiny/di").Container, context: ISqlStorageOperationsConfig): void;
|
|
10
|
-
};
|
|
7
|
+
export declare const registerSqlStorageOperations: (config: ISqlStorageOperationsConfig) => import("@webiny/handler").RegisterExtensionPlugin<import("@webiny/handler/types").Context>[];
|
|
11
8
|
export {};
|
package/index.js
CHANGED
|
@@ -1,34 +1,81 @@
|
|
|
1
|
+
import { createGroupsStorageOperations } from "./operations/group/index.js";
|
|
2
|
+
import { createModelsStorageOperations } from "./operations/model/index.js";
|
|
3
|
+
import { createEntriesStorageOperations } from "./operations/entry/index.js";
|
|
4
|
+
import { createRegisterExtensionPlugin } from "@webiny/handler";
|
|
1
5
|
import { createFeature } from "@webiny/feature/api/index.js";
|
|
6
|
+
import { StorageOperationsFactory } from "@webiny/api-headless-cms/exports/api/cms/storage.js";
|
|
2
7
|
import { GroupSchemaManagerFeature } from "./features/groupSchemaManager/feature.js";
|
|
3
8
|
import { ModelSchemaManagerFeature } from "./features/modelSchemaManager/feature.js";
|
|
4
9
|
import { EntryTableManagerFeature } from "./features/entryTableManager/feature.js";
|
|
5
|
-
import {
|
|
10
|
+
import { GroupSchemaManager } from "./features/groupSchemaManager/abstractions.js";
|
|
11
|
+
import { ModelSchemaManager } from "./features/modelSchemaManager/abstractions.js";
|
|
12
|
+
import { EntryTableManager } from "./features/entryTableManager/abstractions.js";
|
|
13
|
+
import { TableNameResolver, TableNameResolverConfig } from "./features/tableNameResolver/abstractions.js";
|
|
6
14
|
import { TableNameResolverFeature } from "./features/tableNameResolver/feature.js";
|
|
7
15
|
import { ValueFilterFeature } from "@webiny/db-utils";
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
import { createDatetimeTransformValuePlugin, createFilterCreatePlugins, createLocationFolderIdPathPlugin, createPlainObjectPathPlugin } from "@webiny/api-headless-cms-storage";
|
|
17
|
+
import { KnexClient } from "@webiny/api-core-sql";
|
|
18
|
+
const createSqlStorageOperations = (params)=>{
|
|
19
|
+
const { container, plugins } = params;
|
|
20
|
+
const knex = container.resolve(KnexClient);
|
|
21
|
+
const tableNameResolver = container.resolve(TableNameResolver);
|
|
22
|
+
const groupSchemaManager = container.resolve(GroupSchemaManager);
|
|
23
|
+
const modelSchemaManager = container.resolve(ModelSchemaManager);
|
|
24
|
+
const entryTableManager = container.resolve(EntryTableManager);
|
|
25
|
+
plugins.register([
|
|
26
|
+
createFilterCreatePlugins(),
|
|
27
|
+
createPlainObjectPathPlugin(),
|
|
28
|
+
createLocationFolderIdPathPlugin(),
|
|
29
|
+
createDatetimeTransformValuePlugin()
|
|
30
|
+
]);
|
|
31
|
+
const groups = createGroupsStorageOperations(knex, tableNameResolver, groupSchemaManager);
|
|
32
|
+
const models = createModelsStorageOperations(knex, tableNameResolver, modelSchemaManager);
|
|
33
|
+
const entries = createEntriesStorageOperations({
|
|
34
|
+
knex,
|
|
35
|
+
entryTableManager,
|
|
36
|
+
container,
|
|
37
|
+
plugins
|
|
38
|
+
});
|
|
39
|
+
return {
|
|
40
|
+
name: "sql",
|
|
41
|
+
beforeInit: async ()=>{},
|
|
42
|
+
groups,
|
|
43
|
+
models,
|
|
44
|
+
entries
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
class SqlStorageOperationsFactoryImpl {
|
|
48
|
+
async create(context) {
|
|
49
|
+
return createSqlStorageOperations({
|
|
50
|
+
plugins: context.plugins,
|
|
51
|
+
container: context.container
|
|
20
52
|
});
|
|
21
|
-
TableNameResolverFeature.register(container);
|
|
22
|
-
ValueFilterFeature.register(container);
|
|
23
|
-
FilterRegistriesFeature.register(container);
|
|
24
|
-
GroupSchemaManagerFeature.register(container);
|
|
25
|
-
ModelSchemaManagerFeature.register(container);
|
|
26
|
-
EntryTableManagerFeature.register(container);
|
|
27
|
-
SqlGroupStorageOpsFeature.register(container);
|
|
28
|
-
SqlModelStorageOpsFeature.register(container);
|
|
29
|
-
SqlEntryStorageOpsFeature.register(container);
|
|
30
53
|
}
|
|
31
|
-
}
|
|
32
|
-
|
|
54
|
+
}
|
|
55
|
+
const registerSqlStorageOperations = (config)=>{
|
|
56
|
+
const storageOperationsFeature = createFeature({
|
|
57
|
+
name: "cms.storageOperations.sql",
|
|
58
|
+
register: (container)=>{
|
|
59
|
+
const sharedTables = "true" === process.env.WEBINY_SHARED_TABLES;
|
|
60
|
+
container.registerInstance(TableNameResolverConfig, {
|
|
61
|
+
sharedTables,
|
|
62
|
+
tableNamePrefix: config.tableNamePrefix,
|
|
63
|
+
tableNameSuffix: config.tableNameSuffix
|
|
64
|
+
});
|
|
65
|
+
TableNameResolverFeature.register(container);
|
|
66
|
+
ValueFilterFeature.register(container);
|
|
67
|
+
GroupSchemaManagerFeature.register(container);
|
|
68
|
+
ModelSchemaManagerFeature.register(container);
|
|
69
|
+
EntryTableManagerFeature.register(container);
|
|
70
|
+
container.registerFactory(StorageOperationsFactory, ()=>new SqlStorageOperationsFactoryImpl());
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
const plugin = createRegisterExtensionPlugin((context)=>storageOperationsFeature.register(context.container));
|
|
74
|
+
plugin.name = "cms.registerSqlStorageOperations";
|
|
75
|
+
return [
|
|
76
|
+
plugin
|
|
77
|
+
];
|
|
78
|
+
};
|
|
79
|
+
export { registerSqlStorageOperations };
|
|
33
80
|
|
|
34
81
|
//# sourceMappingURL=index.js.map
|
package/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api/index.js\";\nimport { GroupSchemaManagerFeature } from \"~/features/groupSchemaManager/feature.js\";\nimport { ModelSchemaManagerFeature } from \"~/features/modelSchemaManager/feature.js\";\nimport { EntryTableManagerFeature } from \"~/features/entryTableManager/feature.js\";\nimport { TableNameResolverConfig } from \"~/features/tableNameResolver/abstractions.js\";\nimport type { Knex } from \"knex\";\nimport { TableNameResolverFeature } from \"~/features/tableNameResolver/feature.js\";\nimport { ValueFilterFeature } from \"@webiny/db-utils\";\nimport {
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../src/index.ts"],"sourcesContent":["import type { CmsContext, SqlStorageOperationsFactory } from \"~/types.js\";\nimport { createGroupsStorageOperations } from \"~/operations/group/index.js\";\nimport { createModelsStorageOperations } from \"~/operations/model/index.js\";\nimport { createEntriesStorageOperations } from \"~/operations/entry/index.js\";\nimport { createRegisterExtensionPlugin } from \"@webiny/handler\";\nimport { createFeature } from \"@webiny/feature/api/index.js\";\nimport { StorageOperationsFactory as StorageOperationsFactoryAbstraction } from \"@webiny/api-headless-cms/exports/api/cms/storage.js\";\nimport { GroupSchemaManagerFeature } from \"~/features/groupSchemaManager/feature.js\";\nimport { ModelSchemaManagerFeature } from \"~/features/modelSchemaManager/feature.js\";\nimport { EntryTableManagerFeature } from \"~/features/entryTableManager/feature.js\";\nimport { GroupSchemaManager } from \"~/features/groupSchemaManager/abstractions.js\";\nimport { ModelSchemaManager } from \"~/features/modelSchemaManager/abstractions.js\";\nimport { EntryTableManager } from \"~/features/entryTableManager/abstractions.js\";\nimport { TableNameResolver } from \"~/features/tableNameResolver/abstractions.js\";\nimport { TableNameResolverConfig } from \"~/features/tableNameResolver/abstractions.js\";\nimport type { Knex } from \"knex\";\nimport { TableNameResolverFeature } from \"~/features/tableNameResolver/feature.js\";\nimport { ValueFilterFeature } from \"@webiny/db-utils\";\nimport {\n createFilterCreatePlugins,\n createPlainObjectPathPlugin,\n createLocationFolderIdPathPlugin,\n createDatetimeTransformValuePlugin\n} from \"@webiny/api-headless-cms-storage\";\nimport { KnexClient } from \"@webiny/api-core-sql\";\n\nconst createSqlStorageOperations: SqlStorageOperationsFactory = params => {\n const { container, plugins } = params;\n\n const knex = container.resolve(KnexClient);\n const tableNameResolver = container.resolve(TableNameResolver);\n const groupSchemaManager = container.resolve(GroupSchemaManager);\n const modelSchemaManager = container.resolve(ModelSchemaManager);\n const entryTableManager = container.resolve(EntryTableManager);\n\n /* Register filter create plugins and field path plugins for in-memory filtering. */\n plugins.register([\n createFilterCreatePlugins(),\n createPlainObjectPathPlugin(),\n createLocationFolderIdPathPlugin(),\n createDatetimeTransformValuePlugin()\n ]);\n\n const groups = createGroupsStorageOperations(knex, tableNameResolver, groupSchemaManager);\n\n const models = createModelsStorageOperations(knex, tableNameResolver, modelSchemaManager);\n\n const entries = createEntriesStorageOperations({\n knex,\n entryTableManager,\n container,\n plugins\n });\n\n return {\n name: \"sql\",\n beforeInit: async () => {\n /* Schema managers handle table creation lazily on first access. */\n },\n groups,\n models,\n entries\n };\n};\n\ninterface ISqlStorageOperationsConfig {\n knex: Knex;\n tableNamePrefix?: string;\n tableNameSuffix?: string;\n}\n\nclass SqlStorageOperationsFactoryImpl implements StorageOperationsFactoryAbstraction.Interface {\n public async create(context: CmsContext) {\n return createSqlStorageOperations({\n plugins: context.plugins,\n container: context.container\n });\n }\n}\n\nexport const registerSqlStorageOperations = (config: ISqlStorageOperationsConfig) => {\n const storageOperationsFeature = createFeature({\n name: \"cms.storageOperations.sql\",\n register: container => {\n const sharedTables = process.env.WEBINY_SHARED_TABLES === \"true\";\n\n container.registerInstance(TableNameResolverConfig, {\n sharedTables,\n tableNamePrefix: config.tableNamePrefix,\n tableNameSuffix: config.tableNameSuffix\n });\n\n TableNameResolverFeature.register(container);\n ValueFilterFeature.register(container);\n GroupSchemaManagerFeature.register(container);\n ModelSchemaManagerFeature.register(container);\n EntryTableManagerFeature.register(container);\n\n container.registerFactory(StorageOperationsFactoryAbstraction, () => {\n return new SqlStorageOperationsFactoryImpl();\n });\n }\n });\n\n const plugin = createRegisterExtensionPlugin(context => {\n return storageOperationsFeature.register(context.container);\n });\n\n plugin.name = \"cms.registerSqlStorageOperations\";\n\n return [plugin];\n};\n"],"names":["createSqlStorageOperations","params","container","plugins","knex","KnexClient","tableNameResolver","TableNameResolver","groupSchemaManager","GroupSchemaManager","modelSchemaManager","ModelSchemaManager","entryTableManager","EntryTableManager","createFilterCreatePlugins","createPlainObjectPathPlugin","createLocationFolderIdPathPlugin","createDatetimeTransformValuePlugin","groups","createGroupsStorageOperations","models","createModelsStorageOperations","entries","createEntriesStorageOperations","SqlStorageOperationsFactoryImpl","context","registerSqlStorageOperations","config","storageOperationsFeature","createFeature","sharedTables","process","TableNameResolverConfig","TableNameResolverFeature","ValueFilterFeature","GroupSchemaManagerFeature","ModelSchemaManagerFeature","EntryTableManagerFeature","StorageOperationsFactoryAbstraction","plugin","createRegisterExtensionPlugin"],"mappings":";;;;;;;;;;;;;;;;;AA0BA,MAAMA,6BAA0DC,CAAAA;IAC5D,MAAM,EAAEC,SAAS,EAAEC,OAAO,EAAE,GAAGF;IAE/B,MAAMG,OAAOF,UAAU,OAAO,CAACG;IAC/B,MAAMC,oBAAoBJ,UAAU,OAAO,CAACK;IAC5C,MAAMC,qBAAqBN,UAAU,OAAO,CAACO;IAC7C,MAAMC,qBAAqBR,UAAU,OAAO,CAACS;IAC7C,MAAMC,oBAAoBV,UAAU,OAAO,CAACW;IAG5CV,QAAQ,QAAQ,CAAC;QACbW;QACAC;QACAC;QACAC;KACH;IAED,MAAMC,SAASC,8BAA8Bf,MAAME,mBAAmBE;IAEtE,MAAMY,SAASC,8BAA8BjB,MAAME,mBAAmBI;IAEtE,MAAMY,UAAUC,+BAA+B;QAC3CnB;QACAQ;QACAV;QACAC;IACJ;IAEA,OAAO;QACH,MAAM;QACN,YAAY,WAEZ;QACAe;QACAE;QACAE;IACJ;AACJ;AAQA,MAAME;IACF,MAAa,OAAOC,OAAmB,EAAE;QACrC,OAAOzB,2BAA2B;YAC9B,SAASyB,QAAQ,OAAO;YACxB,WAAWA,QAAQ,SAAS;QAChC;IACJ;AACJ;AAEO,MAAMC,+BAA+B,CAACC;IACzC,MAAMC,2BAA2BC,cAAc;QAC3C,MAAM;QACN,UAAU3B,CAAAA;YACN,MAAM4B,eAAeC,AAAqC,WAArCA,QAAQ,GAAG,CAAC,oBAAoB;YAErD7B,UAAU,gBAAgB,CAAC8B,yBAAyB;gBAChDF;gBACA,iBAAiBH,OAAO,eAAe;gBACvC,iBAAiBA,OAAO,eAAe;YAC3C;YAEAM,yBAAyB,QAAQ,CAAC/B;YAClCgC,mBAAmB,QAAQ,CAAChC;YAC5BiC,0BAA0B,QAAQ,CAACjC;YACnCkC,0BAA0B,QAAQ,CAAClC;YACnCmC,yBAAyB,QAAQ,CAACnC;YAElCA,UAAU,eAAe,CAACoC,0BAAqC,IACpD,IAAId;QAEnB;IACJ;IAEA,MAAMe,SAASC,8BAA8Bf,CAAAA,UAClCG,yBAAyB,QAAQ,CAACH,QAAQ,SAAS;IAG9Dc,OAAO,IAAI,GAAG;IAEd,OAAO;QAACA;KAAO;AACnB"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { CmsEntryStorageOperations } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { PluginsContainer } from "@webiny/plugins";
|
|
3
|
+
import type { CmsContext } from "../../types.js";
|
|
4
|
+
import type { EntryTableManager } from "../../features/entryTableManager/abstractions.js";
|
|
5
|
+
import { KnexClient } from "@webiny/api-core-sql";
|
|
6
|
+
interface CreateEntriesStorageOperationsParams {
|
|
7
|
+
knex: KnexClient.Interface;
|
|
8
|
+
entryTableManager: EntryTableManager.Interface;
|
|
9
|
+
container: CmsContext["container"];
|
|
10
|
+
plugins: PluginsContainer;
|
|
11
|
+
}
|
|
12
|
+
export declare const createEntriesStorageOperations: (params: CreateEntriesStorageOperationsParams) => CmsEntryStorageOperations;
|
|
13
|
+
export {};
|