@webiny/api-headless-cms-pg-os 0.0.0-unstable.0156a4c312
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/LICENSE +21 -0
- package/README.md +11 -0
- package/debuggerNamespaces.d.ts +12 -0
- package/debuggerNamespaces.js +0 -0
- package/features/HeadlessCmsPgOsFeature.d.ts +9 -0
- package/features/HeadlessCmsPgOsFeature.js +40 -0
- package/features/HeadlessCmsPgOsFeature.js.map +1 -0
- package/features/SyncWriter/BuildSyncRecord.d.ts +24 -0
- package/features/SyncWriter/BuildSyncRecord.js +60 -0
- package/features/SyncWriter/BuildSyncRecord.js.map +1 -0
- package/features/SyncWriter/RemoveEntry.d.ts +11 -0
- package/features/SyncWriter/RemoveEntry.js +23 -0
- package/features/SyncWriter/RemoveEntry.js.map +1 -0
- package/features/SyncWriter/RemoveLatest.d.ts +11 -0
- package/features/SyncWriter/RemoveLatest.js +19 -0
- package/features/SyncWriter/RemoveLatest.js.map +1 -0
- package/features/SyncWriter/RemovePublished.d.ts +11 -0
- package/features/SyncWriter/RemovePublished.js +19 -0
- package/features/SyncWriter/RemovePublished.js.map +1 -0
- package/features/SyncWriter/SyncHelpers.d.ts +26 -0
- package/features/SyncWriter/SyncHelpers.js +70 -0
- package/features/SyncWriter/SyncHelpers.js.map +1 -0
- package/features/SyncWriter/SyncRowQuery.d.ts +22 -0
- package/features/SyncWriter/SyncRowQuery.js +22 -0
- package/features/SyncWriter/SyncRowQuery.js.map +1 -0
- package/features/SyncWriter/WriteEntry.d.ts +14 -0
- package/features/SyncWriter/WriteEntry.js +35 -0
- package/features/SyncWriter/WriteEntry.js.map +1 -0
- package/features/SyncWriter/WriteLatest.d.ts +14 -0
- package/features/SyncWriter/WriteLatest.js +29 -0
- package/features/SyncWriter/WriteLatest.js.map +1 -0
- package/features/SyncWriter/WritePublished.d.ts +14 -0
- package/features/SyncWriter/WritePublished.js +29 -0
- package/features/SyncWriter/WritePublished.js.map +1 -0
- package/features/SyncWriter/abstractions/BuildSyncRecord.d.ts +18 -0
- package/features/SyncWriter/abstractions/BuildSyncRecord.js +5 -0
- package/features/SyncWriter/abstractions/BuildSyncRecord.js.map +1 -0
- package/features/SyncWriter/abstractions/RemoveEntry.d.ts +13 -0
- package/features/SyncWriter/abstractions/RemoveEntry.js +5 -0
- package/features/SyncWriter/abstractions/RemoveEntry.js.map +1 -0
- package/features/SyncWriter/abstractions/RemoveLatest.d.ts +13 -0
- package/features/SyncWriter/abstractions/RemoveLatest.js +5 -0
- package/features/SyncWriter/abstractions/RemoveLatest.js.map +1 -0
- package/features/SyncWriter/abstractions/RemovePublished.d.ts +13 -0
- package/features/SyncWriter/abstractions/RemovePublished.js +5 -0
- package/features/SyncWriter/abstractions/RemovePublished.js.map +1 -0
- package/features/SyncWriter/abstractions/SyncHelpers.d.ts +10 -0
- package/features/SyncWriter/abstractions/SyncHelpers.js +5 -0
- package/features/SyncWriter/abstractions/SyncHelpers.js.map +1 -0
- package/features/SyncWriter/abstractions/SyncRowQuery.d.ts +9 -0
- package/features/SyncWriter/abstractions/SyncRowQuery.js +5 -0
- package/features/SyncWriter/abstractions/SyncRowQuery.js.map +1 -0
- package/features/SyncWriter/abstractions/WriteEntry.d.ts +14 -0
- package/features/SyncWriter/abstractions/WriteEntry.js +5 -0
- package/features/SyncWriter/abstractions/WriteEntry.js.map +1 -0
- package/features/SyncWriter/abstractions/WriteLatest.d.ts +14 -0
- package/features/SyncWriter/abstractions/WriteLatest.js +5 -0
- package/features/SyncWriter/abstractions/WriteLatest.js.map +1 -0
- package/features/SyncWriter/abstractions/WritePublished.d.ts +14 -0
- package/features/SyncWriter/abstractions/WritePublished.js +5 -0
- package/features/SyncWriter/abstractions/WritePublished.js.map +1 -0
- package/features/SyncWriter/feature.d.ts +4 -0
- package/features/SyncWriter/feature.js +27 -0
- package/features/SyncWriter/feature.js.map +1 -0
- package/features/SyncWriter/index.d.ts +9 -0
- package/features/SyncWriter/index.js +9 -0
- package/features/syncEventHandler/SyncEventHandler.d.ts +15 -0
- package/features/syncEventHandler/SyncEventHandler.js +49 -0
- package/features/syncEventHandler/SyncEventHandler.js.map +1 -0
- package/features/syncEventHandler/abstractions.d.ts +12 -0
- package/features/syncEventHandler/abstractions.js +5 -0
- package/features/syncEventHandler/abstractions.js.map +1 -0
- package/features/syncEventHandler/feature.d.ts +4 -0
- package/features/syncEventHandler/feature.js +11 -0
- package/features/syncEventHandler/feature.js.map +1 -0
- package/features/syncTableManager/SyncTableManager.d.ts +19 -0
- package/features/syncTableManager/SyncTableManager.js +62 -0
- package/features/syncTableManager/SyncTableManager.js.map +1 -0
- package/features/syncTableManager/abstractions.d.ts +9 -0
- package/features/syncTableManager/abstractions.js +5 -0
- package/features/syncTableManager/abstractions.js.map +1 -0
- package/features/syncTableManager/feature.d.ts +4 -0
- package/features/syncTableManager/feature.js +11 -0
- package/features/syncTableManager/feature.js.map +1 -0
- package/index.d.ts +1 -0
- package/index.js +1 -0
- package/operations/entry/EntrySearchOperations.d.ts +17 -0
- package/operations/entry/EntrySearchOperations.js +41 -0
- package/operations/entry/EntrySearchOperations.js.map +1 -0
- package/operations/entry/PgOsCreateEntry.d.ts +15 -0
- package/operations/entry/PgOsCreateEntry.js +27 -0
- package/operations/entry/PgOsCreateEntry.js.map +1 -0
- package/operations/entry/PgOsCreateEntryRevisionFrom.d.ts +15 -0
- package/operations/entry/PgOsCreateEntryRevisionFrom.js +27 -0
- package/operations/entry/PgOsCreateEntryRevisionFrom.js.map +1 -0
- package/operations/entry/PgOsDeleteEntry.d.ts +17 -0
- package/operations/entry/PgOsDeleteEntry.js +33 -0
- package/operations/entry/PgOsDeleteEntry.js.map +1 -0
- package/operations/entry/PgOsDeleteEntryRevision.d.ts +21 -0
- package/operations/entry/PgOsDeleteEntryRevision.js +48 -0
- package/operations/entry/PgOsDeleteEntryRevision.js.map +1 -0
- package/operations/entry/PgOsDeleteMultipleEntries.d.ts +17 -0
- package/operations/entry/PgOsDeleteMultipleEntries.js +36 -0
- package/operations/entry/PgOsDeleteMultipleEntries.js.map +1 -0
- package/operations/entry/PgOsGetEntry.d.ts +12 -0
- package/operations/entry/PgOsGetEntry.js +19 -0
- package/operations/entry/PgOsGetEntry.js.map +1 -0
- package/operations/entry/PgOsGetUniqueFieldValues.d.ts +12 -0
- package/operations/entry/PgOsGetUniqueFieldValues.js +19 -0
- package/operations/entry/PgOsGetUniqueFieldValues.js.map +1 -0
- package/operations/entry/PgOsListEntries.d.ts +12 -0
- package/operations/entry/PgOsListEntries.js +19 -0
- package/operations/entry/PgOsListEntries.js.map +1 -0
- package/operations/entry/PgOsMoveEntry.d.ts +15 -0
- package/operations/entry/PgOsMoveEntry.js +26 -0
- package/operations/entry/PgOsMoveEntry.js.map +1 -0
- package/operations/entry/PgOsMoveToBin.d.ts +15 -0
- package/operations/entry/PgOsMoveToBin.js +26 -0
- package/operations/entry/PgOsMoveToBin.js.map +1 -0
- package/operations/entry/PgOsPublishEntry.d.ts +17 -0
- package/operations/entry/PgOsPublishEntry.js +34 -0
- package/operations/entry/PgOsPublishEntry.js.map +1 -0
- package/operations/entry/PgOsRestoreFromBin.d.ts +15 -0
- package/operations/entry/PgOsRestoreFromBin.js +27 -0
- package/operations/entry/PgOsRestoreFromBin.js.map +1 -0
- package/operations/entry/PgOsUnpublishEntry.d.ts +19 -0
- package/operations/entry/PgOsUnpublishEntry.js +41 -0
- package/operations/entry/PgOsUnpublishEntry.js.map +1 -0
- package/operations/entry/PgOsUpdateEntry.d.ts +15 -0
- package/operations/entry/PgOsUpdateEntry.js +27 -0
- package/operations/entry/PgOsUpdateEntry.js.map +1 -0
- package/operations/entry/abstractions/EntrySearchOperations.d.ts +10 -0
- package/operations/entry/abstractions/EntrySearchOperations.js +5 -0
- package/operations/entry/abstractions/EntrySearchOperations.js.map +1 -0
- 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/search/get.d.ts +3 -0
- package/operations/entry/search/get.js +14 -0
- package/operations/entry/search/get.js.map +1 -0
- package/operations/entry/search/getUniqueFieldValues.d.ts +3 -0
- package/operations/entry/search/getUniqueFieldValues.js +56 -0
- package/operations/entry/search/getUniqueFieldValues.js.map +1 -0
- package/operations/entry/search/list.d.ts +4 -0
- package/operations/entry/search/list.js +75 -0
- package/operations/entry/search/list.js.map +1 -0
- package/operations/entry/search/types.d.ts +23 -0
- package/operations/entry/search/types.js +0 -0
- package/package.json +73 -0
- package/testing/createReindexEvents.d.ts +3 -0
- package/testing/createReindexEvents.js +14 -0
- package/testing/createReindexEvents.js.map +1 -0
- package/testing/index.d.ts +2 -0
- package/testing/index.js +2 -0
- package/testing/simulatePgStream.d.ts +19 -0
- package/testing/simulatePgStream.js +52 -0
- package/testing/simulatePgStream.js.map +1 -0
- package/types.d.ts +17 -0
- package/types.js +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { MoveToBinStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/MoveToBinStorageOperation.js";
|
|
2
|
+
import { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
3
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
4
|
+
class PgOsMoveToBinImpl {
|
|
5
|
+
constructor(syncHelpers, storageModelProvider, inner){
|
|
6
|
+
this.syncHelpers = syncHelpers;
|
|
7
|
+
this.storageModelProvider = storageModelProvider;
|
|
8
|
+
this.inner = inner;
|
|
9
|
+
}
|
|
10
|
+
async execute(model, params) {
|
|
11
|
+
await this.syncHelpers.ensureSyncTable();
|
|
12
|
+
await this.inner.execute(model, params);
|
|
13
|
+
const storageModel = this.storageModelProvider.getModel(model);
|
|
14
|
+
await this.syncHelpers.resyncLatestAndPublishedFromPg(model, storageModel, params.entry.id);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
const PgOsMoveToBin = MoveToBinStorageOperation.createDecorator({
|
|
18
|
+
decorator: PgOsMoveToBinImpl,
|
|
19
|
+
dependencies: [
|
|
20
|
+
SyncHelpers,
|
|
21
|
+
CmsStorageModelProvider
|
|
22
|
+
]
|
|
23
|
+
});
|
|
24
|
+
export { PgOsMoveToBin };
|
|
25
|
+
|
|
26
|
+
//# sourceMappingURL=PgOsMoveToBin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/PgOsMoveToBin.js","sources":["../../../src/operations/entry/PgOsMoveToBin.ts"],"sourcesContent":["import 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 { SyncHelpers } from \"~/features/SyncWriter/abstractions/SyncHelpers.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\n\nclass PgOsMoveToBinImpl implements MoveToBinStorageOperation.Interface {\n constructor(\n private syncHelpers: SyncHelpers.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface,\n private inner: MoveToBinStorageOperation.Interface\n ) {}\n\n async execute(model: CmsModel, params: CmsEntryStorageOperationsMoveToBinParams) {\n await this.syncHelpers.ensureSyncTable();\n await this.inner.execute(model, params);\n const storageModel = this.storageModelProvider.getModel(model);\n await this.syncHelpers.resyncLatestAndPublishedFromPg(model, storageModel, params.entry.id);\n }\n}\n\nexport const PgOsMoveToBin = MoveToBinStorageOperation.createDecorator({\n decorator: PgOsMoveToBinImpl,\n dependencies: [SyncHelpers, CmsStorageModelProvider]\n});\n"],"names":["PgOsMoveToBinImpl","syncHelpers","storageModelProvider","inner","model","params","storageModel","PgOsMoveToBin","MoveToBinStorageOperation","SyncHelpers","CmsStorageModelProvider"],"mappings":";;;AAQA,MAAMA;IACF,YACYC,WAAkC,EAClCC,oBAAuD,EACvDC,KAA0C,CACpD;aAHUF,WAAW,GAAXA;aACAC,oBAAoB,GAApBA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QAAQC,KAAe,EAAEC,MAAgD,EAAE;QAC7E,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe;QACtC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAACD,OAAOC;QAChC,MAAMC,eAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAACF;QACxD,MAAM,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAACA,OAAOE,cAAcD,OAAO,KAAK,CAAC,EAAE;IAC9F;AACJ;AAEO,MAAME,gBAAgBC,0BAA0B,eAAe,CAAC;IACnE,WAAWR;IACX,cAAc;QAACS;QAAaC;KAAwB;AACxD"}
|
|
@@ -0,0 +1,17 @@
|
|
|
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 { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
4
|
+
import { WriteEntry } from "../../features/SyncWriter/abstractions/WriteEntry.js";
|
|
5
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
6
|
+
declare class PgOsPublishEntryImpl implements PublishEntryStorageOperation.Interface {
|
|
7
|
+
private syncHelpers;
|
|
8
|
+
private writeEntry;
|
|
9
|
+
private storageModelProvider;
|
|
10
|
+
private inner;
|
|
11
|
+
constructor(syncHelpers: SyncHelpers.Interface, writeEntry: WriteEntry.Interface, storageModelProvider: CmsStorageModelProvider.Interface, inner: PublishEntryStorageOperation.Interface);
|
|
12
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsPublishParams<T>): Promise<import("@webiny/api-headless-cms/types/types").CmsEntry<T>>;
|
|
13
|
+
}
|
|
14
|
+
export declare const PgOsPublishEntry: typeof PgOsPublishEntryImpl & {
|
|
15
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/PublishEntryStorageOperation.js").IPublishEntryStorageOperation>;
|
|
16
|
+
};
|
|
17
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { PublishEntryStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/PublishEntryStorageOperation.js";
|
|
2
|
+
import { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
3
|
+
import { WriteEntry } from "../../features/SyncWriter/abstractions/WriteEntry.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
class PgOsPublishEntryImpl {
|
|
6
|
+
constructor(syncHelpers, writeEntry, storageModelProvider, inner){
|
|
7
|
+
this.syncHelpers = syncHelpers;
|
|
8
|
+
this.writeEntry = writeEntry;
|
|
9
|
+
this.storageModelProvider = storageModelProvider;
|
|
10
|
+
this.inner = inner;
|
|
11
|
+
}
|
|
12
|
+
async execute(model, params) {
|
|
13
|
+
await this.syncHelpers.ensureSyncTable();
|
|
14
|
+
const result = await this.inner.execute(model, params);
|
|
15
|
+
const storageModel = this.storageModelProvider.getModel(model);
|
|
16
|
+
await this.writeEntry.execute({
|
|
17
|
+
model: storageModel,
|
|
18
|
+
entry: params.entry,
|
|
19
|
+
storageEntry: params.storageEntry
|
|
20
|
+
});
|
|
21
|
+
return result;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
const PgOsPublishEntry = PublishEntryStorageOperation.createDecorator({
|
|
25
|
+
decorator: PgOsPublishEntryImpl,
|
|
26
|
+
dependencies: [
|
|
27
|
+
SyncHelpers,
|
|
28
|
+
WriteEntry,
|
|
29
|
+
CmsStorageModelProvider
|
|
30
|
+
]
|
|
31
|
+
});
|
|
32
|
+
export { PgOsPublishEntry };
|
|
33
|
+
|
|
34
|
+
//# sourceMappingURL=PgOsPublishEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/PgOsPublishEntry.js","sources":["../../../src/operations/entry/PgOsPublishEntry.ts"],"sourcesContent":["import type {\n CmsModel,\n CmsEntryValues,\n CmsEntryStorageOperationsPublishParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { PublishEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/PublishEntryStorageOperation.js\";\nimport { SyncHelpers } from \"~/features/SyncWriter/abstractions/SyncHelpers.js\";\nimport { WriteEntry } from \"~/features/SyncWriter/abstractions/WriteEntry.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\n\nclass PgOsPublishEntryImpl implements PublishEntryStorageOperation.Interface {\n constructor(\n private syncHelpers: SyncHelpers.Interface,\n private writeEntry: WriteEntry.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface,\n private inner: PublishEntryStorageOperation.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsPublishParams<T>\n ) {\n await this.syncHelpers.ensureSyncTable();\n const result = await this.inner.execute(model, params);\n const storageModel = this.storageModelProvider.getModel<T>(model);\n await this.writeEntry.execute({\n model: storageModel,\n entry: params.entry,\n storageEntry: params.storageEntry\n });\n return result;\n }\n}\n\nexport const PgOsPublishEntry = PublishEntryStorageOperation.createDecorator({\n decorator: PgOsPublishEntryImpl,\n dependencies: [SyncHelpers, WriteEntry, CmsStorageModelProvider]\n});\n"],"names":["PgOsPublishEntryImpl","syncHelpers","writeEntry","storageModelProvider","inner","model","params","result","storageModel","PgOsPublishEntry","PublishEntryStorageOperation","SyncHelpers","WriteEntry","CmsStorageModelProvider"],"mappings":";;;;AAUA,MAAMA;IACF,YACYC,WAAkC,EAClCC,UAAgC,EAChCC,oBAAuD,EACvDC,KAA6C,CACvD;aAJUH,WAAW,GAAXA;aACAC,UAAU,GAAVA;aACAC,oBAAoB,GAApBA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,MAAiD,EACnD;QACE,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe;QACtC,MAAMC,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAACF,OAAOC;QAC/C,MAAME,eAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAIH;QAC3D,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;YAC1B,OAAOG;YACP,OAAOF,OAAO,KAAK;YACnB,cAAcA,OAAO,YAAY;QACrC;QACA,OAAOC;IACX;AACJ;AAEO,MAAME,mBAAmBC,6BAA6B,eAAe,CAAC;IACzE,WAAWV;IACX,cAAc;QAACW;QAAaC;QAAYC;KAAwB;AACpE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CmsModel, CmsEntryValues, CmsEntryStorageOperationsRestoreFromBinParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { RestoreFromBinStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js";
|
|
3
|
+
import { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
declare class PgOsRestoreFromBinImpl implements RestoreFromBinStorageOperation.Interface {
|
|
6
|
+
private syncHelpers;
|
|
7
|
+
private storageModelProvider;
|
|
8
|
+
private inner;
|
|
9
|
+
constructor(syncHelpers: SyncHelpers.Interface, storageModelProvider: CmsStorageModelProvider.Interface, inner: RestoreFromBinStorageOperation.Interface);
|
|
10
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsRestoreFromBinParams<T>): Promise<import("@webiny/api-headless-cms/types/types").CmsEntry<T>>;
|
|
11
|
+
}
|
|
12
|
+
export declare const PgOsRestoreFromBin: typeof PgOsRestoreFromBinImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js").IRestoreFromBinStorageOperation>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { RestoreFromBinStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js";
|
|
2
|
+
import { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
3
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
4
|
+
class PgOsRestoreFromBinImpl {
|
|
5
|
+
constructor(syncHelpers, storageModelProvider, inner){
|
|
6
|
+
this.syncHelpers = syncHelpers;
|
|
7
|
+
this.storageModelProvider = storageModelProvider;
|
|
8
|
+
this.inner = inner;
|
|
9
|
+
}
|
|
10
|
+
async execute(model, params) {
|
|
11
|
+
await this.syncHelpers.ensureSyncTable();
|
|
12
|
+
const result = await this.inner.execute(model, params);
|
|
13
|
+
const storageModel = this.storageModelProvider.getModel(model);
|
|
14
|
+
await this.syncHelpers.resyncLatestAndPublishedFromPg(model, storageModel, params.entry.id);
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const PgOsRestoreFromBin = RestoreFromBinStorageOperation.createDecorator({
|
|
19
|
+
decorator: PgOsRestoreFromBinImpl,
|
|
20
|
+
dependencies: [
|
|
21
|
+
SyncHelpers,
|
|
22
|
+
CmsStorageModelProvider
|
|
23
|
+
]
|
|
24
|
+
});
|
|
25
|
+
export { PgOsRestoreFromBin };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=PgOsRestoreFromBin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/PgOsRestoreFromBin.js","sources":["../../../src/operations/entry/PgOsRestoreFromBin.ts"],"sourcesContent":["import type {\n CmsModel,\n CmsEntryValues,\n CmsEntryStorageOperationsRestoreFromBinParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { RestoreFromBinStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/RestoreFromBinStorageOperation.js\";\nimport { SyncHelpers } from \"~/features/SyncWriter/abstractions/SyncHelpers.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\n\nclass PgOsRestoreFromBinImpl implements RestoreFromBinStorageOperation.Interface {\n constructor(\n private syncHelpers: SyncHelpers.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface,\n private inner: RestoreFromBinStorageOperation.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsRestoreFromBinParams<T>\n ) {\n await this.syncHelpers.ensureSyncTable();\n const result = await this.inner.execute(model, params);\n const storageModel = this.storageModelProvider.getModel<T>(model);\n await this.syncHelpers.resyncLatestAndPublishedFromPg(model, storageModel, params.entry.id);\n return result;\n }\n}\n\nexport const PgOsRestoreFromBin = RestoreFromBinStorageOperation.createDecorator({\n decorator: PgOsRestoreFromBinImpl,\n dependencies: [SyncHelpers, CmsStorageModelProvider]\n});\n"],"names":["PgOsRestoreFromBinImpl","syncHelpers","storageModelProvider","inner","model","params","result","storageModel","PgOsRestoreFromBin","RestoreFromBinStorageOperation","SyncHelpers","CmsStorageModelProvider"],"mappings":";;;AASA,MAAMA;IACF,YACYC,WAAkC,EAClCC,oBAAuD,EACvDC,KAA+C,CACzD;aAHUF,WAAW,GAAXA;aACAC,oBAAoB,GAApBA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,MAAwD,EAC1D;QACE,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe;QACtC,MAAMC,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAACF,OAAOC;QAC/C,MAAME,eAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAIH;QAC3D,MAAM,IAAI,CAAC,WAAW,CAAC,8BAA8B,CAACA,OAAOG,cAAcF,OAAO,KAAK,CAAC,EAAE;QAC1F,OAAOC;IACX;AACJ;AAEO,MAAME,qBAAqBC,+BAA+B,eAAe,CAAC;IAC7E,WAAWT;IACX,cAAc;QAACU;QAAaC;KAAwB;AACxD"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { CmsModel, CmsEntryValues, CmsEntryStorageOperationsUnpublishParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { UnpublishEntryStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js";
|
|
3
|
+
import { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
4
|
+
import { WriteLatest } from "../../features/SyncWriter/abstractions/WriteLatest.js";
|
|
5
|
+
import { RemovePublished } from "../../features/SyncWriter/abstractions/RemovePublished.js";
|
|
6
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
7
|
+
declare class PgOsUnpublishEntryImpl implements UnpublishEntryStorageOperation.Interface {
|
|
8
|
+
private syncHelpers;
|
|
9
|
+
private writeLatest;
|
|
10
|
+
private removePublished;
|
|
11
|
+
private storageModelProvider;
|
|
12
|
+
private inner;
|
|
13
|
+
constructor(syncHelpers: SyncHelpers.Interface, writeLatest: WriteLatest.Interface, removePublished: RemovePublished.Interface, storageModelProvider: CmsStorageModelProvider.Interface, inner: UnpublishEntryStorageOperation.Interface);
|
|
14
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsUnpublishParams<T>): Promise<import("@webiny/api-headless-cms/types/types").CmsEntry<T>>;
|
|
15
|
+
}
|
|
16
|
+
export declare const PgOsUnpublishEntry: typeof PgOsUnpublishEntryImpl & {
|
|
17
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js").IUnpublishEntryStorageOperation>;
|
|
18
|
+
};
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { UnpublishEntryStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js";
|
|
2
|
+
import { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
3
|
+
import { WriteLatest } from "../../features/SyncWriter/abstractions/WriteLatest.js";
|
|
4
|
+
import { RemovePublished } from "../../features/SyncWriter/abstractions/RemovePublished.js";
|
|
5
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
6
|
+
class PgOsUnpublishEntryImpl {
|
|
7
|
+
constructor(syncHelpers, writeLatest, removePublished, storageModelProvider, inner){
|
|
8
|
+
this.syncHelpers = syncHelpers;
|
|
9
|
+
this.writeLatest = writeLatest;
|
|
10
|
+
this.removePublished = removePublished;
|
|
11
|
+
this.storageModelProvider = storageModelProvider;
|
|
12
|
+
this.inner = inner;
|
|
13
|
+
}
|
|
14
|
+
async execute(model, params) {
|
|
15
|
+
await this.syncHelpers.ensureSyncTable();
|
|
16
|
+
const result = await this.inner.execute(model, params);
|
|
17
|
+
const storageModel = this.storageModelProvider.getModel(model);
|
|
18
|
+
await this.writeLatest.execute({
|
|
19
|
+
model: storageModel,
|
|
20
|
+
entry: params.entry,
|
|
21
|
+
storageEntry: params.storageEntry
|
|
22
|
+
});
|
|
23
|
+
await this.removePublished.execute({
|
|
24
|
+
model: storageModel,
|
|
25
|
+
entryId: params.entry.entryId
|
|
26
|
+
});
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
const PgOsUnpublishEntry = UnpublishEntryStorageOperation.createDecorator({
|
|
31
|
+
decorator: PgOsUnpublishEntryImpl,
|
|
32
|
+
dependencies: [
|
|
33
|
+
SyncHelpers,
|
|
34
|
+
WriteLatest,
|
|
35
|
+
RemovePublished,
|
|
36
|
+
CmsStorageModelProvider
|
|
37
|
+
]
|
|
38
|
+
});
|
|
39
|
+
export { PgOsUnpublishEntry };
|
|
40
|
+
|
|
41
|
+
//# sourceMappingURL=PgOsUnpublishEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/PgOsUnpublishEntry.js","sources":["../../../src/operations/entry/PgOsUnpublishEntry.ts"],"sourcesContent":["import type {\n CmsModel,\n CmsEntryValues,\n CmsEntryStorageOperationsUnpublishParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { UnpublishEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/UnpublishEntryStorageOperation.js\";\nimport { SyncHelpers } from \"~/features/SyncWriter/abstractions/SyncHelpers.js\";\nimport { WriteLatest } from \"~/features/SyncWriter/abstractions/WriteLatest.js\";\nimport { RemovePublished } from \"~/features/SyncWriter/abstractions/RemovePublished.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\n\nclass PgOsUnpublishEntryImpl implements UnpublishEntryStorageOperation.Interface {\n constructor(\n private syncHelpers: SyncHelpers.Interface,\n private writeLatest: WriteLatest.Interface,\n private removePublished: RemovePublished.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface,\n private inner: UnpublishEntryStorageOperation.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsUnpublishParams<T>\n ) {\n await this.syncHelpers.ensureSyncTable();\n const result = await this.inner.execute(model, params);\n const storageModel = this.storageModelProvider.getModel<T>(model);\n await this.writeLatest.execute({\n model: storageModel,\n entry: params.entry,\n storageEntry: params.storageEntry\n });\n await this.removePublished.execute({\n model: storageModel,\n entryId: params.entry.entryId\n });\n return result;\n }\n}\n\nexport const PgOsUnpublishEntry = UnpublishEntryStorageOperation.createDecorator({\n decorator: PgOsUnpublishEntryImpl,\n dependencies: [SyncHelpers, WriteLatest, RemovePublished, CmsStorageModelProvider]\n});\n"],"names":["PgOsUnpublishEntryImpl","syncHelpers","writeLatest","removePublished","storageModelProvider","inner","model","params","result","storageModel","PgOsUnpublishEntry","UnpublishEntryStorageOperation","SyncHelpers","WriteLatest","RemovePublished","CmsStorageModelProvider"],"mappings":";;;;;AAWA,MAAMA;IACF,YACYC,WAAkC,EAClCC,WAAkC,EAClCC,eAA0C,EAC1CC,oBAAuD,EACvDC,KAA+C,CACzD;aALUJ,WAAW,GAAXA;aACAC,WAAW,GAAXA;aACAC,eAAe,GAAfA;aACAC,oBAAoB,GAApBA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,MAAmD,EACrD;QACE,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe;QACtC,MAAMC,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAACF,OAAOC;QAC/C,MAAME,eAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAIH;QAC3D,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;YAC3B,OAAOG;YACP,OAAOF,OAAO,KAAK;YACnB,cAAcA,OAAO,YAAY;QACrC;QACA,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC;YAC/B,OAAOE;YACP,SAASF,OAAO,KAAK,CAAC,OAAO;QACjC;QACA,OAAOC;IACX;AACJ;AAEO,MAAME,qBAAqBC,+BAA+B,eAAe,CAAC;IAC7E,WAAWX;IACX,cAAc;QAACY;QAAaC;QAAaC;QAAiBC;KAAwB;AACtF"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CmsModel, CmsEntryValues, CmsEntryStorageOperationsUpdateParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import { UpdateEntryStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js";
|
|
3
|
+
import { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
4
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
5
|
+
declare class PgOsUpdateEntryImpl implements UpdateEntryStorageOperation.Interface {
|
|
6
|
+
private syncHelpers;
|
|
7
|
+
private storageModelProvider;
|
|
8
|
+
private inner;
|
|
9
|
+
constructor(syncHelpers: SyncHelpers.Interface, storageModelProvider: CmsStorageModelProvider.Interface, inner: UpdateEntryStorageOperation.Interface);
|
|
10
|
+
execute<T extends CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsUpdateParams<T>): Promise<import("@webiny/api-headless-cms/types/types").CmsEntry<T>>;
|
|
11
|
+
}
|
|
12
|
+
export declare const PgOsUpdateEntry: typeof PgOsUpdateEntryImpl & {
|
|
13
|
+
__abstraction: import("@webiny/di").Abstraction<import("@webiny/api-headless-cms/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js").IUpdateEntryStorageOperation>;
|
|
14
|
+
};
|
|
15
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { UpdateEntryStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js";
|
|
2
|
+
import { SyncHelpers } from "../../features/SyncWriter/abstractions/SyncHelpers.js";
|
|
3
|
+
import { CmsStorageModelProvider } from "@webiny/api-headless-cms/features/shared/abstractions.js";
|
|
4
|
+
class PgOsUpdateEntryImpl {
|
|
5
|
+
constructor(syncHelpers, storageModelProvider, inner){
|
|
6
|
+
this.syncHelpers = syncHelpers;
|
|
7
|
+
this.storageModelProvider = storageModelProvider;
|
|
8
|
+
this.inner = inner;
|
|
9
|
+
}
|
|
10
|
+
async execute(model, params) {
|
|
11
|
+
await this.syncHelpers.ensureSyncTable();
|
|
12
|
+
const result = await this.inner.execute(model, params);
|
|
13
|
+
const storageModel = this.storageModelProvider.getModel(model);
|
|
14
|
+
await this.syncHelpers.writeSyncForEntry(storageModel, params.entry, params.storageEntry);
|
|
15
|
+
return result;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
const PgOsUpdateEntry = UpdateEntryStorageOperation.createDecorator({
|
|
19
|
+
decorator: PgOsUpdateEntryImpl,
|
|
20
|
+
dependencies: [
|
|
21
|
+
SyncHelpers,
|
|
22
|
+
CmsStorageModelProvider
|
|
23
|
+
]
|
|
24
|
+
});
|
|
25
|
+
export { PgOsUpdateEntry };
|
|
26
|
+
|
|
27
|
+
//# sourceMappingURL=PgOsUpdateEntry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/PgOsUpdateEntry.js","sources":["../../../src/operations/entry/PgOsUpdateEntry.ts"],"sourcesContent":["import type {\n CmsModel,\n CmsEntryValues,\n CmsEntryStorageOperationsUpdateParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport { UpdateEntryStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/UpdateEntryStorageOperation.js\";\nimport { SyncHelpers } from \"~/features/SyncWriter/abstractions/SyncHelpers.js\";\nimport { CmsStorageModelProvider } from \"@webiny/api-headless-cms/features/shared/abstractions.js\";\n\nclass PgOsUpdateEntryImpl implements UpdateEntryStorageOperation.Interface {\n constructor(\n private syncHelpers: SyncHelpers.Interface,\n private storageModelProvider: CmsStorageModelProvider.Interface,\n private inner: UpdateEntryStorageOperation.Interface\n ) {}\n\n async execute<T extends CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsUpdateParams<T>\n ) {\n await this.syncHelpers.ensureSyncTable();\n const result = await this.inner.execute(model, params);\n const storageModel = this.storageModelProvider.getModel<T>(model);\n await this.syncHelpers.writeSyncForEntry(storageModel, params.entry, params.storageEntry);\n return result;\n }\n}\n\nexport const PgOsUpdateEntry = UpdateEntryStorageOperation.createDecorator({\n decorator: PgOsUpdateEntryImpl,\n dependencies: [SyncHelpers, CmsStorageModelProvider]\n});\n"],"names":["PgOsUpdateEntryImpl","syncHelpers","storageModelProvider","inner","model","params","result","storageModel","PgOsUpdateEntry","UpdateEntryStorageOperation","SyncHelpers","CmsStorageModelProvider"],"mappings":";;;AASA,MAAMA;IACF,YACYC,WAAkC,EAClCC,oBAAuD,EACvDC,KAA4C,CACtD;aAHUF,WAAW,GAAXA;aACAC,oBAAoB,GAApBA;aACAC,KAAK,GAALA;IACT;IAEH,MAAM,QACFC,KAAe,EACfC,MAAgD,EAClD;QACE,MAAM,IAAI,CAAC,WAAW,CAAC,eAAe;QACtC,MAAMC,SAAS,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAACF,OAAOC;QAC/C,MAAME,eAAe,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAIH;QAC3D,MAAM,IAAI,CAAC,WAAW,CAAC,iBAAiB,CAACG,cAAcF,OAAO,KAAK,EAAEA,OAAO,YAAY;QACxF,OAAOC;IACX;AACJ;AAEO,MAAME,kBAAkBC,4BAA4B,eAAe,CAAC;IACvE,WAAWT;IACX,cAAc;QAACU;QAAaC;KAAwB;AACxD"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CmsEntry, CmsEntryStorageOperationsGetParams, CmsEntryStorageOperationsGetUniqueFieldValuesParams, CmsEntryStorageOperationsListParams, CmsEntryStorageOperationsListResponse, CmsEntryUniqueValue, CmsEntryValues, CmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
export interface IEntrySearchOperations {
|
|
3
|
+
get<T extends CmsEntryValues = CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsGetParams): Promise<CmsEntry<T> | null>;
|
|
4
|
+
list<T extends CmsEntryValues = CmsEntryValues>(model: CmsModel, params: CmsEntryStorageOperationsListParams): Promise<CmsEntryStorageOperationsListResponse<CmsEntry<T>>>;
|
|
5
|
+
getUniqueFieldValues(model: CmsModel, params: CmsEntryStorageOperationsGetUniqueFieldValuesParams): Promise<CmsEntryUniqueValue[]>;
|
|
6
|
+
}
|
|
7
|
+
export declare const EntrySearchOperations: import("@webiny/di").Abstraction<IEntrySearchOperations>;
|
|
8
|
+
export declare namespace EntrySearchOperations {
|
|
9
|
+
type Interface = IEntrySearchOperations;
|
|
10
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/abstractions/EntrySearchOperations.js","sources":["../../../../src/operations/entry/abstractions/EntrySearchOperations.ts"],"sourcesContent":["import { createAbstraction } from \"@webiny/feature/api/index.js\";\nimport type {\n CmsEntry,\n CmsEntryStorageOperationsGetParams,\n CmsEntryStorageOperationsGetUniqueFieldValuesParams,\n CmsEntryStorageOperationsListParams,\n CmsEntryStorageOperationsListResponse,\n CmsEntryUniqueValue,\n CmsEntryValues,\n CmsModel\n} from \"@webiny/api-headless-cms/types/index.js\";\n\nexport interface IEntrySearchOperations {\n get<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsGetParams\n ): Promise<CmsEntry<T> | null>;\n list<T extends CmsEntryValues = CmsEntryValues>(\n model: CmsModel,\n params: CmsEntryStorageOperationsListParams\n ): Promise<CmsEntryStorageOperationsListResponse<CmsEntry<T>>>;\n getUniqueFieldValues(\n model: CmsModel,\n params: CmsEntryStorageOperationsGetUniqueFieldValuesParams\n ): Promise<CmsEntryUniqueValue[]>;\n}\n\nexport const EntrySearchOperations = createAbstraction<IEntrySearchOperations>(\n \"Cms/PgOs/EntrySearchOperations\"\n);\n\nexport namespace EntrySearchOperations {\n export type Interface = IEntrySearchOperations;\n}\n"],"names":["EntrySearchOperations","createAbstraction"],"mappings":";AA2BO,MAAMA,wBAAwBC,kBACjC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { createFeature } from "@webiny/feature/api/index.js";
|
|
2
|
+
import { EntrySearchOperations } from "./EntrySearchOperations.js";
|
|
3
|
+
import { PgOsCreateEntry } from "./PgOsCreateEntry.js";
|
|
4
|
+
import { PgOsCreateEntryRevisionFrom } from "./PgOsCreateEntryRevisionFrom.js";
|
|
5
|
+
import { PgOsUpdateEntry } from "./PgOsUpdateEntry.js";
|
|
6
|
+
import { PgOsPublishEntry } from "./PgOsPublishEntry.js";
|
|
7
|
+
import { PgOsUnpublishEntry } from "./PgOsUnpublishEntry.js";
|
|
8
|
+
import { PgOsMoveEntry } from "./PgOsMoveEntry.js";
|
|
9
|
+
import { PgOsMoveToBin } from "./PgOsMoveToBin.js";
|
|
10
|
+
import { PgOsRestoreFromBin } from "./PgOsRestoreFromBin.js";
|
|
11
|
+
import { PgOsDeleteEntry } from "./PgOsDeleteEntry.js";
|
|
12
|
+
import { PgOsDeleteEntryRevision } from "./PgOsDeleteEntryRevision.js";
|
|
13
|
+
import { PgOsDeleteMultipleEntries } from "./PgOsDeleteMultipleEntries.js";
|
|
14
|
+
import { PgOsGetEntry } from "./PgOsGetEntry.js";
|
|
15
|
+
import { PgOsListEntries } from "./PgOsListEntries.js";
|
|
16
|
+
import { PgOsGetUniqueFieldValues } from "./PgOsGetUniqueFieldValues.js";
|
|
17
|
+
import { SqlGetRevisions } from "@webiny/api-headless-cms-sql/operations/entry/SqlGetRevisions.js";
|
|
18
|
+
import { SqlGetRevisionById } from "@webiny/api-headless-cms-sql/operations/entry/SqlGetRevisionById.js";
|
|
19
|
+
import { SqlGetEntriesByIds } from "@webiny/api-headless-cms-sql/operations/entry/SqlGetEntriesByIds.js";
|
|
20
|
+
import { SqlGetLatestEntriesByIds } from "@webiny/api-headless-cms-sql/operations/entry/SqlGetLatestEntriesByIds.js";
|
|
21
|
+
import { SqlGetPublishedEntriesByIds } from "@webiny/api-headless-cms-sql/operations/entry/SqlGetPublishedEntriesByIds.js";
|
|
22
|
+
import { SqlGetLatestRevisionByEntryId } from "@webiny/api-headless-cms-sql/operations/entry/SqlGetLatestRevisionByEntryId.js";
|
|
23
|
+
import { SqlGetPublishedRevisionByEntryId } from "@webiny/api-headless-cms-sql/operations/entry/SqlGetPublishedRevisionByEntryId.js";
|
|
24
|
+
import { SqlGetPreviousRevision } from "@webiny/api-headless-cms-sql/operations/entry/SqlGetPreviousRevision.js";
|
|
25
|
+
const PgOsEntryStorageOpsFeature = createFeature({
|
|
26
|
+
name: "cms.pgOs.entryStorageOps",
|
|
27
|
+
register: (container)=>{
|
|
28
|
+
container.registerDecorator(PgOsCreateEntry);
|
|
29
|
+
container.registerDecorator(PgOsCreateEntryRevisionFrom);
|
|
30
|
+
container.registerDecorator(PgOsUpdateEntry);
|
|
31
|
+
container.registerDecorator(PgOsPublishEntry);
|
|
32
|
+
container.registerDecorator(PgOsUnpublishEntry);
|
|
33
|
+
container.registerDecorator(PgOsMoveEntry);
|
|
34
|
+
container.registerDecorator(PgOsMoveToBin);
|
|
35
|
+
container.registerDecorator(PgOsRestoreFromBin);
|
|
36
|
+
container.registerDecorator(PgOsDeleteEntry);
|
|
37
|
+
container.registerDecorator(PgOsDeleteEntryRevision);
|
|
38
|
+
container.registerDecorator(PgOsDeleteMultipleEntries);
|
|
39
|
+
container.register(EntrySearchOperations);
|
|
40
|
+
container.register(PgOsGetEntry);
|
|
41
|
+
container.register(PgOsListEntries);
|
|
42
|
+
container.register(PgOsGetUniqueFieldValues);
|
|
43
|
+
container.register(SqlGetRevisions);
|
|
44
|
+
container.register(SqlGetRevisionById);
|
|
45
|
+
container.register(SqlGetEntriesByIds);
|
|
46
|
+
container.register(SqlGetLatestEntriesByIds);
|
|
47
|
+
container.register(SqlGetPublishedEntriesByIds);
|
|
48
|
+
container.register(SqlGetLatestRevisionByEntryId);
|
|
49
|
+
container.register(SqlGetPublishedRevisionByEntryId);
|
|
50
|
+
container.register(SqlGetPreviousRevision);
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
export { PgOsEntryStorageOpsFeature };
|
|
54
|
+
|
|
55
|
+
//# sourceMappingURL=feature.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/feature.js","sources":["../../../src/operations/entry/feature.ts"],"sourcesContent":["import { createFeature } from \"@webiny/feature/api/index.js\";\nimport { EntrySearchOperations } from \"./EntrySearchOperations.js\";\n\nimport { PgOsCreateEntry } from \"./PgOsCreateEntry.js\";\nimport { PgOsCreateEntryRevisionFrom } from \"./PgOsCreateEntryRevisionFrom.js\";\nimport { PgOsUpdateEntry } from \"./PgOsUpdateEntry.js\";\nimport { PgOsPublishEntry } from \"./PgOsPublishEntry.js\";\nimport { PgOsUnpublishEntry } from \"./PgOsUnpublishEntry.js\";\nimport { PgOsMoveEntry } from \"./PgOsMoveEntry.js\";\nimport { PgOsMoveToBin } from \"./PgOsMoveToBin.js\";\nimport { PgOsRestoreFromBin } from \"./PgOsRestoreFromBin.js\";\nimport { PgOsDeleteEntry } from \"./PgOsDeleteEntry.js\";\nimport { PgOsDeleteEntryRevision } from \"./PgOsDeleteEntryRevision.js\";\nimport { PgOsDeleteMultipleEntries } from \"./PgOsDeleteMultipleEntries.js\";\n\nimport { PgOsGetEntry } from \"./PgOsGetEntry.js\";\nimport { PgOsListEntries } from \"./PgOsListEntries.js\";\nimport { PgOsGetUniqueFieldValues } from \"./PgOsGetUniqueFieldValues.js\";\n\nimport { SqlGetRevisions } from \"@webiny/api-headless-cms-sql/operations/entry/SqlGetRevisions.js\";\nimport { SqlGetRevisionById } from \"@webiny/api-headless-cms-sql/operations/entry/SqlGetRevisionById.js\";\nimport { SqlGetEntriesByIds } from \"@webiny/api-headless-cms-sql/operations/entry/SqlGetEntriesByIds.js\";\nimport { SqlGetLatestEntriesByIds } from \"@webiny/api-headless-cms-sql/operations/entry/SqlGetLatestEntriesByIds.js\";\nimport { SqlGetPublishedEntriesByIds } from \"@webiny/api-headless-cms-sql/operations/entry/SqlGetPublishedEntriesByIds.js\";\nimport { SqlGetLatestRevisionByEntryId } from \"@webiny/api-headless-cms-sql/operations/entry/SqlGetLatestRevisionByEntryId.js\";\nimport { SqlGetPublishedRevisionByEntryId } from \"@webiny/api-headless-cms-sql/operations/entry/SqlGetPublishedRevisionByEntryId.js\";\nimport { SqlGetPreviousRevision } from \"@webiny/api-headless-cms-sql/operations/entry/SqlGetPreviousRevision.js\";\n\nexport const PgOsEntryStorageOpsFeature = createFeature({\n name: \"cms.pgOs.entryStorageOps\",\n register: container => {\n // Write ops (11) — decorators wrapping SQL per-method implementations with OpenSearch sync\n container.registerDecorator(PgOsCreateEntry);\n container.registerDecorator(PgOsCreateEntryRevisionFrom);\n container.registerDecorator(PgOsUpdateEntry);\n container.registerDecorator(PgOsPublishEntry);\n container.registerDecorator(PgOsUnpublishEntry);\n container.registerDecorator(PgOsMoveEntry);\n container.registerDecorator(PgOsMoveToBin);\n container.registerDecorator(PgOsRestoreFromBin);\n container.registerDecorator(PgOsDeleteEntry);\n container.registerDecorator(PgOsDeleteEntryRevision);\n container.registerDecorator(PgOsDeleteMultipleEntries);\n\n // EntrySearchOperations — OpenSearch-based search implementation\n container.register(EntrySearchOperations);\n\n // Search ops (3) — PG-OS specific (OpenSearch)\n container.register(PgOsGetEntry);\n container.register(PgOsListEntries);\n container.register(PgOsGetUniqueFieldValues);\n\n // SQL ops (8) — reuse SQL's per-method DI classes directly\n container.register(SqlGetRevisions);\n container.register(SqlGetRevisionById);\n container.register(SqlGetEntriesByIds);\n container.register(SqlGetLatestEntriesByIds);\n container.register(SqlGetPublishedEntriesByIds);\n container.register(SqlGetLatestRevisionByEntryId);\n container.register(SqlGetPublishedRevisionByEntryId);\n container.register(SqlGetPreviousRevision);\n }\n});\n"],"names":["PgOsEntryStorageOpsFeature","createFeature","container","PgOsCreateEntry","PgOsCreateEntryRevisionFrom","PgOsUpdateEntry","PgOsPublishEntry","PgOsUnpublishEntry","PgOsMoveEntry","PgOsMoveToBin","PgOsRestoreFromBin","PgOsDeleteEntry","PgOsDeleteEntryRevision","PgOsDeleteMultipleEntries","EntrySearchOperations","PgOsGetEntry","PgOsListEntries","PgOsGetUniqueFieldValues","SqlGetRevisions","SqlGetRevisionById","SqlGetEntriesByIds","SqlGetLatestEntriesByIds","SqlGetPublishedEntriesByIds","SqlGetLatestRevisionByEntryId","SqlGetPublishedRevisionByEntryId","SqlGetPreviousRevision"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;AA4BO,MAAMA,6BAA6BC,cAAc;IACpD,MAAM;IACN,UAAUC,CAAAA;QAENA,UAAU,iBAAiB,CAACC;QAC5BD,UAAU,iBAAiB,CAACE;QAC5BF,UAAU,iBAAiB,CAACG;QAC5BH,UAAU,iBAAiB,CAACI;QAC5BJ,UAAU,iBAAiB,CAACK;QAC5BL,UAAU,iBAAiB,CAACM;QAC5BN,UAAU,iBAAiB,CAACO;QAC5BP,UAAU,iBAAiB,CAACQ;QAC5BR,UAAU,iBAAiB,CAACS;QAC5BT,UAAU,iBAAiB,CAACU;QAC5BV,UAAU,iBAAiB,CAACW;QAG5BX,UAAU,QAAQ,CAACY;QAGnBZ,UAAU,QAAQ,CAACa;QACnBb,UAAU,QAAQ,CAACc;QACnBd,UAAU,QAAQ,CAACe;QAGnBf,UAAU,QAAQ,CAACgB;QACnBhB,UAAU,QAAQ,CAACiB;QACnBjB,UAAU,QAAQ,CAACkB;QACnBlB,UAAU,QAAQ,CAACmB;QACnBnB,UAAU,QAAQ,CAACoB;QACnBpB,UAAU,QAAQ,CAACqB;QACnBrB,UAAU,QAAQ,CAACsB;QACnBtB,UAAU,QAAQ,CAACuB;IACvB;AACJ"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { CmsEntry, CmsEntryValues, CmsModel, CmsEntryStorageOperationsGetParams } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { SearchOperationDeps } from "./types.js";
|
|
3
|
+
export declare const createGetOperation: (deps: SearchOperationDeps) => <T extends CmsEntryValues = CmsEntryValues>(initialModel: CmsModel, getParams: CmsEntryStorageOperationsGetParams) => Promise<CmsEntry<T> | null>;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { createListOperation } from "./list.js";
|
|
2
|
+
const createGetOperation = (deps)=>{
|
|
3
|
+
const list = createListOperation(deps);
|
|
4
|
+
return async (initialModel, getParams)=>{
|
|
5
|
+
const { items } = await list(initialModel, {
|
|
6
|
+
...getParams,
|
|
7
|
+
limit: 1
|
|
8
|
+
});
|
|
9
|
+
return items.shift() || null;
|
|
10
|
+
};
|
|
11
|
+
};
|
|
12
|
+
export { createGetOperation };
|
|
13
|
+
|
|
14
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/search/get.js","sources":["../../../../src/operations/entry/search/get.ts"],"sourcesContent":["import type {\n CmsEntry,\n CmsEntryValues,\n CmsModel,\n CmsEntryStorageOperationsGetParams\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport type { SearchOperationDeps } from \"./types.js\";\nimport { createListOperation } from \"./list.js\";\n\nexport const createGetOperation = (deps: SearchOperationDeps) => {\n const list = createListOperation(deps);\n\n return async <T extends CmsEntryValues = CmsEntryValues>(\n initialModel: CmsModel,\n getParams: CmsEntryStorageOperationsGetParams\n ): Promise<CmsEntry<T> | null> => {\n const { items } = await list<T>(initialModel, { ...getParams, limit: 1 });\n return items.shift() || null;\n };\n};\n"],"names":["createGetOperation","deps","list","createListOperation","initialModel","getParams","items"],"mappings":";AASO,MAAMA,qBAAqB,CAACC;IAC/B,MAAMC,OAAOC,oBAAoBF;IAEjC,OAAO,OACHG,cACAC;QAEA,MAAM,EAAEC,KAAK,EAAE,GAAG,MAAMJ,KAAQE,cAAc;YAAE,GAAGC,SAAS;YAAE,OAAO;QAAE;QACvE,OAAOC,MAAM,KAAK,MAAM;IAC5B;AACJ"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import type { SearchOperationDeps } from "./types.js";
|
|
2
|
+
import type { GetUniqueFieldValuesStorageOperation } from "@webiny/api-headless-cms/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js";
|
|
3
|
+
export declare const createGetUniqueFieldValuesOperation: (deps: SearchOperationDeps) => GetUniqueFieldValuesStorageOperation.Interface["execute"];
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import _webiny_error from "@webiny/error";
|
|
2
|
+
import { shouldIgnoreEsResponseError } from "@webiny/api-headless-cms-utils-os/operations/entry/elasticsearch/shouldIgnoreEsResponseError.js";
|
|
3
|
+
import { createConfigurations } from "@webiny/api-headless-cms-utils-os/configurations.js";
|
|
4
|
+
const createGetUniqueFieldValuesOperation = (deps)=>async (model, uniqueFieldValuesParams)=>{
|
|
5
|
+
const { where, fieldId } = uniqueFieldValuesParams;
|
|
6
|
+
const configurations = createConfigurations(deps.indexProvider);
|
|
7
|
+
const { index } = await configurations.es({
|
|
8
|
+
model
|
|
9
|
+
});
|
|
10
|
+
const field = model.fields.find((f)=>f.fieldId === fieldId);
|
|
11
|
+
if (!field) return [];
|
|
12
|
+
const initialBody = deps.bodyBuilder.build({
|
|
13
|
+
model,
|
|
14
|
+
params: {
|
|
15
|
+
limit: 1,
|
|
16
|
+
where
|
|
17
|
+
}
|
|
18
|
+
});
|
|
19
|
+
const body = {
|
|
20
|
+
...initialBody,
|
|
21
|
+
size: 0,
|
|
22
|
+
aggregations: {
|
|
23
|
+
getUniqueFieldValues: {
|
|
24
|
+
terms: {
|
|
25
|
+
field: `values.${field.storageId}.keyword`,
|
|
26
|
+
size: 1000000
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
};
|
|
31
|
+
let response;
|
|
32
|
+
try {
|
|
33
|
+
response = await deps.elasticsearch.search({
|
|
34
|
+
index,
|
|
35
|
+
body
|
|
36
|
+
});
|
|
37
|
+
} catch (error) {
|
|
38
|
+
if (shouldIgnoreEsResponseError(error)) return [];
|
|
39
|
+
throw new _webiny_error(error.message, error.code || "OPENSEARCH_ERROR", {
|
|
40
|
+
error,
|
|
41
|
+
index,
|
|
42
|
+
model,
|
|
43
|
+
body
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
const aggregations = response.body.aggregations || {};
|
|
47
|
+
const agg = aggregations["getUniqueFieldValues"];
|
|
48
|
+
const buckets = agg && "buckets" in agg && Array.isArray(agg.buckets) ? agg.buckets : [];
|
|
49
|
+
return buckets.map((bucket)=>({
|
|
50
|
+
value: bucket.key,
|
|
51
|
+
count: bucket.doc_count
|
|
52
|
+
}));
|
|
53
|
+
};
|
|
54
|
+
export { createGetUniqueFieldValuesOperation };
|
|
55
|
+
|
|
56
|
+
//# sourceMappingURL=getUniqueFieldValues.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/search/getUniqueFieldValues.js","sources":["../../../../src/operations/entry/search/getUniqueFieldValues.ts"],"sourcesContent":["import WebinyError from \"@webiny/error\";\nimport type { OpenSearchSearchResponse } from \"@webiny/api-opensearch\";\nimport { shouldIgnoreEsResponseError } from \"@webiny/api-headless-cms-utils-os/operations/entry/elasticsearch/shouldIgnoreEsResponseError.js\";\nimport { createConfigurations } from \"@webiny/api-headless-cms-utils-os/configurations.js\";\nimport type { SearchOperationDeps } from \"./types.js\";\nimport type { GetUniqueFieldValuesStorageOperation } from \"@webiny/api-headless-cms/features/shared/storageOperations/entry/GetUniqueFieldValuesStorageOperation.js\";\n\nexport const createGetUniqueFieldValuesOperation = (\n deps: SearchOperationDeps\n): GetUniqueFieldValuesStorageOperation.Interface[\"execute\"] => {\n return async (model, uniqueFieldValuesParams) => {\n const { where, fieldId } = uniqueFieldValuesParams;\n const configurations = createConfigurations(deps.indexProvider);\n const { index } = await configurations.es({ model });\n\n const field = model.fields.find(f => f.fieldId === fieldId);\n if (!field) {\n return [];\n }\n\n const initialBody = deps.bodyBuilder.build({\n model,\n params: { limit: 1, where }\n });\n\n const body = {\n ...initialBody,\n size: 0,\n aggregations: {\n getUniqueFieldValues: {\n terms: {\n field: `values.${field.storageId}.keyword`,\n size: 1000000\n }\n }\n }\n };\n\n let response: OpenSearchSearchResponse;\n try {\n response = await deps.elasticsearch.search({ index, body });\n } catch (error) {\n if (shouldIgnoreEsResponseError(error)) {\n return [];\n }\n throw new WebinyError(error.message, error.code || \"OPENSEARCH_ERROR\", {\n error,\n index,\n model,\n body\n });\n }\n\n const aggregations = response.body.aggregations || {};\n const agg = aggregations[\"getUniqueFieldValues\"];\n const buckets = agg && \"buckets\" in agg && Array.isArray(agg.buckets) ? agg.buckets : [];\n return buckets.map((bucket: { key: string; doc_count: number }) => ({\n value: bucket.key,\n count: bucket.doc_count\n }));\n };\n};\n"],"names":["createGetUniqueFieldValuesOperation","deps","model","uniqueFieldValuesParams","where","fieldId","configurations","createConfigurations","index","field","f","initialBody","body","response","error","shouldIgnoreEsResponseError","WebinyError","aggregations","agg","buckets","Array","bucket"],"mappings":";;;AAOO,MAAMA,sCAAsC,CAC/CC,OAEO,OAAOC,OAAOC;QACjB,MAAM,EAAEC,KAAK,EAAEC,OAAO,EAAE,GAAGF;QAC3B,MAAMG,iBAAiBC,qBAAqBN,KAAK,aAAa;QAC9D,MAAM,EAAEO,KAAK,EAAE,GAAG,MAAMF,eAAe,EAAE,CAAC;YAAEJ;QAAM;QAElD,MAAMO,QAAQP,MAAM,MAAM,CAAC,IAAI,CAACQ,CAAAA,IAAKA,EAAE,OAAO,KAAKL;QACnD,IAAI,CAACI,OACD,OAAO,EAAE;QAGb,MAAME,cAAcV,KAAK,WAAW,CAAC,KAAK,CAAC;YACvCC;YACA,QAAQ;gBAAE,OAAO;gBAAGE;YAAM;QAC9B;QAEA,MAAMQ,OAAO;YACT,GAAGD,WAAW;YACd,MAAM;YACN,cAAc;gBACV,sBAAsB;oBAClB,OAAO;wBACH,OAAO,CAAC,OAAO,EAAEF,MAAM,SAAS,CAAC,QAAQ,CAAC;wBAC1C,MAAM;oBACV;gBACJ;YACJ;QACJ;QAEA,IAAII;QACJ,IAAI;YACAA,WAAW,MAAMZ,KAAK,aAAa,CAAC,MAAM,CAAC;gBAAEO;gBAAOI;YAAK;QAC7D,EAAE,OAAOE,OAAO;YACZ,IAAIC,4BAA4BD,QAC5B,OAAO,EAAE;YAEb,MAAM,IAAIE,cAAYF,MAAM,OAAO,EAAEA,MAAM,IAAI,IAAI,oBAAoB;gBACnEA;gBACAN;gBACAN;gBACAU;YACJ;QACJ;QAEA,MAAMK,eAAeJ,SAAS,IAAI,CAAC,YAAY,IAAI,CAAC;QACpD,MAAMK,MAAMD,YAAY,CAAC,uBAAuB;QAChD,MAAME,UAAUD,OAAO,aAAaA,OAAOE,MAAM,OAAO,CAACF,IAAI,OAAO,IAAIA,IAAI,OAAO,GAAG,EAAE;QACxF,OAAOC,QAAQ,GAAG,CAAC,CAACE,SAAgD;gBAChE,OAAOA,OAAO,GAAG;gBACjB,OAAOA,OAAO,SAAS;YAC3B;IACJ"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { CmsEntryValues, CmsModel, CmsEntryStorageOperationsListParams, CmsEntryStorageOperationsListResponse, CmsEntry } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { SearchOperationDeps } from "./types.js";
|
|
3
|
+
import "~/debuggerNamespaces.js";
|
|
4
|
+
export declare const createListOperation: (deps: SearchOperationDeps) => <T extends CmsEntryValues = CmsEntryValues>(initialModel: CmsModel, listParams: CmsEntryStorageOperationsListParams) => Promise<CmsEntryStorageOperationsListResponse<CmsEntry<T>>>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import _webiny_error from "@webiny/error";
|
|
2
|
+
import { createLimit, decodeCursor, encodeCursor, getTotalCount } from "@webiny/api-opensearch";
|
|
3
|
+
import { shouldIgnoreEsResponseError } from "@webiny/api-headless-cms-utils-os/operations/entry/elasticsearch/shouldIgnoreEsResponseError.js";
|
|
4
|
+
import { extractEntriesFromIndex } from "@webiny/api-headless-cms-utils-os/helpers/entryIndexHelpers.js";
|
|
5
|
+
import { createConfigurations } from "@webiny/api-headless-cms-utils-os/configurations.js";
|
|
6
|
+
import "../../../debuggerNamespaces.js";
|
|
7
|
+
const createListOperation = (deps)=>async (initialModel, listParams)=>{
|
|
8
|
+
const model = deps.getStorageOperationsModel(initialModel);
|
|
9
|
+
const limit = createLimit(listParams.limit);
|
|
10
|
+
const configurations = createConfigurations(deps.indexProvider);
|
|
11
|
+
const { index } = await configurations.es({
|
|
12
|
+
model
|
|
13
|
+
});
|
|
14
|
+
const body = deps.bodyBuilder.build({
|
|
15
|
+
model,
|
|
16
|
+
params: {
|
|
17
|
+
...listParams,
|
|
18
|
+
limit,
|
|
19
|
+
after: decodeCursor(listParams.after)
|
|
20
|
+
}
|
|
21
|
+
});
|
|
22
|
+
let response;
|
|
23
|
+
const startedAt = Date.now();
|
|
24
|
+
try {
|
|
25
|
+
response = await deps.elasticsearch.search({
|
|
26
|
+
index,
|
|
27
|
+
body
|
|
28
|
+
});
|
|
29
|
+
deps.debuggerService.log("cms.os.list", ()=>({
|
|
30
|
+
index,
|
|
31
|
+
query: body,
|
|
32
|
+
body: response.body,
|
|
33
|
+
statusCode: response.statusCode,
|
|
34
|
+
tookMs: Date.now() - startedAt
|
|
35
|
+
}));
|
|
36
|
+
} catch (error) {
|
|
37
|
+
deps.debuggerService.log("cms.os.list", ()=>({
|
|
38
|
+
index,
|
|
39
|
+
query: body,
|
|
40
|
+
error,
|
|
41
|
+
tookMs: Date.now() - startedAt
|
|
42
|
+
}));
|
|
43
|
+
if (shouldIgnoreEsResponseError(error)) return {
|
|
44
|
+
hasMoreItems: false,
|
|
45
|
+
totalCount: 0,
|
|
46
|
+
cursor: null,
|
|
47
|
+
items: []
|
|
48
|
+
};
|
|
49
|
+
throw new _webiny_error(error.message, error.code || "OPENSEARCH_ERROR", {
|
|
50
|
+
error,
|
|
51
|
+
index,
|
|
52
|
+
body,
|
|
53
|
+
model
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
const { hits, total } = response.body.hits;
|
|
57
|
+
const items = extractEntriesFromIndex({
|
|
58
|
+
fieldRegistry: deps.fieldRegistry,
|
|
59
|
+
fieldIndexRegistry: deps.fieldIndexRegistry,
|
|
60
|
+
model,
|
|
61
|
+
entries: hits.map((item)=>item._source)
|
|
62
|
+
});
|
|
63
|
+
const hasMoreItems = items.length > limit;
|
|
64
|
+
if (hasMoreItems) items.pop();
|
|
65
|
+
const cursor = items.length > 0 ? encodeCursor(hits[items.length - 1].sort) || null : null;
|
|
66
|
+
return {
|
|
67
|
+
hasMoreItems,
|
|
68
|
+
totalCount: getTotalCount(total),
|
|
69
|
+
cursor,
|
|
70
|
+
items
|
|
71
|
+
};
|
|
72
|
+
};
|
|
73
|
+
export { createListOperation };
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"operations/entry/search/list.js","sources":["../../../../src/operations/entry/search/list.ts"],"sourcesContent":["import type {\n CmsEntryValues,\n CmsModel,\n CmsEntryStorageOperationsListParams,\n CmsEntryStorageOperationsListResponse,\n CmsEntry\n} from \"@webiny/api-headless-cms/types/index.js\";\nimport WebinyError from \"@webiny/error\";\nimport {\n createLimit,\n decodeCursor,\n encodeCursor,\n getTotalCount,\n type OpenSearchSearchResponse\n} from \"@webiny/api-opensearch\";\nimport { shouldIgnoreEsResponseError } from \"@webiny/api-headless-cms-utils-os/operations/entry/elasticsearch/shouldIgnoreEsResponseError.js\";\nimport { extractEntriesFromIndex } from \"@webiny/api-headless-cms-utils-os/helpers/entryIndexHelpers.js\";\nimport { createConfigurations } from \"@webiny/api-headless-cms-utils-os/configurations.js\";\nimport type { CmsIndexEntry } from \"@webiny/api-headless-cms-utils-os/types.js\";\nimport type { SearchOperationDeps } from \"./types.js\";\nimport \"~/debuggerNamespaces.js\";\n\nexport const createListOperation = (deps: SearchOperationDeps) => {\n return async <T extends CmsEntryValues = CmsEntryValues>(\n initialModel: CmsModel,\n listParams: CmsEntryStorageOperationsListParams\n ): Promise<CmsEntryStorageOperationsListResponse<CmsEntry<T>>> => {\n const model = deps.getStorageOperationsModel<T>(initialModel);\n const limit = createLimit(listParams.limit);\n\n const configurations = createConfigurations(deps.indexProvider);\n const { index } = await configurations.es({ model });\n\n const body = deps.bodyBuilder.build({\n model,\n params: {\n ...listParams,\n limit,\n after: decodeCursor(listParams.after)\n }\n });\n\n let response: OpenSearchSearchResponse;\n const startedAt = Date.now();\n try {\n response = await deps.elasticsearch.search({ index, body });\n\n deps.debuggerService.log(\"cms.os.list\", () => ({\n index,\n query: body,\n /**\n * Only the response body and status. The full client response also carries\n * `meta.connection.url` (the cluster endpoint) plus request headers.\n */\n body: response.body,\n statusCode: response.statusCode,\n tookMs: Date.now() - startedAt\n }));\n } catch (error) {\n /**\n * Logged before the `index_not_found` check below, which swallows the error and returns\n * an empty result. That silent exit is exactly what is hard to see from the outside.\n */\n deps.debuggerService.log(\"cms.os.list\", () => ({\n index,\n query: body,\n error,\n tookMs: Date.now() - startedAt\n }));\n\n if (shouldIgnoreEsResponseError(error)) {\n return { hasMoreItems: false, totalCount: 0, cursor: null, items: [] };\n }\n throw new WebinyError(error.message, error.code || \"OPENSEARCH_ERROR\", {\n error,\n index,\n body,\n model\n });\n }\n\n const { hits, total } = response.body.hits;\n\n const items = extractEntriesFromIndex<T>({\n fieldRegistry: deps.fieldRegistry,\n fieldIndexRegistry: deps.fieldIndexRegistry,\n model,\n entries: hits.map(item => item._source as CmsIndexEntry<T>)\n });\n\n const hasMoreItems = items.length > limit;\n if (hasMoreItems) {\n items.pop();\n }\n\n const cursor = items.length > 0 ? encodeCursor(hits[items.length - 1].sort) || null : null;\n\n return {\n hasMoreItems,\n totalCount: getTotalCount(total),\n cursor,\n items\n };\n };\n};\n"],"names":["createListOperation","deps","initialModel","listParams","model","limit","createLimit","configurations","createConfigurations","index","body","decodeCursor","response","startedAt","Date","error","shouldIgnoreEsResponseError","WebinyError","hits","total","items","extractEntriesFromIndex","item","hasMoreItems","cursor","encodeCursor","getTotalCount"],"mappings":";;;;;;AAsBO,MAAMA,sBAAsB,CAACC,OACzB,OACHC,cACAC;QAEA,MAAMC,QAAQH,KAAK,yBAAyB,CAAIC;QAChD,MAAMG,QAAQC,YAAYH,WAAW,KAAK;QAE1C,MAAMI,iBAAiBC,qBAAqBP,KAAK,aAAa;QAC9D,MAAM,EAAEQ,KAAK,EAAE,GAAG,MAAMF,eAAe,EAAE,CAAC;YAAEH;QAAM;QAElD,MAAMM,OAAOT,KAAK,WAAW,CAAC,KAAK,CAAC;YAChCG;YACA,QAAQ;gBACJ,GAAGD,UAAU;gBACbE;gBACA,OAAOM,aAAaR,WAAW,KAAK;YACxC;QACJ;QAEA,IAAIS;QACJ,MAAMC,YAAYC,KAAK,GAAG;QAC1B,IAAI;YACAF,WAAW,MAAMX,KAAK,aAAa,CAAC,MAAM,CAAC;gBAAEQ;gBAAOC;YAAK;YAEzDT,KAAK,eAAe,CAAC,GAAG,CAAC,eAAe,IAAO;oBAC3CQ;oBACA,OAAOC;oBAKP,MAAME,SAAS,IAAI;oBACnB,YAAYA,SAAS,UAAU;oBAC/B,QAAQE,KAAK,GAAG,KAAKD;gBACzB;QACJ,EAAE,OAAOE,OAAO;YAKZd,KAAK,eAAe,CAAC,GAAG,CAAC,eAAe,IAAO;oBAC3CQ;oBACA,OAAOC;oBACPK;oBACA,QAAQD,KAAK,GAAG,KAAKD;gBACzB;YAEA,IAAIG,4BAA4BD,QAC5B,OAAO;gBAAE,cAAc;gBAAO,YAAY;gBAAG,QAAQ;gBAAM,OAAO,EAAE;YAAC;YAEzE,MAAM,IAAIE,cAAYF,MAAM,OAAO,EAAEA,MAAM,IAAI,IAAI,oBAAoB;gBACnEA;gBACAN;gBACAC;gBACAN;YACJ;QACJ;QAEA,MAAM,EAAEc,IAAI,EAAEC,KAAK,EAAE,GAAGP,SAAS,IAAI,CAAC,IAAI;QAE1C,MAAMQ,QAAQC,wBAA2B;YACrC,eAAepB,KAAK,aAAa;YACjC,oBAAoBA,KAAK,kBAAkB;YAC3CG;YACA,SAASc,KAAK,GAAG,CAACI,CAAAA,OAAQA,KAAK,OAAO;QAC1C;QAEA,MAAMC,eAAeH,MAAM,MAAM,GAAGf;QACpC,IAAIkB,cACAH,MAAM,GAAG;QAGb,MAAMI,SAASJ,MAAM,MAAM,GAAG,IAAIK,aAAaP,IAAI,CAACE,MAAM,MAAM,GAAG,EAAE,CAAC,IAAI,KAAK,OAAO;QAEtF,OAAO;YACHG;YACA,YAAYG,cAAcP;YAC1BK;YACAJ;QACJ;IACJ"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { CmsEntryValues, CmsModel, StorageOperationsCmsModel } from "@webiny/api-headless-cms/types/index.js";
|
|
2
|
+
import type { Client as OpenSearchClient } from "@webiny/api-opensearch";
|
|
3
|
+
import type { CmsModelFieldToGraphQLRegistry } from "@webiny/api-headless-cms/exports/api/cms/graphql.js";
|
|
4
|
+
import type { CmsEntryOpenSearchFieldIndexRegistry } from "@webiny/api-headless-cms-utils-os/exports/api/cms/opensearch.js";
|
|
5
|
+
import type { CmsModelOpenSearchIndexProvider } from "@webiny/api-headless-cms-utils-os/features/CmsModelOpenSearchIndex/CmsModelOpenSearchIndexProvider.js";
|
|
6
|
+
import type { Debugger } from "@webiny/api-core/features/debugger/index.js";
|
|
7
|
+
export type GetStorageOperationsModel = <T extends CmsEntryValues = CmsEntryValues>(model: CmsModel) => StorageOperationsCmsModel<T>;
|
|
8
|
+
export interface OpenSearchBodyBuilderBuildParams {
|
|
9
|
+
model: CmsModel;
|
|
10
|
+
params: Record<string, any>;
|
|
11
|
+
}
|
|
12
|
+
export interface OpenSearchBodyBuilder {
|
|
13
|
+
build(params: OpenSearchBodyBuilderBuildParams): Record<string, any>;
|
|
14
|
+
}
|
|
15
|
+
export interface SearchOperationDeps {
|
|
16
|
+
elasticsearch: OpenSearchClient;
|
|
17
|
+
bodyBuilder: OpenSearchBodyBuilder;
|
|
18
|
+
fieldRegistry: CmsModelFieldToGraphQLRegistry.Interface;
|
|
19
|
+
fieldIndexRegistry: CmsEntryOpenSearchFieldIndexRegistry.Interface;
|
|
20
|
+
getStorageOperationsModel: GetStorageOperationsModel;
|
|
21
|
+
indexProvider: CmsModelOpenSearchIndexProvider.Interface;
|
|
22
|
+
debuggerService: Debugger.Interface;
|
|
23
|
+
}
|
|
File without changes
|