@unchainedshop/core-assortments 2.0.0-beta7 → 2.0.0-beta9
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/jest.config.js +9 -0
- package/lib/db/{AssortmentMediasCollection.d.ts → AssortmentMediaCollection.d.ts} +2 -2
- package/lib/db/{AssortmentMediasCollection.js → AssortmentMediaCollection.js} +4 -4
- package/lib/db/AssortmentMediaCollection.js.map +1 -0
- package/lib/db/{AssortmentMediasSchema.d.ts → AssortmentMediaSchema.d.ts} +1 -1
- package/lib/db/{AssortmentMediasSchema.js → AssortmentMediaSchema.js} +2 -4
- package/lib/db/AssortmentMediaSchema.js.map +1 -0
- package/lib/db/AssortmentsSchema.js +0 -5
- package/lib/db/AssortmentsSchema.js.map +1 -1
- package/lib/migrations/addMigrations.js +5 -5
- package/lib/migrations/addMigrations.js.map +1 -1
- package/lib/module/configureAssortmentFiltersModule.js +10 -15
- package/lib/module/configureAssortmentFiltersModule.js.map +1 -1
- package/lib/module/configureAssortmentLinksModule.js +30 -18
- package/lib/module/configureAssortmentLinksModule.js.map +1 -1
- package/lib/module/configureAssortmentMediaModule.js +32 -37
- package/lib/module/configureAssortmentMediaModule.js.map +1 -1
- package/lib/module/configureAssortmentProductsModule.js +11 -17
- package/lib/module/configureAssortmentProductsModule.js.map +1 -1
- package/lib/module/configureAssortmentTextsModule.js +13 -11
- package/lib/module/configureAssortmentTextsModule.js.map +1 -1
- package/lib/module/configureAssortmentsModule.d.ts +3 -1
- package/lib/module/configureAssortmentsModule.js +32 -26
- package/lib/module/configureAssortmentsModule.js.map +1 -1
- package/lib/utils/tree-zipper/zipTreeByDeepness.d.ts +8 -0
- package/lib/utils/tree-zipper/zipTreeByDeepness.js +5 -5
- package/lib/utils/tree-zipper/zipTreeByDeepness.js.map +1 -1
- package/package.json +11 -10
- package/src/db/{AssortmentMediasCollection.ts → AssortmentMediaCollection.ts} +7 -4
- package/src/db/{AssortmentMediasSchema.js → AssortmentMediaSchema.js} +1 -3
- package/src/db/AssortmentsSchema.js +0 -5
- package/src/migrations/addMigrations.ts +5 -5
- package/src/module/configureAssortmentFiltersModule.ts +14 -15
- package/src/module/configureAssortmentLinksModule.ts +34 -18
- package/src/module/configureAssortmentMediaModule.ts +48 -59
- package/src/module/configureAssortmentProductsModule.ts +15 -17
- package/src/module/configureAssortmentTextsModule.ts +12 -14
- package/src/module/configureAssortmentsModule.ts +54 -54
- package/src/utils/tree-zipper/zipTreeByDeepness.ts +5 -5
- package/tests/assortments-index.test.ts +153 -29
- package/lib/db/AssortmentMediasCollection.js.map +0 -1
- package/lib/db/AssortmentMediasSchema.js.map +0 -1
package/jest.config.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { AssortmentMedia, AssortmentMediaText } from '@unchainedshop/types/assortments.media';
|
|
1
|
+
import { AssortmentMedia as AssortmentMediaType, AssortmentMediaText } from '@unchainedshop/types/assortments.media';
|
|
2
2
|
import { Db } from '@unchainedshop/types/common';
|
|
3
3
|
export declare const AssortmentMediaCollection: (db: Db) => Promise<{
|
|
4
|
-
|
|
4
|
+
AssortmentMedia: import("mongodb").Collection<AssortmentMediaType>;
|
|
5
5
|
AssortmentMediaTexts: import("mongodb").Collection<AssortmentMediaText>;
|
|
6
6
|
}>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { buildDbIndexes } from '@unchainedshop/utils';
|
|
2
2
|
export const AssortmentMediaCollection = async (db) => {
|
|
3
|
-
const
|
|
3
|
+
const AssortmentMedia = db.collection('assortment_media');
|
|
4
4
|
const AssortmentMediaTexts = db.collection('assortment_media_texts');
|
|
5
5
|
// Assortment Indexes
|
|
6
|
-
await buildDbIndexes(
|
|
6
|
+
await buildDbIndexes(AssortmentMedia, [
|
|
7
7
|
{ index: { mediaId: 1 } },
|
|
8
8
|
{ index: { assortmentId: 1 } },
|
|
9
9
|
{ index: { sortKey: 1 } },
|
|
@@ -15,8 +15,8 @@ export const AssortmentMediaCollection = async (db) => {
|
|
|
15
15
|
{ index: { locale: 1 } },
|
|
16
16
|
]);
|
|
17
17
|
return {
|
|
18
|
-
|
|
18
|
+
AssortmentMedia,
|
|
19
19
|
AssortmentMediaTexts,
|
|
20
20
|
};
|
|
21
21
|
};
|
|
22
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=AssortmentMediaCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssortmentMediaCollection.js","sourceRoot":"","sources":["../../src/db/AssortmentMediaCollection.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,EAAM,EAAE,EAAE;IACxD,MAAM,eAAe,GAAG,EAAE,CAAC,UAAU,CAAsB,kBAAkB,CAAC,CAAC;IAC/E,MAAM,oBAAoB,GAAG,EAAE,CAAC,UAAU,CAAsB,wBAAwB,CAAC,CAAC;IAE1F,qBAAqB;IACrB,MAAM,cAAc,CAAC,eAAe,EAAE;QACpC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QACzB,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;QAC9B,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QACzB,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;KACvB,CAAC,CAAC;IAEH,0BAA0B;IAC1B,MAAM,cAAc,CAAC,oBAAoB,EAAE;QACzC,EAAE,KAAK,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE,EAAE;QACnC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,EAAE;KACzB,CAAC,CAAC;IAEH,OAAO;QACL,eAAe;QACf,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
import { Schemas } from '@unchainedshop/utils';
|
|
2
2
|
import SimpleSchema from 'simpl-schema';
|
|
3
|
-
export const
|
|
3
|
+
export const AssortmentMediaSchema = new SimpleSchema({
|
|
4
4
|
mediaId: { type: String, required: true },
|
|
5
5
|
assortmentId: { type: String, required: true },
|
|
6
6
|
sortKey: { type: Number, required: true },
|
|
7
7
|
tags: Array,
|
|
8
8
|
'tags.$': String,
|
|
9
9
|
meta: { type: Object, blackbox: true },
|
|
10
|
-
authorId: { type: String, required: true },
|
|
11
10
|
...Schemas.timestampFields,
|
|
12
11
|
}, { requiredByDefault: false });
|
|
13
12
|
export const AssortmentMediaTextsSchema = new SimpleSchema({
|
|
@@ -16,9 +15,8 @@ export const AssortmentMediaTextsSchema = new SimpleSchema({
|
|
|
16
15
|
required: true,
|
|
17
16
|
},
|
|
18
17
|
locale: String,
|
|
19
|
-
authorId: { type: String, required: true },
|
|
20
18
|
title: String,
|
|
21
19
|
subtitle: String,
|
|
22
20
|
...Schemas.timestampFields,
|
|
23
21
|
}, { requiredByDefault: false });
|
|
24
|
-
//# sourceMappingURL=
|
|
22
|
+
//# sourceMappingURL=AssortmentMediaSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssortmentMediaSchema.js","sourceRoot":"","sources":["../../src/db/AssortmentMediaSchema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,qBAAqB,GAAG,IAAI,YAAY,CACnD;IACE,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzC,YAAY,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC9C,OAAO,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACzC,IAAI,EAAE,KAAK;IACX,QAAQ,EAAE,MAAM;IAChB,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACtC,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,0BAA0B,GAAG,IAAI,YAAY,CACxD;IACE,iBAAiB,EAAE;QACjB,IAAI,EAAE,MAAM;QACZ,QAAQ,EAAE,IAAI;KACf;IACD,MAAM,EAAE,MAAM;IACd,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { Schemas } from '@unchainedshop/utils';
|
|
2
2
|
import SimpleSchema from 'simpl-schema';
|
|
3
3
|
export const AssortmentsSchema = new SimpleSchema({
|
|
4
|
-
authorId: { type: String, required: true },
|
|
5
4
|
isActive: Boolean,
|
|
6
5
|
isBase: Boolean,
|
|
7
6
|
isRoot: Boolean,
|
|
@@ -15,7 +14,6 @@ export const AssortmentsSchema = new SimpleSchema({
|
|
|
15
14
|
}, { requiredByDefault: false });
|
|
16
15
|
export const AssortmentTextsSchema = new SimpleSchema({
|
|
17
16
|
assortmentId: { type: String, required: true },
|
|
18
|
-
authorId: { type: String, required: true },
|
|
19
17
|
description: String,
|
|
20
18
|
locale: { type: String, required: true },
|
|
21
19
|
slug: String,
|
|
@@ -25,7 +23,6 @@ export const AssortmentTextsSchema = new SimpleSchema({
|
|
|
25
23
|
}, { requiredByDefault: false });
|
|
26
24
|
export const AssortmentProductsSchema = new SimpleSchema({
|
|
27
25
|
assortmentId: { type: String, required: true },
|
|
28
|
-
authorId: { type: String, required: true },
|
|
29
26
|
meta: { type: Object, blackbox: true },
|
|
30
27
|
productId: { type: String, required: true },
|
|
31
28
|
sortKey: { type: Number, required: true },
|
|
@@ -34,7 +31,6 @@ export const AssortmentProductsSchema = new SimpleSchema({
|
|
|
34
31
|
...Schemas.timestampFields,
|
|
35
32
|
}, { requiredByDefault: false });
|
|
36
33
|
export const AssortmentLinksSchema = new SimpleSchema({
|
|
37
|
-
authorId: { type: String, required: true },
|
|
38
34
|
childAssortmentId: { type: String, required: true },
|
|
39
35
|
meta: { type: Object, blackbox: true },
|
|
40
36
|
parentAssortmentId: { type: String, required: true },
|
|
@@ -45,7 +41,6 @@ export const AssortmentLinksSchema = new SimpleSchema({
|
|
|
45
41
|
}, { requiredByDefault: false });
|
|
46
42
|
export const AssortmentFiltersSchema = new SimpleSchema({
|
|
47
43
|
assortmentId: { type: String, required: true },
|
|
48
|
-
authorId: { type: String, required: true },
|
|
49
44
|
filterId: { type: String, required: true },
|
|
50
45
|
meta: { type: Object, blackbox: true },
|
|
51
46
|
sortKey: { type: Number, required: true },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssortmentsSchema.js","sourceRoot":"","sources":["../../src/db/AssortmentsSchema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,iBAAiB,GAAG,IAAI,YAAY,CAC/C;IACE,QAAQ,EAAE,
|
|
1
|
+
{"version":3,"file":"AssortmentsSchema.js","sourceRoot":"","sources":["../../src/db/AssortmentsSchema.js"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssortmentMediaCollection } from '../db/
|
|
1
|
+
import { AssortmentMediaCollection } from '../db/AssortmentMediaCollection';
|
|
2
2
|
import { AssortmentsCollection } from '../db/AssortmentsCollection';
|
|
3
3
|
const convertTagsToLowerCase = async (collection) => {
|
|
4
4
|
let bulk = collection.initializeUnorderedBulkOp();
|
|
@@ -24,7 +24,7 @@ export default function addMigrations(repository) {
|
|
|
24
24
|
name: 'Move _cachedProductIds cache to own collection in order to save a lot of bandwidth',
|
|
25
25
|
up: async () => {
|
|
26
26
|
const { Assortments, AssortmentProductIdCache } = await AssortmentsCollection(repository.db);
|
|
27
|
-
const assortments = await Assortments.find({ _cachedProductIds: { $exists: true } }, { projection: { _id: true, _cachedProductIds: true } }).toArray();
|
|
27
|
+
const assortments = await Assortments.find({ _cachedProductIds: { $exists: true }, deleted: null }, { projection: { _id: true, _cachedProductIds: true } }).toArray();
|
|
28
28
|
await Promise.all(assortments.map(async (assortment) => {
|
|
29
29
|
try {
|
|
30
30
|
// eslint-disable-next-line
|
|
@@ -40,7 +40,7 @@ export default function addMigrations(repository) {
|
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
42
|
catch (e) {
|
|
43
|
-
console.warn(e);
|
|
43
|
+
// console.warn(e);
|
|
44
44
|
/* */
|
|
45
45
|
}
|
|
46
46
|
}));
|
|
@@ -54,13 +54,13 @@ export default function addMigrations(repository) {
|
|
|
54
54
|
name: 'Convert all tags to lower case to make it easy for search',
|
|
55
55
|
up: async () => {
|
|
56
56
|
const { Assortments, AssortmentFilters, AssortmentLinks, AssortmentProducts } = await AssortmentsCollection(repository.db);
|
|
57
|
-
const {
|
|
57
|
+
const { AssortmentMedia } = await AssortmentMediaCollection(repository.db);
|
|
58
58
|
await Promise.all([
|
|
59
59
|
convertTagsToLowerCase(Assortments),
|
|
60
60
|
convertTagsToLowerCase(AssortmentProducts),
|
|
61
61
|
convertTagsToLowerCase(AssortmentLinks),
|
|
62
62
|
convertTagsToLowerCase(AssortmentFilters),
|
|
63
|
-
convertTagsToLowerCase(
|
|
63
|
+
convertTagsToLowerCase(AssortmentMedia),
|
|
64
64
|
]);
|
|
65
65
|
},
|
|
66
66
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addMigrations.js","sourceRoot":"","sources":["../../src/migrations/addMigrations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"addMigrations.js","sourceRoot":"","sources":["../../src/migrations/addMigrations.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,MAAM,sBAAsB,GAAG,KAAK,EAAE,UAA2B,EAAE,EAAE;IACnE,IAAI,IAAI,GAAG,UAAU,CAAC,yBAAyB,EAAE,CAAC;IAClD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;IACtE,gDAAgD;IAChD,IAAI,KAAK,EAAE,MAAM,GAAG,IAAI,MAAM,EAAE;QAC9B,MAAM,eAAe,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;QACjE,KAAK,IAAI,CAAC,CAAC;QACX,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC3E,IAAI,KAAK,GAAG,GAAG,KAAK,CAAC,EAAE;YACrB,IAAI,CAAC,OAAO,EAAE,CAAC;YACf,IAAI,GAAG,UAAU,CAAC,yBAAyB,EAAE,CAAC;YAC9C,KAAK,GAAG,CAAC,CAAC;SACX;KACF;IACD,IAAI,KAAK,GAAG,CAAC;QAAE,IAAI,CAAC,OAAO,EAAE,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,UAA0C;IAC9E,UAAU,EAAE,QAAQ,CAAC;QACnB,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,oFAAoF;QAC1F,EAAE,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,EAAE,WAAW,EAAE,wBAAwB,EAAE,GAAG,MAAM,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC7F,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,IAAI,CACxC,EAAE,iBAAiB,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,EACvD,EAAE,UAAU,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,iBAAiB,EAAE,IAAI,EAAE,EAAE,CACvD,CAAC,OAAO,EAAE,CAAC;YAEZ,MAAM,OAAO,CAAC,GAAG,CACf,WAAW,CAAC,GAAG,CAAC,KAAK,EAAE,UAAU,EAAE,EAAE;gBACnC,IAAI;oBACF,2BAA2B;oBAC3B,aAAa;oBACb,MAAM,wBAAwB,CAAC,SAAS,CACtC;wBACE,GAAG,EAAE,UAAU,CAAC,GAAU;qBAC3B,EACD;wBACE,2BAA2B;wBACzB,aAAa;wBACb,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,iBAAiB,EAAE,EAAE,sBAAsB;qBAC7E,EACD;wBACE,MAAM,EAAE,IAAI;qBACb,CACF,CAAC;iBACH;gBAAC,OAAO,CAAC,EAAE;oBACV,mBAAmB;oBACnB,KAAK;iBACN;YACH,CAAC,CAAC,CACH,CAAC;YAEF,MAAM,WAAW,CAAC,UAAU,CAC1B,EAAE,EACF;gBACE,MAAM,EAAE,EAAE,iBAAiB,EAAE,CAAC,EAAE;aACjC,CACF,CAAC;QACJ,CAAC;KACF,CAAC,CAAC;IACH,UAAU,EAAE,QAAQ,CAAC;QACnB,EAAE,EAAE,cAAc;QAClB,IAAI,EAAE,2DAA2D;QACjE,EAAE,EAAE,KAAK,IAAI,EAAE;YACb,MAAM,EAAE,WAAW,EAAE,iBAAiB,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAC3E,MAAM,qBAAqB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC7C,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,yBAAyB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;YAC3E,MAAM,OAAO,CAAC,GAAG,CAAC;gBAChB,sBAAsB,CAAC,WAAW,CAAC;gBACnC,sBAAsB,CAAC,kBAAkB,CAAC;gBAC1C,sBAAsB,CAAC,eAAe,CAAC;gBACvC,sBAAsB,CAAC,iBAAiB,CAAC;gBACzC,sBAAsB,CAAC,eAAe,CAAC;aACxC,CAAC,CAAC;QACL,CAAC;KACF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -22,7 +22,7 @@ export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
|
22
22
|
}).map((filter) => filter.filterId);
|
|
23
23
|
return filters.toArray();
|
|
24
24
|
},
|
|
25
|
-
create: async (doc
|
|
25
|
+
create: async (doc) => {
|
|
26
26
|
const { _id, assortmentId, filterId, sortKey, ...rest } = doc;
|
|
27
27
|
const selector = {
|
|
28
28
|
...(_id ? generateDbFilterById(_id) : {}),
|
|
@@ -31,7 +31,6 @@ export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
|
31
31
|
};
|
|
32
32
|
const $set = {
|
|
33
33
|
updated: new Date(),
|
|
34
|
-
updatedBy: userId,
|
|
35
34
|
...rest,
|
|
36
35
|
};
|
|
37
36
|
const $setOnInsert = {
|
|
@@ -39,7 +38,6 @@ export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
|
39
38
|
filterId,
|
|
40
39
|
assortmentId,
|
|
41
40
|
created: new Date(),
|
|
42
|
-
createdBy: userId,
|
|
43
41
|
};
|
|
44
42
|
if (!doc.sortKey) {
|
|
45
43
|
// Get next sort key
|
|
@@ -54,7 +52,7 @@ export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
|
54
52
|
$setOnInsert,
|
|
55
53
|
}, { upsert: true });
|
|
56
54
|
const assortmentFilter = await AssortmentFilters.findOne(selector, {});
|
|
57
|
-
emit('ASSORTMENT_ADD_FILTER', { assortmentFilter });
|
|
55
|
+
await emit('ASSORTMENT_ADD_FILTER', { assortmentFilter });
|
|
58
56
|
return assortmentFilter;
|
|
59
57
|
},
|
|
60
58
|
delete: async (assortmentFilterId) => {
|
|
@@ -63,7 +61,7 @@ export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
|
63
61
|
projection: { _id: 1 },
|
|
64
62
|
});
|
|
65
63
|
await AssortmentFilters.deleteOne(selector);
|
|
66
|
-
emit('ASSORTMENT_REMOVE_FILTER', {
|
|
64
|
+
await emit('ASSORTMENT_REMOVE_FILTER', {
|
|
67
65
|
assortmentFilterId: assortmentFilter._id,
|
|
68
66
|
});
|
|
69
67
|
return [assortmentFilter];
|
|
@@ -72,13 +70,11 @@ export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
|
72
70
|
const assortmentFilters = await AssortmentFilters.find(selector, {
|
|
73
71
|
projection: { _id: 1 },
|
|
74
72
|
}).toArray();
|
|
75
|
-
await AssortmentFilters.deleteMany(selector);
|
|
76
|
-
assortmentFilters.
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
});
|
|
81
|
-
return assortmentFilters;
|
|
73
|
+
const deletionResult = await AssortmentFilters.deleteMany(selector);
|
|
74
|
+
await Promise.all(assortmentFilters.map(async (assortmentFilter) => emit('ASSORTMENT_REMOVE_FILTER', {
|
|
75
|
+
assortmentFilterId: assortmentFilter._id,
|
|
76
|
+
})));
|
|
77
|
+
return deletionResult.deletedCount;
|
|
82
78
|
},
|
|
83
79
|
// This action is specifically used for the bulk migration scripts in the platform package
|
|
84
80
|
update: async (assortmentFilterId, doc) => {
|
|
@@ -87,13 +83,12 @@ export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
|
87
83
|
await AssortmentFilters.updateOne(selector, modifier);
|
|
88
84
|
return AssortmentFilters.findOne(selector, {});
|
|
89
85
|
},
|
|
90
|
-
updateManualOrder: async ({ sortKeys }
|
|
86
|
+
updateManualOrder: async ({ sortKeys }) => {
|
|
91
87
|
const changedAssortmentFilterIds = await Promise.all(sortKeys.map(async ({ assortmentFilterId, sortKey }) => {
|
|
92
88
|
await AssortmentFilters.updateOne(generateDbFilterById(assortmentFilterId), {
|
|
93
89
|
$set: {
|
|
94
90
|
sortKey: sortKey + 1,
|
|
95
91
|
updated: new Date(),
|
|
96
|
-
updatedBy: userId,
|
|
97
92
|
},
|
|
98
93
|
});
|
|
99
94
|
return assortmentFilterId;
|
|
@@ -101,7 +96,7 @@ export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
|
101
96
|
const assortmentFilters = await AssortmentFilters.find({
|
|
102
97
|
_id: { $in: changedAssortmentFilterIds },
|
|
103
98
|
}).toArray();
|
|
104
|
-
emit('ASSORTMENT_REORDER_FILTERS', { assortmentFilters });
|
|
99
|
+
await emit('ASSORTMENT_REORDER_FILTERS', { assortmentFilters });
|
|
105
100
|
return assortmentFilters;
|
|
106
101
|
},
|
|
107
102
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureAssortmentFiltersModule.js","sourceRoot":"","sources":["../../src/module/configureAssortmentFiltersModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEhF,MAAM,wBAAwB,GAAG;IAC/B,uBAAuB;IACvB,0BAA0B;IAC1B,4BAA4B;CAC7B,CAAC;AAEF,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,EAC/C,iBAAiB,GAGlB,EAAgC,EAAE;IACjC,cAAc,CAAC,wBAAwB,CAAC,CAAC;IAEzC,OAAO;QACL,UAAU,EAAE,KAAK,EAAE,EAAE,kBAAkB,EAAE,EAAE,EAAE;YAC3C,OAAO,iBAAiB,CAAC,OAAO,CAAC,oBAAoB,CAAC,kBAAkB,CAAC,EAAE,EAAE,CAAC,CAAC;QACjF,CAAC;QAED,WAAW,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,OAA+B,EAAE,EAAE;YACvE,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,EAAE,OAAO,CAAC,CAAC;YAClE,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QAED,aAAa,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE;YACxC,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,CACpC,EAAE,YAAY,EAAE,EAChB;gBACE,IAAI,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE;gBACpB,UAAU,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE;aAC5B,CACF,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEnC,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC;QACD,MAAM,EAAE,KAAK,EAAE,GAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"configureAssortmentFiltersModule.js","sourceRoot":"","sources":["../../src/module/configureAssortmentFiltersModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
2
|
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/utils';
|
|
3
|
+
import { walkUpFromAssortment } from '../utils/breadcrumbs/build-paths';
|
|
4
|
+
import { resolveAssortmentLinkFromDatabase } from '../utils/breadcrumbs/resolveAssortmentLinkFromDatabase';
|
|
3
5
|
const ASSORTMENT_LINK_EVENTS = [
|
|
4
6
|
'ASSORTMENT_ADD_LINK',
|
|
5
7
|
'ASSORTMENT_REMOVE_LINK',
|
|
@@ -28,7 +30,7 @@ export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCach
|
|
|
28
30
|
return links.toArray();
|
|
29
31
|
},
|
|
30
32
|
// Mutations
|
|
31
|
-
create: async (doc, options
|
|
33
|
+
create: async (doc, options) => {
|
|
32
34
|
const { _id: assortmentLinkId, parentAssortmentId, childAssortmentId, sortKey, ...rest } = doc;
|
|
33
35
|
const selector = {
|
|
34
36
|
...(assortmentLinkId ? generateDbFilterById(assortmentLinkId) : {}),
|
|
@@ -37,7 +39,6 @@ export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCach
|
|
|
37
39
|
};
|
|
38
40
|
const $set = {
|
|
39
41
|
updated: new Date(),
|
|
40
|
-
updatedBy: userId,
|
|
41
42
|
...rest,
|
|
42
43
|
};
|
|
43
44
|
const $setOnInsert = {
|
|
@@ -45,8 +46,17 @@ export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCach
|
|
|
45
46
|
parentAssortmentId,
|
|
46
47
|
childAssortmentId,
|
|
47
48
|
created: new Date(),
|
|
48
|
-
createdBy: userId,
|
|
49
49
|
};
|
|
50
|
+
const assortmentLinksPath = await walkUpFromAssortment({
|
|
51
|
+
resolveAssortmentLink: resolveAssortmentLinkFromDatabase(AssortmentLinks),
|
|
52
|
+
assortmentId: parentAssortmentId,
|
|
53
|
+
});
|
|
54
|
+
assortmentLinksPath
|
|
55
|
+
.flatMap(({ links }) => links)
|
|
56
|
+
.forEach(({ parentIds }) => {
|
|
57
|
+
if (parentIds.includes(childAssortmentId))
|
|
58
|
+
throw Error('CyclicGraphNotSupported');
|
|
59
|
+
});
|
|
50
60
|
if (!sortKey) {
|
|
51
61
|
// Get next sort key
|
|
52
62
|
const lastAssortmentLink = (await AssortmentLinks.findOne({ parentAssortmentId }, { sort: { sortKey: -1 } })) || { sortKey: 0 };
|
|
@@ -62,20 +72,19 @@ export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCach
|
|
|
62
72
|
upsert: true,
|
|
63
73
|
});
|
|
64
74
|
const assortmentLink = await AssortmentLinks.findOne(selector, {});
|
|
65
|
-
emit('ASSORTMENT_ADD_LINK', { assortmentLink });
|
|
75
|
+
await emit('ASSORTMENT_ADD_LINK', { assortmentLink });
|
|
66
76
|
if (!options.skipInvalidation) {
|
|
67
77
|
await invalidateCache({ assortmentIds: [parentAssortmentId] });
|
|
68
78
|
}
|
|
69
79
|
return assortmentLink;
|
|
70
80
|
},
|
|
71
81
|
// This action is specifically used for the bulk migration scripts in the platform package
|
|
72
|
-
update: async (assortmentLinkId, doc, options
|
|
82
|
+
update: async (assortmentLinkId, doc, options) => {
|
|
73
83
|
const selector = generateDbFilterById(assortmentLinkId);
|
|
74
84
|
const modifier = {
|
|
75
85
|
$set: {
|
|
76
86
|
...doc,
|
|
77
87
|
updated: new Date(),
|
|
78
|
-
updatedBy: userId,
|
|
79
88
|
},
|
|
80
89
|
};
|
|
81
90
|
await AssortmentLinks.updateOne(selector, modifier);
|
|
@@ -89,7 +98,7 @@ export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCach
|
|
|
89
98
|
const selector = generateDbFilterById(assortmentLinkId);
|
|
90
99
|
const assortmentLink = await AssortmentLinks.findOne(selector, {});
|
|
91
100
|
await AssortmentLinks.deleteOne(selector);
|
|
92
|
-
emit('ASSORTMENT_REMOVE_LINK', {
|
|
101
|
+
await emit('ASSORTMENT_REMOVE_LINK', {
|
|
93
102
|
assortmentLinkId: assortmentLink._id,
|
|
94
103
|
});
|
|
95
104
|
if (!options.skipInvalidation) {
|
|
@@ -100,13 +109,17 @@ export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCach
|
|
|
100
109
|
return assortmentLink;
|
|
101
110
|
},
|
|
102
111
|
deleteMany: async (selector, options) => {
|
|
103
|
-
const assortmentLinks = await AssortmentLinks.find(selector, {
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
}
|
|
109
|
-
});
|
|
112
|
+
const assortmentLinks = await AssortmentLinks.find(selector, {
|
|
113
|
+
projection: {
|
|
114
|
+
_id: 1,
|
|
115
|
+
childAssortmentId: 1,
|
|
116
|
+
parentAssortmentId: 1,
|
|
117
|
+
},
|
|
118
|
+
}).toArray();
|
|
119
|
+
const deletionResult = await AssortmentLinks.deleteMany(selector);
|
|
120
|
+
await Promise.all(assortmentLinks.map(async (assortmentLink) => emit('ASSORTMENT_REMOVE_LINK', {
|
|
121
|
+
assortmentLinkId: assortmentLink._id,
|
|
122
|
+
})));
|
|
110
123
|
if (!options.skipInvalidation && assortmentLinks.length) {
|
|
111
124
|
await invalidateCache({
|
|
112
125
|
assortmentIds: assortmentLinks.flatMap((link) => [
|
|
@@ -115,15 +128,14 @@ export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCach
|
|
|
115
128
|
]),
|
|
116
129
|
});
|
|
117
130
|
}
|
|
118
|
-
return
|
|
131
|
+
return deletionResult.deletedCount;
|
|
119
132
|
},
|
|
120
|
-
updateManualOrder: async ({ sortKeys }, options
|
|
133
|
+
updateManualOrder: async ({ sortKeys }, options) => {
|
|
121
134
|
const changedAssortmentLinkIds = await Promise.all(sortKeys.map(async ({ assortmentLinkId, sortKey }) => {
|
|
122
135
|
await AssortmentLinks.updateOne(generateDbFilterById(assortmentLinkId), {
|
|
123
136
|
$set: {
|
|
124
137
|
sortKey: sortKey + 1,
|
|
125
138
|
updated: new Date(),
|
|
126
|
-
updatedBy: userId,
|
|
127
139
|
},
|
|
128
140
|
});
|
|
129
141
|
return assortmentLinkId;
|
|
@@ -134,7 +146,7 @@ export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCach
|
|
|
134
146
|
if (!options.skipInvalidation && assortmentLinks.length) {
|
|
135
147
|
await invalidateCache({ assortmentIds: assortmentLinks.map((link) => link.childAssortmentId) });
|
|
136
148
|
}
|
|
137
|
-
emit('ASSORTMENT_REORDER_LINKS', { assortmentLinks });
|
|
149
|
+
await emit('ASSORTMENT_REORDER_LINKS', { assortmentLinks });
|
|
138
150
|
return assortmentLinks;
|
|
139
151
|
},
|
|
140
152
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureAssortmentLinksModule.js","sourceRoot":"","sources":["../../src/module/configureAssortmentLinksModule.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"configureAssortmentLinksModule.js","sourceRoot":"","sources":["../../src/module/configureAssortmentLinksModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@ import localePkg from 'locale';
|
|
|
2
2
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
3
3
|
import { findLocalizedText, generateDbFilterById, generateDbMutations, generateDbObjectId, } from '@unchainedshop/utils';
|
|
4
4
|
import { FileDirector } from '@unchainedshop/file-upload';
|
|
5
|
-
import { AssortmentMediaCollection } from '../db/
|
|
6
|
-
import {
|
|
5
|
+
import { AssortmentMediaCollection } from '../db/AssortmentMediaCollection';
|
|
6
|
+
import { AssortmentMediaSchema } from '../db/AssortmentMediaSchema';
|
|
7
7
|
const { Locale } = localePkg;
|
|
8
8
|
const ASSORTMENT_MEDIA_EVENTS = [
|
|
9
9
|
'ASSORTMENT_ADD_MEDIA',
|
|
@@ -11,17 +11,17 @@ const ASSORTMENT_MEDIA_EVENTS = [
|
|
|
11
11
|
'ASSORTMENT_REORDER_MEDIA',
|
|
12
12
|
'ASSORTMENT_UPDATE_MEDIA_TEXT',
|
|
13
13
|
];
|
|
14
|
-
FileDirector.registerFileUploadCallback('assortment-media', async (file, { modules
|
|
14
|
+
FileDirector.registerFileUploadCallback('assortment-media', async (file, { modules }) => {
|
|
15
15
|
await modules.assortments.media.create({
|
|
16
16
|
assortmentId: file.meta.assortmentId,
|
|
17
17
|
mediaId: file._id,
|
|
18
|
-
}
|
|
18
|
+
});
|
|
19
19
|
});
|
|
20
20
|
export const configureAssortmentMediaModule = async ({ db, }) => {
|
|
21
21
|
registerEvents(ASSORTMENT_MEDIA_EVENTS);
|
|
22
|
-
const {
|
|
23
|
-
const mutations = generateDbMutations(
|
|
24
|
-
const upsertLocalizedText = async (assortmentMediaId, locale, text
|
|
22
|
+
const { AssortmentMedia, AssortmentMediaTexts } = await AssortmentMediaCollection(db);
|
|
23
|
+
const mutations = generateDbMutations(AssortmentMedia, AssortmentMediaSchema);
|
|
24
|
+
const upsertLocalizedText = async (assortmentMediaId, locale, text) => {
|
|
25
25
|
const selector = {
|
|
26
26
|
assortmentMediaId,
|
|
27
27
|
locale,
|
|
@@ -29,14 +29,11 @@ export const configureAssortmentMediaModule = async ({ db, }) => {
|
|
|
29
29
|
await AssortmentMediaTexts.updateOne(selector, {
|
|
30
30
|
$set: {
|
|
31
31
|
updated: new Date(),
|
|
32
|
-
updatedBy: userId,
|
|
33
|
-
authorId: userId,
|
|
34
32
|
...text,
|
|
35
33
|
},
|
|
36
34
|
$setOnInsert: {
|
|
37
35
|
_id: generateDbObjectId(),
|
|
38
36
|
created: new Date(),
|
|
39
|
-
createdBy: userId,
|
|
40
37
|
assortmentMediaId,
|
|
41
38
|
locale,
|
|
42
39
|
},
|
|
@@ -48,14 +45,14 @@ export const configureAssortmentMediaModule = async ({ db, }) => {
|
|
|
48
45
|
return {
|
|
49
46
|
// Queries
|
|
50
47
|
findAssortmentMedia: async ({ assortmentMediaId }) => {
|
|
51
|
-
return
|
|
48
|
+
return AssortmentMedia.findOne(generateDbFilterById(assortmentMediaId), {});
|
|
52
49
|
},
|
|
53
50
|
findAssortmentMedias: async ({ assortmentId, tags, offset, limit }, options) => {
|
|
54
51
|
const selector = assortmentId ? { assortmentId } : {};
|
|
55
52
|
if (tags && tags.length > 0) {
|
|
56
53
|
selector.tags = { $all: tags };
|
|
57
54
|
}
|
|
58
|
-
const mediaList =
|
|
55
|
+
const mediaList = AssortmentMedia.find(selector, {
|
|
59
56
|
skip: offset,
|
|
60
57
|
limit,
|
|
61
58
|
sort: { sortKey: 1 },
|
|
@@ -64,11 +61,11 @@ export const configureAssortmentMediaModule = async ({ db, }) => {
|
|
|
64
61
|
return mediaList.toArray();
|
|
65
62
|
},
|
|
66
63
|
// Mutations
|
|
67
|
-
create: async (doc
|
|
64
|
+
create: async (doc) => {
|
|
68
65
|
let { sortKey } = doc;
|
|
69
66
|
if (!sortKey) {
|
|
70
67
|
// Get next sort key
|
|
71
|
-
const lastAssortmentMedia = (await
|
|
68
|
+
const lastAssortmentMedia = (await AssortmentMedia.findOne({
|
|
72
69
|
assortmentId: doc.assortmentId,
|
|
73
70
|
}, {
|
|
74
71
|
sort: { sortKey: -1 },
|
|
@@ -77,20 +74,20 @@ export const configureAssortmentMediaModule = async ({ db, }) => {
|
|
|
77
74
|
}
|
|
78
75
|
const assortmentMediaId = await mutations.create({
|
|
79
76
|
tags: [],
|
|
80
|
-
authorId: userId,
|
|
81
77
|
...doc,
|
|
82
78
|
sortKey,
|
|
83
|
-
}
|
|
84
|
-
const assortmentMedia = await
|
|
85
|
-
emit('ASSORTMENT_ADD_MEDIA', {
|
|
79
|
+
});
|
|
80
|
+
const assortmentMedia = await AssortmentMedia.findOne(generateDbFilterById(assortmentMediaId), {});
|
|
81
|
+
await emit('ASSORTMENT_ADD_MEDIA', {
|
|
86
82
|
assortmentMedia,
|
|
87
83
|
});
|
|
88
84
|
return assortmentMedia;
|
|
89
85
|
},
|
|
90
86
|
delete: async (assortmentMediaId) => {
|
|
91
87
|
const selector = generateDbFilterById(assortmentMediaId);
|
|
92
|
-
|
|
93
|
-
|
|
88
|
+
await AssortmentMediaTexts.deleteMany({ assortmentMediaId });
|
|
89
|
+
const deletedResult = await AssortmentMedia.deleteOne(selector);
|
|
90
|
+
await emit('ASSORTMENT_REMOVE_MEDIA', {
|
|
94
91
|
assortmentMediaId,
|
|
95
92
|
});
|
|
96
93
|
return deletedResult.deletedCount;
|
|
@@ -103,39 +100,37 @@ export const configureAssortmentMediaModule = async ({ db, }) => {
|
|
|
103
100
|
if (excludedAssortmentMediaIds) {
|
|
104
101
|
selector._id = { $nin: excludedAssortmentMediaIds };
|
|
105
102
|
}
|
|
106
|
-
const ids = await
|
|
103
|
+
const ids = await AssortmentMedia.find(selector, { projection: { _id: true } })
|
|
107
104
|
.map((m) => m._id)
|
|
108
105
|
.toArray();
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
});
|
|
106
|
+
await AssortmentMediaTexts.deleteMany({ assortmentMediaId: { $in: ids } });
|
|
107
|
+
const deletedResult = await AssortmentMedia.deleteMany(selector);
|
|
108
|
+
await Promise.all(ids.map(async (assortmentMediaId) => emit('ASSORTMENT_REMOVE_MEDIA', {
|
|
109
|
+
assortmentMediaId,
|
|
110
|
+
})));
|
|
115
111
|
return deletedResult.deletedCount;
|
|
116
112
|
},
|
|
117
113
|
// This action is specifically used for the bulk migration scripts in the platform package
|
|
118
114
|
update: async (assortmentMediaId, doc) => {
|
|
119
115
|
const selector = generateDbFilterById(assortmentMediaId);
|
|
120
116
|
const modifier = { $set: doc };
|
|
121
|
-
await
|
|
122
|
-
return
|
|
117
|
+
await AssortmentMedia.updateOne(selector, modifier);
|
|
118
|
+
return AssortmentMedia.findOne(selector, {});
|
|
123
119
|
},
|
|
124
|
-
updateManualOrder: async ({ sortKeys }
|
|
120
|
+
updateManualOrder: async ({ sortKeys }) => {
|
|
125
121
|
const changedAssortmentMediaIds = await Promise.all(sortKeys.map(async ({ assortmentMediaId, sortKey }) => {
|
|
126
|
-
await
|
|
122
|
+
await AssortmentMedia.updateOne(generateDbFilterById(assortmentMediaId), {
|
|
127
123
|
$set: {
|
|
128
124
|
sortKey: sortKey + 1,
|
|
129
125
|
updated: new Date(),
|
|
130
|
-
updatedBy: userId,
|
|
131
126
|
},
|
|
132
127
|
});
|
|
133
128
|
return assortmentMediaId;
|
|
134
129
|
}));
|
|
135
|
-
const assortmentMedias = await
|
|
130
|
+
const assortmentMedias = await AssortmentMedia.find({
|
|
136
131
|
_id: { $in: changedAssortmentMediaIds },
|
|
137
132
|
}).toArray();
|
|
138
|
-
emit('ASSORTMENT_REORDER_MEDIA', { assortmentMedias });
|
|
133
|
+
await emit('ASSORTMENT_REORDER_MEDIA', { assortmentMedias });
|
|
139
134
|
return assortmentMedias;
|
|
140
135
|
},
|
|
141
136
|
/*
|
|
@@ -152,9 +147,9 @@ export const configureAssortmentMediaModule = async ({ db, }) => {
|
|
|
152
147
|
return text;
|
|
153
148
|
},
|
|
154
149
|
// Mutations
|
|
155
|
-
updateMediaTexts: async (assortmentMediaId, texts
|
|
156
|
-
const mediaTexts = await Promise.all(texts.map(({ locale, ...text }) => upsertLocalizedText(assortmentMediaId, locale, text
|
|
157
|
-
emit('ASSORTMENT_UPDATE_MEDIA_TEXT', {
|
|
150
|
+
updateMediaTexts: async (assortmentMediaId, texts) => {
|
|
151
|
+
const mediaTexts = await Promise.all(texts.map(({ locale, ...text }) => upsertLocalizedText(assortmentMediaId, locale, text)));
|
|
152
|
+
await emit('ASSORTMENT_UPDATE_MEDIA_TEXT', {
|
|
158
153
|
assortmentMediaId,
|
|
159
154
|
mediaTexts,
|
|
160
155
|
});
|