@webiny/api-headless-cms-ddb 6.4.5 → 6.6.0-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/abstractions/CmsDdbDataLoaders.d.ts +5 -0
- package/abstractions/CmsDdbDataLoaders.js +5 -0
- package/abstractions/CmsDdbDataLoaders.js.map +1 -0
- package/abstractions/CmsDdbEntryEntity.d.ts +5 -0
- package/abstractions/CmsDdbEntryEntity.js +5 -0
- package/abstractions/CmsDdbEntryEntity.js.map +1 -0
- package/abstractions/CmsDdbGroupEntity.d.ts +5 -0
- package/abstractions/CmsDdbGroupEntity.js +5 -0
- package/abstractions/CmsDdbGroupEntity.js.map +1 -0
- package/abstractions/CmsDdbModelEntity.d.ts +5 -0
- package/abstractions/CmsDdbModelEntity.js +5 -0
- package/abstractions/CmsDdbModelEntity.js.map +1 -0
- package/abstractions/CmsDdbTable.d.ts +5 -0
- package/abstractions/CmsDdbTable.js +5 -0
- package/abstractions/CmsDdbTable.js.map +1 -0
- package/index.d.ts +13 -2
- package/index.js +31 -71
- package/index.js.map +1 -1
- package/operations/entry/DdbCreateEntry.d.ts +16 -0
- package/operations/entry/DdbCreateEntry.js +77 -0
- package/operations/entry/DdbCreateEntry.js.map +1 -0
- package/operations/entry/DdbCreateEntryRevisionFrom.d.ts +16 -0
- package/operations/entry/DdbCreateEntryRevisionFrom.js +85 -0
- package/operations/entry/DdbCreateEntryRevisionFrom.js.map +1 -0
- package/operations/entry/DdbDeleteEntry.d.ts +16 -0
- package/operations/entry/DdbDeleteEntry.js +65 -0
- package/operations/entry/DdbDeleteEntry.js.map +1 -0
- package/operations/entry/DdbDeleteEntryRevision.d.ts +17 -0
- package/operations/entry/DdbDeleteEntryRevision.js +91 -0
- package/operations/entry/DdbDeleteEntryRevision.js.map +1 -0
- package/operations/entry/DdbDeleteMultipleEntries.d.ts +16 -0
- package/operations/entry/DdbDeleteMultipleEntries.js +56 -0
- package/operations/entry/DdbDeleteMultipleEntries.js.map +1 -0
- package/operations/entry/DdbGetEntriesByIds.d.ts +14 -0
- package/operations/entry/DdbGetEntriesByIds.js +31 -0
- package/operations/entry/DdbGetEntriesByIds.js.map +1 -0
- package/operations/entry/DdbGetEntry.d.ts +14 -0
- package/operations/entry/DdbGetEntry.js +27 -0
- package/operations/entry/DdbGetEntry.js.map +1 -0
- package/operations/entry/DdbGetLatestEntriesByIds.d.ts +14 -0
- package/operations/entry/DdbGetLatestEntriesByIds.js +31 -0
- package/operations/entry/DdbGetLatestEntriesByIds.js.map +1 -0
- package/operations/entry/DdbGetLatestRevisionByEntryId.d.ts +14 -0
- package/operations/entry/DdbGetLatestRevisionByEntryId.js +35 -0
- package/operations/entry/DdbGetLatestRevisionByEntryId.js.map +1 -0
- package/operations/entry/DdbGetPreviousRevision.d.ts +14 -0
- package/operations/entry/DdbGetPreviousRevision.js +53 -0
- package/operations/entry/DdbGetPreviousRevision.js.map +1 -0
- package/operations/entry/DdbGetPublishedEntriesByIds.d.ts +14 -0
- package/operations/entry/DdbGetPublishedEntriesByIds.js +31 -0
- package/operations/entry/DdbGetPublishedEntriesByIds.js.map +1 -0
- package/operations/entry/DdbGetPublishedRevisionByEntryId.d.ts +14 -0
- package/operations/entry/DdbGetPublishedRevisionByEntryId.js +35 -0
- package/operations/entry/DdbGetPublishedRevisionByEntryId.js.map +1 -0
- package/operations/entry/DdbGetRevisionById.d.ts +14 -0
- package/operations/entry/DdbGetRevisionById.js +34 -0
- package/operations/entry/DdbGetRevisionById.js.map +1 -0
- package/operations/entry/DdbGetRevisions.d.ts +14 -0
- package/operations/entry/DdbGetRevisions.js +33 -0
- package/operations/entry/DdbGetRevisions.js.map +1 -0
- package/operations/entry/DdbGetUniqueFieldValues.d.ts +12 -0
- package/operations/entry/DdbGetUniqueFieldValues.js +31 -0
- package/operations/entry/DdbGetUniqueFieldValues.js.map +1 -0
- package/operations/entry/DdbListEntries.d.ts +28 -0
- package/operations/entry/DdbListEntries.js +124 -0
- package/operations/entry/DdbListEntries.js.map +1 -0
- package/operations/entry/DdbMoveEntry.d.ts +14 -0
- package/operations/entry/DdbMoveEntry.js +57 -0
- package/operations/entry/DdbMoveEntry.js.map +1 -0
- package/operations/entry/DdbMoveToBin.d.ts +16 -0
- package/operations/entry/DdbMoveToBin.js +77 -0
- package/operations/entry/DdbMoveToBin.js.map +1 -0
- package/operations/entry/DdbPublishEntry.d.ts +18 -0
- package/operations/entry/DdbPublishEntry.js +161 -0
- package/operations/entry/DdbPublishEntry.js.map +1 -0
- package/operations/entry/DdbRestoreFromBin.d.ts +16 -0
- package/operations/entry/DdbRestoreFromBin.js +78 -0
- package/operations/entry/DdbRestoreFromBin.js.map +1 -0
- package/operations/entry/DdbUnpublishEntry.d.ts +17 -0
- package/operations/entry/DdbUnpublishEntry.js +112 -0
- package/operations/entry/DdbUnpublishEntry.js.map +1 -0
- package/operations/entry/DdbUpdateEntry.d.ts +17 -0
- package/operations/entry/DdbUpdateEntry.js +110 -0
- package/operations/entry/DdbUpdateEntry.js.map +1 -0
- package/operations/entry/dataLoaders.d.ts +7 -6
- package/operations/entry/dataLoaders.js +11 -3
- package/operations/entry/dataLoaders.js.map +1 -1
- package/operations/entry/feature.d.ts +4 -0
- package/operations/entry/feature.js +55 -0
- package/operations/entry/feature.js.map +1 -0
- package/operations/entry/storageEntryUtils.d.ts +8 -0
- package/operations/entry/storageEntryUtils.js +25 -0
- package/operations/entry/storageEntryUtils.js.map +1 -0
- package/operations/group/DdbCreateGroup.d.ts +12 -0
- package/operations/group/DdbCreateGroup.js +35 -0
- package/operations/group/DdbCreateGroup.js.map +1 -0
- package/operations/group/DdbDeleteGroup.d.ts +12 -0
- package/operations/group/DdbDeleteGroup.js +31 -0
- package/operations/group/DdbDeleteGroup.js.map +1 -0
- package/operations/group/DdbGetGroup.d.ts +12 -0
- package/operations/group/DdbGetGroup.js +31 -0
- package/operations/group/DdbGetGroup.js.map +1 -0
- package/operations/group/DdbListGroups.d.ts +14 -0
- package/operations/group/DdbListGroups.js +52 -0
- package/operations/group/DdbListGroups.js.map +1 -0
- package/operations/group/DdbUpdateGroup.d.ts +12 -0
- package/operations/group/DdbUpdateGroup.js +35 -0
- package/operations/group/DdbUpdateGroup.js.map +1 -0
- package/operations/group/feature.d.ts +4 -0
- package/operations/group/feature.js +19 -0
- package/operations/group/feature.js.map +1 -0
- package/operations/group/keys.d.ts +15 -0
- package/operations/group/keys.js +17 -0
- package/operations/group/keys.js.map +1 -0
- package/operations/model/DdbCreateModel.d.ts +12 -0
- package/operations/model/DdbCreateModel.js +37 -0
- package/operations/model/DdbCreateModel.js.map +1 -0
- package/operations/model/DdbDeleteModel.d.ts +12 -0
- package/operations/model/DdbDeleteModel.js +31 -0
- package/operations/model/DdbDeleteModel.js.map +1 -0
- package/operations/model/DdbGetModel.d.ts +12 -0
- package/operations/model/DdbGetModel.js +30 -0
- package/operations/model/DdbGetModel.js.map +1 -0
- package/operations/model/DdbListModels.d.ts +12 -0
- package/operations/model/DdbListModels.js +36 -0
- package/operations/model/DdbListModels.js.map +1 -0
- package/operations/model/DdbUpdateModel.d.ts +12 -0
- package/operations/model/DdbUpdateModel.js +36 -0
- package/operations/model/DdbUpdateModel.js.map +1 -0
- package/operations/model/feature.d.ts +4 -0
- package/operations/model/feature.js +19 -0
- package/operations/model/feature.js.map +1 -0
- package/operations/model/keys.d.ts +15 -0
- package/operations/model/keys.js +16 -0
- package/operations/model/keys.js.map +1 -0
- package/package.json +15 -17
- package/types.d.ts +9 -49
- package/types.js.map +1 -1
- package/dynamoDb/index.d.ts +0 -2
- package/dynamoDb/index.js +0 -11
- package/dynamoDb/index.js.map +0 -1
- package/dynamoDb/path/locationFolderId.d.ts +0 -2
- package/dynamoDb/path/locationFolderId.js +0 -21
- package/dynamoDb/path/locationFolderId.js.map +0 -1
- package/dynamoDb/path/plainObject.d.ts +0 -2
- package/dynamoDb/path/plainObject.js +0 -16
- package/dynamoDb/path/plainObject.js.map +0 -1
- package/dynamoDb/transformValue/datetime.d.ts +0 -5
- package/dynamoDb/transformValue/datetime.js +0 -29
- package/dynamoDb/transformValue/datetime.js.map +0 -1
- package/operations/entry/filtering/createExpressions.d.ts +0 -27
- package/operations/entry/filtering/createExpressions.js +0 -124
- package/operations/entry/filtering/createExpressions.js.map +0 -1
- package/operations/entry/filtering/createFields.d.ts +0 -16
- package/operations/entry/filtering/createFields.js +0 -93
- package/operations/entry/filtering/createFields.js.map +0 -1
- package/operations/entry/filtering/extractSort.d.ts +0 -17
- package/operations/entry/filtering/extractSort.js +0 -60
- package/operations/entry/filtering/extractSort.js.map +0 -1
- package/operations/entry/filtering/filter.d.ts +0 -16
- package/operations/entry/filtering/filter.js +0 -85
- package/operations/entry/filtering/filter.js.map +0 -1
- package/operations/entry/filtering/fullTextSearch.d.ts +0 -14
- package/operations/entry/filtering/fullTextSearch.js +0 -25
- package/operations/entry/filtering/fullTextSearch.js.map +0 -1
- package/operations/entry/filtering/getValue.d.ts +0 -5
- package/operations/entry/filtering/getValue.js +0 -37
- package/operations/entry/filtering/getValue.js.map +0 -1
- package/operations/entry/filtering/index.d.ts +0 -2
- package/operations/entry/filtering/index.js +0 -2
- package/operations/entry/filtering/mapPlugins.d.ts +0 -8
- package/operations/entry/filtering/mapPlugins.js +0 -18
- package/operations/entry/filtering/mapPlugins.js.map +0 -1
- package/operations/entry/filtering/plugins/defaultFilterCreate.d.ts +0 -2
- package/operations/entry/filtering/plugins/defaultFilterCreate.js +0 -33
- package/operations/entry/filtering/plugins/defaultFilterCreate.js.map +0 -1
- package/operations/entry/filtering/plugins/index.d.ts +0 -1
- package/operations/entry/filtering/plugins/index.js +0 -13
- package/operations/entry/filtering/plugins/index.js.map +0 -1
- package/operations/entry/filtering/plugins/objectFilterCreate.d.ts +0 -2
- package/operations/entry/filtering/plugins/objectFilterCreate.js +0 -68
- package/operations/entry/filtering/plugins/objectFilterCreate.js.map +0 -1
- package/operations/entry/filtering/plugins/refFilterCreate.d.ts +0 -3
- package/operations/entry/filtering/plugins/refFilterCreate.js +0 -63
- package/operations/entry/filtering/plugins/refFilterCreate.js.map +0 -1
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.d.ts +0 -2
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.js +0 -56
- package/operations/entry/filtering/plugins/searchableJsonFilterCreate.js.map +0 -1
- package/operations/entry/filtering/sort.d.ts +0 -12
- package/operations/entry/filtering/sort.js +0 -41
- package/operations/entry/filtering/sort.js.map +0 -1
- package/operations/entry/filtering/systemFields.d.ts +0 -2
- package/operations/entry/filtering/systemFields.js +0 -149
- package/operations/entry/filtering/systemFields.js.map +0 -1
- package/operations/entry/filtering/transform.d.ts +0 -6
- package/operations/entry/filtering/transform.js +0 -7
- package/operations/entry/filtering/transform.js.map +0 -1
- package/operations/entry/filtering/types.d.ts +0 -40
- package/operations/entry/filtering/types.js +0 -0
- package/operations/entry/filtering/values.d.ts +0 -2
- package/operations/entry/filtering/values.js +0 -15
- package/operations/entry/filtering/values.js.map +0 -1
- package/operations/entry/filtering/where.d.ts +0 -5
- package/operations/entry/filtering/where.js +0 -22
- package/operations/entry/filtering/where.js.map +0 -1
- package/operations/entry/index.d.ts +0 -9
- package/operations/entry/index.js +0 -943
- package/operations/entry/index.js.map +0 -1
- package/operations/group/index.d.ts +0 -8
- package/operations/group/index.js +0 -121
- package/operations/group/index.js.map +0 -1
- package/operations/model/index.d.ts +0 -7
- package/operations/model/index.js +0 -106
- package/operations/model/index.js.map +0 -1
- package/plugins/CmsEntryFieldFilterPathPlugin.d.ts +0 -23
- package/plugins/CmsEntryFieldFilterPathPlugin.js +0 -30
- package/plugins/CmsEntryFieldFilterPathPlugin.js.map +0 -1
- package/plugins/CmsEntryFieldFilterPlugin.d.ts +0 -43
- package/plugins/CmsEntryFieldFilterPlugin.js +0 -20
- package/plugins/CmsEntryFieldFilterPlugin.js.map +0 -1
- package/plugins/CmsEntryFieldSortingPlugin.d.ts +0 -42
- package/plugins/CmsEntryFieldSortingPlugin.js +0 -20
- package/plugins/CmsEntryFieldSortingPlugin.js.map +0 -1
- package/plugins/CmsFieldFilterValueTransformPlugin.d.ts +0 -11
- package/plugins/CmsFieldFilterValueTransformPlugin.js +0 -19
- package/plugins/CmsFieldFilterValueTransformPlugin.js.map +0 -1
- package/plugins/index.d.ts +0 -4
- package/plugins/index.js +0 -4
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CmsModel, CmsEntryValues, CmsEntryStorageOperationsGetRevisionParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { GetRevisionByIdStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js";
|
|
3
|
+
import { CmsDdbDataLoaders } from "../../abstractions/CmsDdbDataLoaders.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
declare class DdbGetRevisionByIdImpl implements GetRevisionByIdStorageOperation.Interface {
|
|
6
|
+
private dataLoaders;
|
|
7
|
+
private storageModelProvider;
|
|
8
|
+
constructor(dataLoaders: CmsDdbDataLoaders.Interface, storageModelProvider: CmsStorageModelProvider.Interface);
|
|
9
|
+
execute<T extends CmsEntryValues = CmsEntryValues>(initialModel: CmsModel, params: CmsEntryStorageOperationsGetRevisionParams): Promise<import("@webiny/api-headless-cms/types/types.js").CmsStorageEntry<T> | null>;
|
|
10
|
+
}
|
|
11
|
+
export declare const DdbGetRevisionById: typeof DdbGetRevisionByIdImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js").IGetRevisionByIdStorageOperation>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { GetRevisionByIdStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js";
|
|
2
|
+
import { CmsDdbDataLoaders } from "../../abstractions/CmsDdbDataLoaders.js";
|
|
3
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
4
|
+
import { convertFromStorageEntry } from "./storageEntryUtils.js";
|
|
5
|
+
class DdbGetRevisionByIdImpl {
|
|
6
|
+
constructor(dataLoaders, storageModelProvider){
|
|
7
|
+
this.dataLoaders = dataLoaders;
|
|
8
|
+
this.storageModelProvider = storageModelProvider;
|
|
9
|
+
}
|
|
10
|
+
async execute(initialModel, params) {
|
|
11
|
+
const model = this.storageModelProvider.getModel(initialModel);
|
|
12
|
+
const [entry] = await this.dataLoaders.getRevisionById({
|
|
13
|
+
model,
|
|
14
|
+
ids: [
|
|
15
|
+
params.id
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
if (!entry) return null;
|
|
19
|
+
return convertFromStorageEntry({
|
|
20
|
+
model,
|
|
21
|
+
storageEntry: entry
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
const DdbGetRevisionById = GetRevisionByIdStorageOperation.createImplementation({
|
|
26
|
+
implementation: DdbGetRevisionByIdImpl,
|
|
27
|
+
dependencies: [
|
|
28
|
+
CmsDdbDataLoaders,
|
|
29
|
+
CmsStorageModelProvider
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
export { DdbGetRevisionById };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=DdbGetRevisionById.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/DdbGetRevisionById.js","sources":["../../../src/operations/entry/DdbGetRevisionById.ts"],"sourcesContent":["import type {\n CmsModel,\n CmsEntryValues,\n CmsEntryStorageOperationsGetRevisionParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { GetRevisionByIdStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/GetRevisionByIdStorageOperation.js\";\nimport { CmsDdbDataLoaders } from \"~/abstractions/CmsDdbDataLoaders.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { convertFromStorageEntry } from \"./storageEntryUtils.js\";\n\nclass DdbGetRevisionByIdImpl implements GetRevisionByIdStorageOperation.Interface {\n constructor(\n private dataLoaders: CmsDdbDataLoaders.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface\n ) {}\n\n async execute<T extends CmsEntryValues = CmsEntryValues>(\n initialModel: CmsModel,\n params: CmsEntryStorageOperationsGetRevisionParams\n ) {\n const model = this.storageModelProvider.getModel<T>(initialModel);\n\n const [entry] = await this.dataLoaders.getRevisionById<T>({\n model,\n ids: [params.id]\n });\n if (!entry) {\n return null;\n }\n return convertFromStorageEntry<T>({ model, storageEntry: entry });\n }\n}\n\nexport const DdbGetRevisionById = GetRevisionByIdStorageOperation.createImplementation({\n implementation: DdbGetRevisionByIdImpl,\n dependencies: [CmsDdbDataLoaders, CmsStorageModelProvider]\n});\n"],"names":["DdbGetRevisionByIdImpl","dataLoaders","storageModelProvider","initialModel","params","model","entry","convertFromStorageEntry","DdbGetRevisionById","GetRevisionByIdStorageOperation","CmsDdbDataLoaders","CmsStorageModelProvider"],"mappings":";;;;AAUA,MAAMA;IACF,YACYC,WAAwC,EACxCC,oBAAuD,CACjE;aAFUD,WAAW,GAAXA;aACAC,oBAAoB,GAApBA;IACT;IAEH,MAAM,QACFC,YAAsB,EACtBC,MAAkD,EACpD;QACE,MAAMC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAIF;QAEpD,MAAM,CAACG,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe,CAAI;YACtDD;YACA,KAAK;gBAACD,OAAO,EAAE;aAAC;QACpB;QACA,IAAI,CAACE,OACD,OAAO;QAEX,OAAOC,wBAA2B;YAAEF;YAAO,cAAcC;QAAM;IACnE;AACJ;AAEO,MAAME,qBAAqBC,gCAAgC,oBAAoB,CAAC;IACnF,gBAAgBT;IAChB,cAAc;QAACU;QAAmBC;KAAwB;AAC9D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CmsModel, CmsEntryValues, CmsEntryStorageOperationsGetRevisionsParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { GetRevisionsStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js";
|
|
3
|
+
import { CmsDdbDataLoaders } from "../../abstractions/CmsDdbDataLoaders.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
declare class DdbGetRevisionsImpl implements GetRevisionsStorageOperation.Interface {
|
|
6
|
+
private dataLoaders;
|
|
7
|
+
private storageModelProvider;
|
|
8
|
+
constructor(dataLoaders: CmsDdbDataLoaders.Interface, storageModelProvider: CmsStorageModelProvider.Interface);
|
|
9
|
+
execute<T extends CmsEntryValues = CmsEntryValues>(initialModel: CmsModel, params: CmsEntryStorageOperationsGetRevisionsParams): Promise<import("@webiny/api-headless-cms/types/types.js").CmsStorageEntry<T>[]>;
|
|
10
|
+
}
|
|
11
|
+
export declare const DdbGetRevisions: typeof DdbGetRevisionsImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js").IGetRevisionsStorageOperation>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { GetRevisionsStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js";
|
|
2
|
+
import { CmsDdbDataLoaders } from "../../abstractions/CmsDdbDataLoaders.js";
|
|
3
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
4
|
+
import { convertFromStorageEntry } from "./storageEntryUtils.js";
|
|
5
|
+
class DdbGetRevisionsImpl {
|
|
6
|
+
constructor(dataLoaders, storageModelProvider){
|
|
7
|
+
this.dataLoaders = dataLoaders;
|
|
8
|
+
this.storageModelProvider = storageModelProvider;
|
|
9
|
+
}
|
|
10
|
+
async execute(initialModel, params) {
|
|
11
|
+
const model = this.storageModelProvider.getModel(initialModel);
|
|
12
|
+
const items = await this.dataLoaders.getAllEntryRevisions({
|
|
13
|
+
model,
|
|
14
|
+
ids: [
|
|
15
|
+
params.id
|
|
16
|
+
]
|
|
17
|
+
});
|
|
18
|
+
return items.map((item)=>convertFromStorageEntry({
|
|
19
|
+
storageEntry: item,
|
|
20
|
+
model
|
|
21
|
+
}));
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const DdbGetRevisions = GetRevisionsStorageOperation.createImplementation({
|
|
25
|
+
implementation: DdbGetRevisionsImpl,
|
|
26
|
+
dependencies: [
|
|
27
|
+
CmsDdbDataLoaders,
|
|
28
|
+
CmsStorageModelProvider
|
|
29
|
+
]
|
|
30
|
+
});
|
|
31
|
+
export { DdbGetRevisions };
|
|
32
|
+
|
|
33
|
+
//# sourceMappingURL=DdbGetRevisions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/DdbGetRevisions.js","sources":["../../../src/operations/entry/DdbGetRevisions.ts"],"sourcesContent":["import type {\n CmsModel,\n CmsEntryValues,\n CmsEntryStorageOperationsGetRevisionsParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { GetRevisionsStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/GetRevisionsStorageOperation.js\";\nimport { CmsDdbDataLoaders } from \"~/abstractions/CmsDdbDataLoaders.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { convertFromStorageEntry } from \"./storageEntryUtils.js\";\n\nclass DdbGetRevisionsImpl implements GetRevisionsStorageOperation.Interface {\n constructor(\n private dataLoaders: CmsDdbDataLoaders.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface\n ) {}\n\n async execute<T extends CmsEntryValues = CmsEntryValues>(\n initialModel: CmsModel,\n params: CmsEntryStorageOperationsGetRevisionsParams\n ) {\n const model = this.storageModelProvider.getModel<T>(initialModel);\n\n const items = await this.dataLoaders.getAllEntryRevisions<T>({\n model,\n ids: [params.id]\n });\n\n return items.map(item => {\n return convertFromStorageEntry<T>({\n storageEntry: item,\n model\n });\n });\n }\n}\n\nexport const DdbGetRevisions = GetRevisionsStorageOperation.createImplementation({\n implementation: DdbGetRevisionsImpl,\n dependencies: [CmsDdbDataLoaders, CmsStorageModelProvider]\n});\n"],"names":["DdbGetRevisionsImpl","dataLoaders","storageModelProvider","initialModel","params","model","items","item","convertFromStorageEntry","DdbGetRevisions","GetRevisionsStorageOperation","CmsDdbDataLoaders","CmsStorageModelProvider"],"mappings":";;;;AAUA,MAAMA;IACF,YACYC,WAAwC,EACxCC,oBAAuD,CACjE;aAFUD,WAAW,GAAXA;aACAC,oBAAoB,GAApBA;IACT;IAEH,MAAM,QACFC,YAAsB,EACtBC,MAAmD,EACrD;QACE,MAAMC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAIF;QAEpD,MAAMG,QAAQ,MAAM,IAAI,CAAC,WAAW,CAAC,oBAAoB,CAAI;YACzDD;YACA,KAAK;gBAACD,OAAO,EAAE;aAAC;QACpB;QAEA,OAAOE,MAAM,GAAG,CAACC,CAAAA,OACNC,wBAA2B;gBAC9B,cAAcD;gBACdF;YACJ;IAER;AACJ;AAEO,MAAMI,kBAAkBC,6BAA6B,oBAAoB,CAAC;IAC7E,gBAAgBV;IAChB,cAAc;QAACW;QAAmBC;KAAwB;AAC9D"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CmsModel, CmsEntryStorageOperationsGetUniqueFieldValuesParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { GetUniqueFieldValuesStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js";
|
|
3
|
+
import { ListEntriesStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js";
|
|
4
|
+
declare class DdbGetUniqueFieldValuesImpl implements GetUniqueFieldValuesStorageOperation.Interface {
|
|
5
|
+
private listEntries;
|
|
6
|
+
constructor(listEntries: ListEntriesStorageOperation.Interface);
|
|
7
|
+
execute(model: CmsModel, params: CmsEntryStorageOperationsGetUniqueFieldValuesParams): Promise<import("@webiny/api-headless-cms/types/types").CmsEntryUniqueValue[]>;
|
|
8
|
+
}
|
|
9
|
+
export declare const DdbGetUniqueFieldValues: typeof DdbGetUniqueFieldValuesImpl & {
|
|
10
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js").IGetUniqueFieldValuesStorageOperation>;
|
|
11
|
+
};
|
|
12
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import error from "@webiny/error";
|
|
2
|
+
import { GetUniqueFieldValuesStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js";
|
|
3
|
+
import { ListEntriesStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js";
|
|
4
|
+
import { aggregateUniqueFieldValues } from "@webiny/api-headless-cms-storage";
|
|
5
|
+
const MAX_LIST_LIMIT = 1000000;
|
|
6
|
+
class DdbGetUniqueFieldValuesImpl {
|
|
7
|
+
constructor(listEntries){
|
|
8
|
+
this.listEntries = listEntries;
|
|
9
|
+
}
|
|
10
|
+
async execute(model, params) {
|
|
11
|
+
const { where, fieldId } = params;
|
|
12
|
+
const field = model.fields.find((f)=>f.fieldId === fieldId);
|
|
13
|
+
if (!field) throw new error('Could not find field with given "fieldId" value.', "FIELD_NOT_FOUND", {
|
|
14
|
+
fieldId
|
|
15
|
+
});
|
|
16
|
+
const { items } = await this.listEntries.execute(model, {
|
|
17
|
+
where,
|
|
18
|
+
limit: MAX_LIST_LIMIT
|
|
19
|
+
});
|
|
20
|
+
return aggregateUniqueFieldValues(items, field.fieldId);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
const DdbGetUniqueFieldValues = GetUniqueFieldValuesStorageOperation.createImplementation({
|
|
24
|
+
implementation: DdbGetUniqueFieldValuesImpl,
|
|
25
|
+
dependencies: [
|
|
26
|
+
ListEntriesStorageOperation
|
|
27
|
+
]
|
|
28
|
+
});
|
|
29
|
+
export { DdbGetUniqueFieldValues };
|
|
30
|
+
|
|
31
|
+
//# sourceMappingURL=DdbGetUniqueFieldValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/DdbGetUniqueFieldValues.js","sources":["../../../src/operations/entry/DdbGetUniqueFieldValues.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n CmsModel,\n CmsEntryStorageOperationsGetUniqueFieldValuesParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { GetUniqueFieldValuesStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js\";\nimport { ListEntriesStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js\";\nimport { aggregateUniqueFieldValues } from \"@webiny/api-headless-cms-storage\";\n\nconst MAX_LIST_LIMIT = 1000000;\n\nclass DdbGetUniqueFieldValuesImpl implements GetUniqueFieldValuesStorageOperation.Interface {\n constructor(private listEntries: ListEntriesStorageOperation.Interface) {}\n\n async execute(model: CmsModel, params: CmsEntryStorageOperationsGetUniqueFieldValuesParams) {\n const { where, fieldId } = params;\n\n const field = model.fields.find(f => f.fieldId === fieldId);\n if (!field) {\n throw new WebinyError(\n `Could not find field with given \"fieldId\" value.`,\n \"FIELD_NOT_FOUND\",\n { fieldId }\n );\n }\n\n const { items } = await this.listEntries.execute(model, {\n where,\n limit: MAX_LIST_LIMIT\n });\n\n return aggregateUniqueFieldValues(items, field.fieldId);\n }\n}\n\nexport const DdbGetUniqueFieldValues = GetUniqueFieldValuesStorageOperation.createImplementation({\n implementation: DdbGetUniqueFieldValuesImpl,\n dependencies: [ListEntriesStorageOperation]\n});\n"],"names":["MAX_LIST_LIMIT","DdbGetUniqueFieldValuesImpl","listEntries","model","params","where","fieldId","field","f","WebinyError","items","aggregateUniqueFieldValues","DdbGetUniqueFieldValues","GetUniqueFieldValuesStorageOperation","ListEntriesStorageOperation"],"mappings":";;;;AASA,MAAMA,iBAAiB;AAEvB,MAAMC;IACF,YAAoBC,WAAkD,CAAE;aAApDA,WAAW,GAAXA;IAAqD;IAEzE,MAAM,QAAQC,KAAe,EAAEC,MAA2D,EAAE;QACxF,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGF;QAE3B,MAAMG,QAAQJ,MAAM,MAAM,CAAC,IAAI,CAACK,CAAAA,IAAKA,EAAE,OAAO,KAAKF;QACnD,IAAI,CAACC,OACD,MAAM,IAAIE,MACN,oDACA,mBACA;YAAEH;QAAQ;QAIlB,MAAM,EAAEI,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAACP,OAAO;YACpDE;YACA,OAAOL;QACX;QAEA,OAAOW,2BAA2BD,OAAOH,MAAM,OAAO;IAC1D;AACJ;AAEO,MAAMK,0BAA0BC,qCAAqC,oBAAoB,CAAC;IAC7F,gBAAgBZ;IAChB,cAAc;QAACa;KAA4B;AAC/C"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CmsEntry, CmsEntryStorageOperationsListParams, CmsEntryValues, CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { ListEntriesStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js";
|
|
3
|
+
import { CmsDdbEntryEntity } from "../../abstractions/CmsDdbEntryEntity.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
import { StorageTransformRegistry } from "@webiny/api-headless-cms/exports/api/cms/storage.js";
|
|
6
|
+
import { ValueFilterRegistry } from "@webiny/db-utils";
|
|
7
|
+
import { FieldFilterPathRegistry, FieldFilterValueTransformRegistry, FieldFilterCreateRegistry, FieldSortingRegistry } from "@webiny/api-headless-cms-storage";
|
|
8
|
+
declare class DdbListEntriesImpl implements ListEntriesStorageOperation.Interface {
|
|
9
|
+
private entity;
|
|
10
|
+
private storageModelProvider;
|
|
11
|
+
private storageTransformRegistry;
|
|
12
|
+
private pathRegistry;
|
|
13
|
+
private transformRegistry;
|
|
14
|
+
private filterCreateRegistry;
|
|
15
|
+
private sortingRegistry;
|
|
16
|
+
private valueFilterRegistry;
|
|
17
|
+
constructor(entity: CmsDdbEntryEntity.Interface, storageModelProvider: CmsStorageModelProvider.Interface, storageTransformRegistry: StorageTransformRegistry.Interface, pathRegistry: FieldFilterPathRegistry.Interface, transformRegistry: FieldFilterValueTransformRegistry.Interface, filterCreateRegistry: FieldFilterCreateRegistry.Interface, sortingRegistry: FieldSortingRegistry.Interface, valueFilterRegistry: ValueFilterRegistry.Interface);
|
|
18
|
+
execute<T extends CmsEntryValues = CmsEntryValues>(initialModel: CmsModel, params: CmsEntryStorageOperationsListParams): Promise<{
|
|
19
|
+
hasMoreItems: boolean;
|
|
20
|
+
totalCount: number;
|
|
21
|
+
cursor: import("@webiny/utils").CursorOutput;
|
|
22
|
+
items: CmsEntry<T>[];
|
|
23
|
+
}>;
|
|
24
|
+
}
|
|
25
|
+
export declare const DdbListEntries: typeof DdbListEntriesImpl & {
|
|
26
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js").IListEntriesStorageOperation>;
|
|
27
|
+
};
|
|
28
|
+
export {};
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import error from "@webiny/error";
|
|
2
|
+
import { ListEntriesStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js";
|
|
3
|
+
import { CmsDdbEntryEntity } from "../../abstractions/CmsDdbEntryEntity.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
import { StorageTransformRegistry } from "@webiny/api-headless-cms/exports/api/cms/storage.js";
|
|
6
|
+
import { createGSIPartitionKey } from "./keys.js";
|
|
7
|
+
import { decodeCursor, encodeCursor } from "@webiny/utils";
|
|
8
|
+
import { ValueFilterRegistry } from "@webiny/db-utils";
|
|
9
|
+
import { FieldFilterCreateRegistry, FieldFilterPathRegistry, FieldFilterValueTransformRegistry, FieldSortingRegistry, createFields, createStorageTransformCallable, filter, sort } from "@webiny/api-headless-cms-storage";
|
|
10
|
+
import { convertFromStorageEntry } from "./storageEntryUtils.js";
|
|
11
|
+
const MAX_LIST_LIMIT = 1000000;
|
|
12
|
+
class DdbListEntriesImpl {
|
|
13
|
+
constructor(entity, storageModelProvider, storageTransformRegistry, pathRegistry, transformRegistry, filterCreateRegistry, sortingRegistry, valueFilterRegistry){
|
|
14
|
+
this.entity = entity;
|
|
15
|
+
this.storageModelProvider = storageModelProvider;
|
|
16
|
+
this.storageTransformRegistry = storageTransformRegistry;
|
|
17
|
+
this.pathRegistry = pathRegistry;
|
|
18
|
+
this.transformRegistry = transformRegistry;
|
|
19
|
+
this.filterCreateRegistry = filterCreateRegistry;
|
|
20
|
+
this.sortingRegistry = sortingRegistry;
|
|
21
|
+
this.valueFilterRegistry = valueFilterRegistry;
|
|
22
|
+
}
|
|
23
|
+
async execute(initialModel, params) {
|
|
24
|
+
const model = this.storageModelProvider.getModel(initialModel);
|
|
25
|
+
const { limit: initialLimit = 10, where: initialWhere, after, sort: sortBy, fields, search } = params;
|
|
26
|
+
const limit = initialLimit <= 0 || initialLimit >= MAX_LIST_LIMIT ? MAX_LIST_LIMIT : initialLimit;
|
|
27
|
+
const type = initialWhere.published ? "P" : "L";
|
|
28
|
+
const partitionKey = createGSIPartitionKey(model, type);
|
|
29
|
+
const options = {
|
|
30
|
+
index: "GSI1",
|
|
31
|
+
gte: " "
|
|
32
|
+
};
|
|
33
|
+
let storageEntries = [];
|
|
34
|
+
try {
|
|
35
|
+
storageEntries = await this.entity.queryAll({
|
|
36
|
+
partitionKey,
|
|
37
|
+
options
|
|
38
|
+
});
|
|
39
|
+
} catch (ex) {
|
|
40
|
+
throw new error(ex.message, "QUERY_ENTRIES_ERROR", {
|
|
41
|
+
error: ex,
|
|
42
|
+
partitionKey,
|
|
43
|
+
options
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (0 === storageEntries.length) return {
|
|
47
|
+
hasMoreItems: false,
|
|
48
|
+
totalCount: 0,
|
|
49
|
+
cursor: null,
|
|
50
|
+
items: []
|
|
51
|
+
};
|
|
52
|
+
const where = {
|
|
53
|
+
...initialWhere
|
|
54
|
+
};
|
|
55
|
+
delete where["published"];
|
|
56
|
+
delete where["latest"];
|
|
57
|
+
const pathRegistry = this.pathRegistry;
|
|
58
|
+
const transformRegistry = this.transformRegistry;
|
|
59
|
+
const filterCreateRegistry = this.filterCreateRegistry;
|
|
60
|
+
const sortingRegistry = this.sortingRegistry;
|
|
61
|
+
const modelFields = createFields({
|
|
62
|
+
pathRegistry,
|
|
63
|
+
transformRegistry,
|
|
64
|
+
fields: model.fields
|
|
65
|
+
});
|
|
66
|
+
const fromStorage = createStorageTransformCallable(this.storageTransformRegistry, model);
|
|
67
|
+
const records = await Promise.all(storageEntries.map(async (storageEntry)=>{
|
|
68
|
+
const entry = convertFromStorageEntry({
|
|
69
|
+
storageEntry: storageEntry.data,
|
|
70
|
+
model
|
|
71
|
+
});
|
|
72
|
+
for (const field of model.fields)entry.values[field.fieldId] = await fromStorage(field, entry.values[field.fieldId]);
|
|
73
|
+
return entry;
|
|
74
|
+
}));
|
|
75
|
+
const valueFilterRegistry = this.valueFilterRegistry;
|
|
76
|
+
const filteredItems = filter({
|
|
77
|
+
items: records,
|
|
78
|
+
where,
|
|
79
|
+
filterCreateRegistry,
|
|
80
|
+
transformRegistry,
|
|
81
|
+
fields: modelFields,
|
|
82
|
+
fullTextSearch: {
|
|
83
|
+
term: search,
|
|
84
|
+
fields: fields || []
|
|
85
|
+
},
|
|
86
|
+
valueFilterRegistry
|
|
87
|
+
});
|
|
88
|
+
const totalCount = filteredItems.length;
|
|
89
|
+
const sortedItems = sort({
|
|
90
|
+
model,
|
|
91
|
+
items: filteredItems,
|
|
92
|
+
sort: sortBy,
|
|
93
|
+
fields: modelFields,
|
|
94
|
+
sortingRegistry
|
|
95
|
+
});
|
|
96
|
+
const start = parseInt(decodeCursor(after) || "0") || 0;
|
|
97
|
+
const hasMoreItems = totalCount > start + limit;
|
|
98
|
+
const end = limit > totalCount + start + limit ? void 0 : start + limit;
|
|
99
|
+
const slicedItems = sortedItems.slice(start, end);
|
|
100
|
+
const cursor = encodeCursor(`${start + limit}`);
|
|
101
|
+
return {
|
|
102
|
+
hasMoreItems,
|
|
103
|
+
totalCount,
|
|
104
|
+
cursor,
|
|
105
|
+
items: slicedItems
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
const DdbListEntries = ListEntriesStorageOperation.createImplementation({
|
|
110
|
+
implementation: DdbListEntriesImpl,
|
|
111
|
+
dependencies: [
|
|
112
|
+
CmsDdbEntryEntity,
|
|
113
|
+
CmsStorageModelProvider,
|
|
114
|
+
StorageTransformRegistry,
|
|
115
|
+
FieldFilterPathRegistry,
|
|
116
|
+
FieldFilterValueTransformRegistry,
|
|
117
|
+
FieldFilterCreateRegistry,
|
|
118
|
+
FieldSortingRegistry,
|
|
119
|
+
ValueFilterRegistry
|
|
120
|
+
]
|
|
121
|
+
});
|
|
122
|
+
export { DdbListEntries };
|
|
123
|
+
|
|
124
|
+
//# sourceMappingURL=DdbListEntries.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/DdbListEntries.js","sources":["../../../src/operations/entry/DdbListEntries.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n CmsEntry,\n CmsEntryListWhere,\n CmsEntryStorageOperationsListParams,\n CmsEntryValues,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { ListEntriesStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/ListEntriesStorageOperation.js\";\nimport { CmsDdbEntryEntity } from \"~/abstractions/CmsDdbEntryEntity.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { StorageTransformRegistry } from \"@webiny/api-headless-cms/exports/api/cms/storage.js\";\nimport { createGSIPartitionKey } from \"~/operations/entry/keys.js\";\nimport { decodeCursor, encodeCursor } from \"@webiny/utils\";\nimport { ValueFilterRegistry } from \"@webiny/db-utils\";\nimport {\n createFields,\n filter,\n sort,\n createStorageTransformCallable,\n FieldFilterPathRegistry,\n FieldFilterValueTransformRegistry,\n FieldFilterCreateRegistry,\n FieldSortingRegistry\n} from \"@webiny/api-headless-cms-storage\";\nimport { convertFromStorageEntry } from \"./storageEntryUtils.js\";\n\nconst MAX_LIST_LIMIT = 1000000;\n\nclass DdbListEntriesImpl implements ListEntriesStorageOperation.Interface {\n constructor(\n private entity: CmsDdbEntryEntity.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface,\n private storageTransformRegistry: StorageTransformRegistry.Interface,\n private pathRegistry: FieldFilterPathRegistry.Interface,\n private transformRegistry: FieldFilterValueTransformRegistry.Interface,\n private filterCreateRegistry: FieldFilterCreateRegistry.Interface,\n private sortingRegistry: FieldSortingRegistry.Interface,\n private valueFilterRegistry: ValueFilterRegistry.Interface\n ) {}\n\n async execute<T extends CmsEntryValues = CmsEntryValues>(\n initialModel: CmsModel,\n params: CmsEntryStorageOperationsListParams\n ) {\n const model = this.storageModelProvider.getModel(initialModel);\n\n const {\n limit: initialLimit = 10,\n where: initialWhere,\n after,\n sort: sortBy,\n fields,\n search\n } = params;\n const limit =\n initialLimit <= 0 || initialLimit >= MAX_LIST_LIMIT ? MAX_LIST_LIMIT : initialLimit;\n\n const type = initialWhere.published ? \"P\" : \"L\";\n\n const partitionKey = createGSIPartitionKey(model, type);\n const options = {\n index: \"GSI1\",\n gte: \" \"\n };\n\n let storageEntries: Awaited<ReturnType<typeof this.entity.queryAll>> = [];\n try {\n storageEntries = await this.entity.queryAll({\n partitionKey,\n options\n });\n } catch (ex) {\n throw new WebinyError(ex.message, \"QUERY_ENTRIES_ERROR\", {\n error: ex,\n partitionKey,\n options\n });\n }\n if (storageEntries.length === 0) {\n return {\n hasMoreItems: false,\n totalCount: 0,\n cursor: null,\n items: []\n };\n }\n const where: Partial<CmsEntryListWhere> = {\n ...initialWhere\n };\n delete where[\"published\"];\n delete where[\"latest\"];\n /**\n * We need an object containing field, transformers and paths.\n * Just build it here and pass on into other methods that require it to avoid mapping multiple times.\n */\n const pathRegistry = this.pathRegistry;\n const transformRegistry = this.transformRegistry;\n const filterCreateRegistry = this.filterCreateRegistry;\n const sortingRegistry = this.sortingRegistry;\n\n const modelFields = createFields({\n pathRegistry,\n transformRegistry,\n fields: model.fields\n });\n\n const fromStorage = createStorageTransformCallable(this.storageTransformRegistry, model);\n /**\n * Let's transform records from storage ones to regular ones, so we do not need to do it later.\n *\n * This is always being done, but at least its in parallel.\n */\n const records = await Promise.all(\n storageEntries.map(async storageEntry => {\n const entry = convertFromStorageEntry({\n storageEntry: storageEntry.data,\n model\n });\n\n for (const field of model.fields) {\n entry.values[field.fieldId] = await fromStorage(\n field,\n entry.values[field.fieldId]\n );\n }\n\n return entry as CmsEntry<T>;\n })\n );\n /* Resolve the registry once. */\n const valueFilterRegistry = this.valueFilterRegistry;\n\n /**\n * Filter the read items via the code.\n * It will build the filters out of the where input and transform the values it is using.\n */\n const filteredItems = filter<T>({\n items: records,\n where,\n filterCreateRegistry,\n transformRegistry,\n fields: modelFields,\n fullTextSearch: {\n term: search,\n fields: fields || []\n },\n valueFilterRegistry\n });\n\n const totalCount = filteredItems.length;\n\n /**\n * Sorting is also done via the code.\n * It takes the sort input and sorts by it via the lodash sortBy method.\n */\n const sortedItems = sort<T>({\n model,\n items: filteredItems,\n sort: sortBy,\n fields: modelFields,\n sortingRegistry\n });\n\n const start = parseInt((decodeCursor(after) as string) || \"0\") || 0;\n const hasMoreItems = totalCount > start + limit;\n const end = limit > totalCount + start + limit ? undefined : start + limit;\n const slicedItems = sortedItems.slice(start, end);\n /**\n * Although we do not need a cursor here, we will use it as such to keep it standardized.\n * Number is simply encoded.\n */\n const cursor = encodeCursor(`${start + limit}`);\n return {\n hasMoreItems,\n totalCount,\n cursor,\n items: slicedItems\n };\n }\n}\n\nexport const DdbListEntries = ListEntriesStorageOperation.createImplementation({\n implementation: DdbListEntriesImpl,\n dependencies: [\n CmsDdbEntryEntity,\n CmsStorageModelProvider,\n StorageTransformRegistry,\n FieldFilterPathRegistry,\n FieldFilterValueTransformRegistry,\n FieldFilterCreateRegistry,\n FieldSortingRegistry,\n ValueFilterRegistry\n ]\n});\n"],"names":["MAX_LIST_LIMIT","DdbListEntriesImpl","entity","storageModelProvider","storageTransformRegistry","pathRegistry","transformRegistry","filterCreateRegistry","sortingRegistry","valueFilterRegistry","initialModel","params","model","initialLimit","initialWhere","after","sortBy","fields","search","limit","type","partitionKey","createGSIPartitionKey","options","storageEntries","ex","WebinyError","where","modelFields","createFields","fromStorage","createStorageTransformCallable","records","Promise","storageEntry","entry","convertFromStorageEntry","field","filteredItems","filter","totalCount","sortedItems","sort","start","parseInt","decodeCursor","hasMoreItems","end","undefined","slicedItems","cursor","encodeCursor","DdbListEntries","ListEntriesStorageOperation","CmsDdbEntryEntity","CmsStorageModelProvider","StorageTransformRegistry","FieldFilterPathRegistry","FieldFilterValueTransformRegistry","FieldFilterCreateRegistry","FieldSortingRegistry","ValueFilterRegistry"],"mappings":";;;;;;;;;;AA2BA,MAAMA,iBAAiB;AAEvB,MAAMC;IACF,YACYC,MAAmC,EACnCC,oBAAuD,EACvDC,wBAA4D,EAC5DC,YAA+C,EAC/CC,iBAA8D,EAC9DC,oBAAyD,EACzDC,eAA+C,EAC/CC,mBAAkD,CAC5D;aARUP,MAAM,GAANA;aACAC,oBAAoB,GAApBA;aACAC,wBAAwB,GAAxBA;aACAC,YAAY,GAAZA;aACAC,iBAAiB,GAAjBA;aACAC,oBAAoB,GAApBA;aACAC,eAAe,GAAfA;aACAC,mBAAmB,GAAnBA;IACT;IAEH,MAAM,QACFC,YAAsB,EACtBC,MAA2C,EAC7C;QACE,MAAMC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAACF;QAEjD,MAAM,EACF,OAAOG,eAAe,EAAE,EACxB,OAAOC,YAAY,EACnBC,KAAK,EACL,MAAMC,MAAM,EACZC,MAAM,EACNC,MAAM,EACT,GAAGP;QACJ,MAAMQ,QACFN,gBAAgB,KAAKA,gBAAgBb,iBAAiBA,iBAAiBa;QAE3E,MAAMO,OAAON,aAAa,SAAS,GAAG,MAAM;QAE5C,MAAMO,eAAeC,sBAAsBV,OAAOQ;QAClD,MAAMG,UAAU;YACZ,OAAO;YACP,KAAK;QACT;QAEA,IAAIC,iBAAmE,EAAE;QACzE,IAAI;YACAA,iBAAiB,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACxCH;gBACAE;YACJ;QACJ,EAAE,OAAOE,IAAI;YACT,MAAM,IAAIC,MAAYD,GAAG,OAAO,EAAE,uBAAuB;gBACrD,OAAOA;gBACPJ;gBACAE;YACJ;QACJ;QACA,IAAIC,AAA0B,MAA1BA,eAAe,MAAM,EACrB,OAAO;YACH,cAAc;YACd,YAAY;YACZ,QAAQ;YACR,OAAO,EAAE;QACb;QAEJ,MAAMG,QAAoC;YACtC,GAAGb,YAAY;QACnB;QACA,OAAOa,KAAK,CAAC,YAAY;QACzB,OAAOA,KAAK,CAAC,SAAS;QAKtB,MAAMtB,eAAe,IAAI,CAAC,YAAY;QACtC,MAAMC,oBAAoB,IAAI,CAAC,iBAAiB;QAChD,MAAMC,uBAAuB,IAAI,CAAC,oBAAoB;QACtD,MAAMC,kBAAkB,IAAI,CAAC,eAAe;QAE5C,MAAMoB,cAAcC,aAAa;YAC7BxB;YACAC;YACA,QAAQM,MAAM,MAAM;QACxB;QAEA,MAAMkB,cAAcC,+BAA+B,IAAI,CAAC,wBAAwB,EAAEnB;QAMlF,MAAMoB,UAAU,MAAMC,QAAQ,GAAG,CAC7BT,eAAe,GAAG,CAAC,OAAMU;YACrB,MAAMC,QAAQC,wBAAwB;gBAClC,cAAcF,aAAa,IAAI;gBAC/BtB;YACJ;YAEA,KAAK,MAAMyB,SAASzB,MAAM,MAAM,CAC5BuB,MAAM,MAAM,CAACE,MAAM,OAAO,CAAC,GAAG,MAAMP,YAChCO,OACAF,MAAM,MAAM,CAACE,MAAM,OAAO,CAAC;YAInC,OAAOF;QACX;QAGJ,MAAM1B,sBAAsB,IAAI,CAAC,mBAAmB;QAMpD,MAAM6B,gBAAgBC,OAAU;YAC5B,OAAOP;YACPL;YACApB;YACAD;YACA,QAAQsB;YACR,gBAAgB;gBACZ,MAAMV;gBACN,QAAQD,UAAU,EAAE;YACxB;YACAR;QACJ;QAEA,MAAM+B,aAAaF,cAAc,MAAM;QAMvC,MAAMG,cAAcC,KAAQ;YACxB9B;YACA,OAAO0B;YACP,MAAMtB;YACN,QAAQY;YACRpB;QACJ;QAEA,MAAMmC,QAAQC,SAAUC,aAAa9B,UAAqB,QAAQ;QAClE,MAAM+B,eAAeN,aAAaG,QAAQxB;QAC1C,MAAM4B,MAAM5B,QAAQqB,aAAaG,QAAQxB,QAAQ6B,SAAYL,QAAQxB;QACrE,MAAM8B,cAAcR,YAAY,KAAK,CAACE,OAAOI;QAK7C,MAAMG,SAASC,aAAa,GAAGR,QAAQxB,OAAO;QAC9C,OAAO;YACH2B;YACAN;YACAU;YACA,OAAOD;QACX;IACJ;AACJ;AAEO,MAAMG,iBAAiBC,4BAA4B,oBAAoB,CAAC;IAC3E,gBAAgBpD;IAChB,cAAc;QACVqD;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;QACAC;KACH;AACL"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { MoveEntryStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveEntryStorageOperation.js";
|
|
3
|
+
import { CmsDdbEntryEntity } from "../../abstractions/CmsDdbEntryEntity.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
declare class DdbMoveEntryImpl implements MoveEntryStorageOperation.Interface {
|
|
6
|
+
private entity;
|
|
7
|
+
private storageModelProvider;
|
|
8
|
+
constructor(entity: CmsDdbEntryEntity.Interface, storageModelProvider: CmsStorageModelProvider.Interface);
|
|
9
|
+
execute(initialModel: CmsModel, id: string, folderId: string): Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare const DdbMoveEntry: typeof DdbMoveEntryImpl & {
|
|
12
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveEntryStorageOperation.js").IMoveEntryStorageOperation>;
|
|
13
|
+
};
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import error from "@webiny/error";
|
|
2
|
+
import { MoveEntryStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveEntryStorageOperation.js";
|
|
3
|
+
import { CmsDdbEntryEntity } from "../../abstractions/CmsDdbEntryEntity.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
import { createPartitionKey } from "./keys.js";
|
|
6
|
+
class DdbMoveEntryImpl {
|
|
7
|
+
constructor(entity, storageModelProvider){
|
|
8
|
+
this.entity = entity;
|
|
9
|
+
this.storageModelProvider = storageModelProvider;
|
|
10
|
+
}
|
|
11
|
+
async execute(initialModel, id, folderId) {
|
|
12
|
+
const model = this.storageModelProvider.getModel(initialModel);
|
|
13
|
+
const partitionKey = createPartitionKey({
|
|
14
|
+
id,
|
|
15
|
+
tenant: model.tenant
|
|
16
|
+
});
|
|
17
|
+
const records = await this.entity.queryAll({
|
|
18
|
+
partitionKey,
|
|
19
|
+
options: {
|
|
20
|
+
gte: " "
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
const entityBatch = this.entity.createEntityWriter({
|
|
24
|
+
put: records.map((item)=>({
|
|
25
|
+
...item,
|
|
26
|
+
data: {
|
|
27
|
+
...item.data,
|
|
28
|
+
location: {
|
|
29
|
+
...item.data.location,
|
|
30
|
+
folderId
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}))
|
|
34
|
+
});
|
|
35
|
+
try {
|
|
36
|
+
await entityBatch.execute();
|
|
37
|
+
} catch (ex) {
|
|
38
|
+
throw error.from(ex, {
|
|
39
|
+
message: "Could not move records to a new folder.",
|
|
40
|
+
data: {
|
|
41
|
+
id,
|
|
42
|
+
folderId
|
|
43
|
+
}
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
const DdbMoveEntry = MoveEntryStorageOperation.createImplementation({
|
|
49
|
+
implementation: DdbMoveEntryImpl,
|
|
50
|
+
dependencies: [
|
|
51
|
+
CmsDdbEntryEntity,
|
|
52
|
+
CmsStorageModelProvider
|
|
53
|
+
]
|
|
54
|
+
});
|
|
55
|
+
export { DdbMoveEntry };
|
|
56
|
+
|
|
57
|
+
//# sourceMappingURL=DdbMoveEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/DdbMoveEntry.js","sources":["../../../src/operations/entry/DdbMoveEntry.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\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 { CmsDdbEntryEntity } from \"~/abstractions/CmsDdbEntryEntity.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { createPartitionKey } from \"~/operations/entry/keys.js\";\n\nclass DdbMoveEntryImpl implements MoveEntryStorageOperation.Interface {\n constructor(\n private entity: CmsDdbEntryEntity.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface\n ) {}\n\n async execute(initialModel: CmsModel, id: string, folderId: string) {\n /**\n * We need to:\n * - load all the revisions of the entry, including published and latest\n * - update all the revisions (published and latest ) of the entry with new folderId\n */\n const model = this.storageModelProvider.getModel(initialModel);\n /**\n * First we need to load all the revisions and published / latest entry.\n */\n const partitionKey = createPartitionKey({\n id,\n tenant: model.tenant\n });\n const records = await this.entity.queryAll({\n partitionKey,\n options: {\n gte: \" \"\n }\n });\n /**\n * Then create the batch writes for the DynamoDB, with the updated folderId.\n */\n const entityBatch = this.entity.createEntityWriter({\n put: records.map(item => {\n return {\n ...item,\n data: {\n ...item.data,\n location: {\n ...item.data.location,\n folderId\n }\n }\n };\n })\n });\n\n /**\n * And finally write it...\n */\n try {\n await entityBatch.execute();\n } catch (ex) {\n throw WebinyError.from(ex, {\n message: \"Could not move records to a new folder.\",\n data: {\n id,\n folderId\n }\n });\n }\n }\n}\n\nexport const DdbMoveEntry = MoveEntryStorageOperation.createImplementation({\n implementation: DdbMoveEntryImpl,\n dependencies: [CmsDdbEntryEntity, CmsStorageModelProvider]\n});\n"],"names":["DdbMoveEntryImpl","entity","storageModelProvider","initialModel","id","folderId","model","partitionKey","createPartitionKey","records","entityBatch","item","ex","WebinyError","DdbMoveEntry","MoveEntryStorageOperation","CmsDdbEntryEntity","CmsStorageModelProvider"],"mappings":";;;;;AAOA,MAAMA;IACF,YACYC,MAAmC,EACnCC,oBAAuD,CACjE;aAFUD,MAAM,GAANA;aACAC,oBAAoB,GAApBA;IACT;IAEH,MAAM,QAAQC,YAAsB,EAAEC,EAAU,EAAEC,QAAgB,EAAE;QAMhE,MAAMC,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAACH;QAIjD,MAAMI,eAAeC,mBAAmB;YACpCJ;YACA,QAAQE,MAAM,MAAM;QACxB;QACA,MAAMG,UAAU,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACvCF;YACA,SAAS;gBACL,KAAK;YACT;QACJ;QAIA,MAAMG,cAAc,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC/C,KAAKD,QAAQ,GAAG,CAACE,CAAAA,OACN;oBACH,GAAGA,IAAI;oBACP,MAAM;wBACF,GAAGA,KAAK,IAAI;wBACZ,UAAU;4BACN,GAAGA,KAAK,IAAI,CAAC,QAAQ;4BACrBN;wBACJ;oBACJ;gBACJ;QAER;QAKA,IAAI;YACA,MAAMK,YAAY,OAAO;QAC7B,EAAE,OAAOE,IAAI;YACT,MAAMC,MAAAA,IAAgB,CAACD,IAAI;gBACvB,SAAS;gBACT,MAAM;oBACFR;oBACAC;gBACJ;YACJ;QACJ;IACJ;AACJ;AAEO,MAAMS,eAAeC,0BAA0B,oBAAoB,CAAC;IACvE,gBAAgBf;IAChB,cAAc;QAACgB;QAAmBC;KAAwB;AAC9D"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { CmsModel, CmsEntryStorageOperationsMoveToBinParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { MoveToBinStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveToBinStorageOperation.js";
|
|
3
|
+
import { CmsDdbEntryEntity } from "../../abstractions/CmsDdbEntryEntity.js";
|
|
4
|
+
import { CmsDdbDataLoaders } from "../../abstractions/CmsDdbDataLoaders.js";
|
|
5
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
6
|
+
declare class DdbMoveToBinImpl implements MoveToBinStorageOperation.Interface {
|
|
7
|
+
private entity;
|
|
8
|
+
private dataLoaders;
|
|
9
|
+
private storageModelProvider;
|
|
10
|
+
constructor(entity: CmsDdbEntryEntity.Interface, dataLoaders: CmsDdbDataLoaders.Interface, storageModelProvider: CmsStorageModelProvider.Interface);
|
|
11
|
+
execute(initialModel: CmsModel, params: CmsEntryStorageOperationsMoveToBinParams): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare const DdbMoveToBin: typeof DdbMoveToBinImpl & {
|
|
14
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveToBinStorageOperation.js").IMoveToBinStorageOperation>;
|
|
15
|
+
};
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import error from "@webiny/error";
|
|
2
|
+
import { MoveToBinStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveToBinStorageOperation.js";
|
|
3
|
+
import { CmsDdbEntryEntity } from "../../abstractions/CmsDdbEntryEntity.js";
|
|
4
|
+
import { CmsDdbDataLoaders } from "../../abstractions/CmsDdbDataLoaders.js";
|
|
5
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
6
|
+
import { createPartitionKey } from "./keys.js";
|
|
7
|
+
import { isDeletedEntryMetaField, pickEntryMetaFields } from "@webiny/api-headless-cms/constants.js";
|
|
8
|
+
import { convertToStorageEntry } from "./storageEntryUtils.js";
|
|
9
|
+
class DdbMoveToBinImpl {
|
|
10
|
+
constructor(entity, dataLoaders, storageModelProvider){
|
|
11
|
+
this.entity = entity;
|
|
12
|
+
this.dataLoaders = dataLoaders;
|
|
13
|
+
this.storageModelProvider = storageModelProvider;
|
|
14
|
+
}
|
|
15
|
+
async execute(initialModel, params) {
|
|
16
|
+
const { entry, storageEntry: initialStorageEntry } = params;
|
|
17
|
+
const model = this.storageModelProvider.getModel(initialModel);
|
|
18
|
+
let records = [];
|
|
19
|
+
try {
|
|
20
|
+
records = await this.entity.queryAll({
|
|
21
|
+
partitionKey: createPartitionKey({
|
|
22
|
+
id: entry.id,
|
|
23
|
+
tenant: model.tenant
|
|
24
|
+
}),
|
|
25
|
+
options: {
|
|
26
|
+
gte: " "
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
} catch (ex) {
|
|
30
|
+
throw new error(ex.message || "Could not load all records.", ex.code || "LOAD_ALL_RECORDS_ERROR", {
|
|
31
|
+
error: ex,
|
|
32
|
+
id: entry.id
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
if (0 === records.length) return;
|
|
36
|
+
const storageEntry = convertToStorageEntry({
|
|
37
|
+
model,
|
|
38
|
+
storageEntry: initialStorageEntry
|
|
39
|
+
});
|
|
40
|
+
const updatedDeletedMetaFields = pickEntryMetaFields(storageEntry, isDeletedEntryMetaField);
|
|
41
|
+
const entityBatch = this.entity.createEntityWriter({
|
|
42
|
+
put: records.map((record)=>({
|
|
43
|
+
...record,
|
|
44
|
+
data: {
|
|
45
|
+
...record.data,
|
|
46
|
+
...updatedDeletedMetaFields,
|
|
47
|
+
wbyDeleted: storageEntry.wbyDeleted,
|
|
48
|
+
location: storageEntry.location,
|
|
49
|
+
binOriginalFolderId: storageEntry.binOriginalFolderId
|
|
50
|
+
}
|
|
51
|
+
}))
|
|
52
|
+
});
|
|
53
|
+
try {
|
|
54
|
+
await entityBatch.execute();
|
|
55
|
+
this.dataLoaders.clearAll({
|
|
56
|
+
tenant: entry.tenant
|
|
57
|
+
});
|
|
58
|
+
} catch (ex) {
|
|
59
|
+
throw new error(ex.message || "Could not move the entry to the bin.", ex.code || "MOVE_ENTRY_TO_BIN_ERROR", {
|
|
60
|
+
error: ex,
|
|
61
|
+
entry,
|
|
62
|
+
storageEntry
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const DdbMoveToBin = MoveToBinStorageOperation.createImplementation({
|
|
68
|
+
implementation: DdbMoveToBinImpl,
|
|
69
|
+
dependencies: [
|
|
70
|
+
CmsDdbEntryEntity,
|
|
71
|
+
CmsDdbDataLoaders,
|
|
72
|
+
CmsStorageModelProvider
|
|
73
|
+
]
|
|
74
|
+
});
|
|
75
|
+
export { DdbMoveToBin };
|
|
76
|
+
|
|
77
|
+
//# sourceMappingURL=DdbMoveToBin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/DdbMoveToBin.js","sources":["../../../src/operations/entry/DdbMoveToBin.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type {\n CmsModel,\n CmsEntryStorageOperationsMoveToBinParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { MoveToBinStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveToBinStorageOperation.js\";\nimport { CmsDdbEntryEntity } from \"~/abstractions/CmsDdbEntryEntity.js\";\nimport { CmsDdbDataLoaders } from \"~/abstractions/CmsDdbDataLoaders.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\nimport { createPartitionKey } from \"~/operations/entry/keys.js\";\nimport {\n isDeletedEntryMetaField,\n pickEntryMetaFields\n} from \"@webiny/api-headless-cms/constants.js\";\nimport { convertToStorageEntry } from \"./storageEntryUtils.js\";\n\nclass DdbMoveToBinImpl implements MoveToBinStorageOperation.Interface {\n constructor(\n private entity: CmsDdbEntryEntity.Interface,\n private dataLoaders: CmsDdbDataLoaders.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface\n ) {}\n\n async execute(\n initialModel: CmsModel,\n params: CmsEntryStorageOperationsMoveToBinParams\n ): Promise<void> {\n const { entry, storageEntry: initialStorageEntry } = params;\n const model = this.storageModelProvider.getModel(initialModel);\n\n /**\n * First we need to load all the revisions and published / latest entries.\n */\n\n let records: Awaited<ReturnType<typeof this.entity.queryAll>> = [];\n try {\n records = await this.entity.queryAll({\n partitionKey: createPartitionKey({\n id: entry.id,\n tenant: model.tenant\n }),\n options: {\n gte: \" \"\n }\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not load all records.\",\n ex.code || \"LOAD_ALL_RECORDS_ERROR\",\n {\n error: ex,\n id: entry.id\n }\n );\n }\n if (records.length === 0) {\n return;\n }\n\n const storageEntry = convertToStorageEntry({\n model,\n storageEntry: initialStorageEntry\n });\n\n /**\n * Let's pick the `deleted` meta fields from the storage entry.\n */\n const updatedDeletedMetaFields = pickEntryMetaFields(storageEntry, isDeletedEntryMetaField);\n\n /**\n * Then create the batch writes for the DynamoDB, with the updated data.\n */\n const entityBatch = this.entity.createEntityWriter({\n put: records.map(record => {\n return {\n ...record,\n data: {\n ...record.data,\n ...updatedDeletedMetaFields,\n wbyDeleted: storageEntry.wbyDeleted,\n location: storageEntry.location,\n binOriginalFolderId: storageEntry.binOriginalFolderId\n }\n };\n })\n });\n /**\n * And finally write it...\n */\n try {\n await entityBatch.execute();\n this.dataLoaders.clearAll({\n tenant: entry.tenant\n });\n } catch (ex) {\n throw new WebinyError(\n ex.message || \"Could not move the entry to the bin.\",\n ex.code || \"MOVE_ENTRY_TO_BIN_ERROR\",\n {\n error: ex,\n entry,\n storageEntry\n }\n );\n }\n }\n}\n\nexport const DdbMoveToBin = MoveToBinStorageOperation.createImplementation({\n implementation: DdbMoveToBinImpl,\n dependencies: [CmsDdbEntryEntity, CmsDdbDataLoaders, CmsStorageModelProvider]\n});\n"],"names":["DdbMoveToBinImpl","entity","dataLoaders","storageModelProvider","initialModel","params","entry","initialStorageEntry","model","records","createPartitionKey","ex","WebinyError","storageEntry","convertToStorageEntry","updatedDeletedMetaFields","pickEntryMetaFields","isDeletedEntryMetaField","entityBatch","record","DdbMoveToBin","MoveToBinStorageOperation","CmsDdbEntryEntity","CmsDdbDataLoaders","CmsStorageModelProvider"],"mappings":";;;;;;;;AAgBA,MAAMA;IACF,YACYC,MAAmC,EACnCC,WAAwC,EACxCC,oBAAuD,CACjE;aAHUF,MAAM,GAANA;aACAC,WAAW,GAAXA;aACAC,oBAAoB,GAApBA;IACT;IAEH,MAAM,QACFC,YAAsB,EACtBC,MAAgD,EACnC;QACb,MAAM,EAAEC,KAAK,EAAE,cAAcC,mBAAmB,EAAE,GAAGF;QACrD,MAAMG,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAACJ;QAMjD,IAAIK,UAA4D,EAAE;QAClE,IAAI;YACAA,UAAU,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACjC,cAAcC,mBAAmB;oBAC7B,IAAIJ,MAAM,EAAE;oBACZ,QAAQE,MAAM,MAAM;gBACxB;gBACA,SAAS;oBACL,KAAK;gBACT;YACJ;QACJ,EAAE,OAAOG,IAAI;YACT,MAAM,IAAIC,MACND,GAAG,OAAO,IAAI,+BACdA,GAAG,IAAI,IAAI,0BACX;gBACI,OAAOA;gBACP,IAAIL,MAAM,EAAE;YAChB;QAER;QACA,IAAIG,AAAmB,MAAnBA,QAAQ,MAAM,EACd;QAGJ,MAAMI,eAAeC,sBAAsB;YACvCN;YACA,cAAcD;QAClB;QAKA,MAAMQ,2BAA2BC,oBAAoBH,cAAcI;QAKnE,MAAMC,cAAc,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC;YAC/C,KAAKT,QAAQ,GAAG,CAACU,CAAAA,SACN;oBACH,GAAGA,MAAM;oBACT,MAAM;wBACF,GAAGA,OAAO,IAAI;wBACd,GAAGJ,wBAAwB;wBAC3B,YAAYF,aAAa,UAAU;wBACnC,UAAUA,aAAa,QAAQ;wBAC/B,qBAAqBA,aAAa,mBAAmB;oBACzD;gBACJ;QAER;QAIA,IAAI;YACA,MAAMK,YAAY,OAAO;YACzB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC;gBACtB,QAAQZ,MAAM,MAAM;YACxB;QACJ,EAAE,OAAOK,IAAI;YACT,MAAM,IAAIC,MACND,GAAG,OAAO,IAAI,wCACdA,GAAG,IAAI,IAAI,2BACX;gBACI,OAAOA;gBACPL;gBACAO;YACJ;QAER;IACJ;AACJ;AAEO,MAAMO,eAAeC,0BAA0B,oBAAoB,CAAC;IACvE,gBAAgBrB;IAChB,cAAc;QAACsB;QAAmBC;QAAmBC;KAAwB;AACjF"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CmsModel, CmsEntryValues, CmsEntryStorageOperationsPublishParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { PublishEntryStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/PublishEntryStorageOperation.js";
|
|
3
|
+
import { CmsDdbEntryEntity } from "../../abstractions/CmsDdbEntryEntity.js";
|
|
4
|
+
import { CmsDdbDataLoaders } from "../../abstractions/CmsDdbDataLoaders.js";
|
|
5
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
6
|
+
declare class DdbPublishEntryImpl implements PublishEntryStorageOperation.Interface {
|
|
7
|
+
private entity;
|
|
8
|
+
private dataLoaders;
|
|
9
|
+
private storageModelProvider;
|
|
10
|
+
constructor(entity: CmsDdbEntryEntity.Interface, dataLoaders: CmsDdbDataLoaders.Interface, storageModelProvider: CmsStorageModelProvider.Interface);
|
|
11
|
+
private getLatestRevisionByEntryId;
|
|
12
|
+
private getPublishedRevisionByEntryId;
|
|
13
|
+
execute<T extends CmsEntryValues = CmsEntryValues>(initialModel: CmsModel, params: CmsEntryStorageOperationsPublishParams<T>): Promise<import("@webiny/api-headless-cms/types/types.js").CmsStorageEntry<T>>;
|
|
14
|
+
}
|
|
15
|
+
export declare const DdbPublishEntry: typeof DdbPublishEntryImpl & {
|
|
16
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/PublishEntryStorageOperation.js").IPublishEntryStorageOperation>;
|
|
17
|
+
};
|
|
18
|
+
export {};
|