@unchainedshop/core-assortments 1.1.3 → 1.1.4
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/lib/assortments-index.d.ts +2 -0
- package/lib/assortments-index.js +3 -0
- package/lib/assortments-index.js.map +1 -0
- package/lib/assortments-settings.d.ts +9 -0
- package/lib/assortments-settings.js +17 -0
- package/lib/assortments-settings.js.map +1 -0
- package/lib/db/AssortmentMediasCollection.d.ts +6 -0
- package/lib/db/AssortmentMediasCollection.js +21 -0
- package/lib/db/AssortmentMediasCollection.js.map +1 -0
- package/lib/db/AssortmentMediasSchema.d.ts +2 -0
- package/lib/db/AssortmentMediasSchema.js +24 -0
- package/lib/db/AssortmentMediasSchema.js.map +1 -0
- package/lib/db/AssortmentsCollection.d.ts +10 -0
- package/lib/db/AssortmentsCollection.js +67 -0
- package/lib/db/AssortmentsCollection.js.map +1 -0
- package/lib/db/AssortmentsSchema.d.ts +5 -0
- package/lib/db/AssortmentsSchema.js +56 -0
- package/lib/db/AssortmentsSchema.js.map +1 -0
- package/lib/migrations/addMigrations.d.ts +3 -0
- package/lib/migrations/addMigrations.js +24 -0
- package/lib/migrations/addMigrations.js.map +1 -0
- package/lib/module/configureAssortmentFiltersModule.d.ts +5 -0
- package/lib/module/configureAssortmentFiltersModule.js +109 -0
- package/lib/module/configureAssortmentFiltersModule.js.map +1 -0
- package/lib/module/configureAssortmentLinksModule.d.ts +6 -0
- package/lib/module/configureAssortmentLinksModule.js +146 -0
- package/lib/module/configureAssortmentLinksModule.js.map +1 -0
- package/lib/module/configureAssortmentMediaModule.d.ts +3 -0
- package/lib/module/configureAssortmentMediaModule.js +166 -0
- package/lib/module/configureAssortmentMediaModule.js.map +1 -0
- package/lib/module/configureAssortmentProductsModule.d.ts +6 -0
- package/lib/module/configureAssortmentProductsModule.js +171 -0
- package/lib/module/configureAssortmentProductsModule.js.map +1 -0
- package/lib/module/configureAssortmentTextsModule.d.ts +6 -0
- package/lib/module/configureAssortmentTextsModule.js +116 -0
- package/lib/module/configureAssortmentTextsModule.js.map +1 -0
- package/lib/module/configureAssortmentsModule.d.ts +3 -0
- package/lib/module/configureAssortmentsModule.js +293 -0
- package/lib/module/configureAssortmentsModule.js.map +1 -0
- package/lib/product-cache/mongodb.d.ts +5 -0
- package/lib/product-cache/mongodb.js +31 -0
- package/lib/product-cache/mongodb.js.map +1 -0
- package/lib/utils/breadcrumbs/build-paths.d.ts +11 -0
- package/lib/utils/breadcrumbs/build-paths.js +46 -0
- package/lib/utils/breadcrumbs/build-paths.js.map +1 -0
- package/lib/utils/breadcrumbs/makeAssortmentBreadcrumbsBuilder.d.ts +8 -0
- package/lib/utils/breadcrumbs/makeAssortmentBreadcrumbsBuilder.js +16 -0
- package/lib/utils/breadcrumbs/makeAssortmentBreadcrumbsBuilder.js.map +1 -0
- package/lib/utils/breadcrumbs/resolveAssortmentLinkFromDatabase.d.ts +7 -0
- package/lib/utils/breadcrumbs/resolveAssortmentLinkFromDatabase.js +15 -0
- package/lib/utils/breadcrumbs/resolveAssortmentLinkFromDatabase.js.map +1 -0
- package/lib/utils/breadcrumbs/resolveAssortmentProductFromDatabase.d.ts +3 -0
- package/lib/utils/breadcrumbs/resolveAssortmentProductFromDatabase.js +10 -0
- package/lib/utils/breadcrumbs/resolveAssortmentProductFromDatabase.js.map +1 -0
- package/lib/utils/tree-zipper/zipTreeByDeepness.d.ts +3 -0
- package/lib/utils/tree-zipper/zipTreeByDeepness.js +46 -0
- package/lib/utils/tree-zipper/zipTreeByDeepness.js.map +1 -0
- package/lib/utils/tree-zipper/zipTreeBySimplyFlattening.d.ts +3 -0
- package/lib/utils/tree-zipper/zipTreeBySimplyFlattening.js +6 -0
- package/lib/utils/tree-zipper/zipTreeBySimplyFlattening.js.map +1 -0
- package/package.js +1 -1
- package/package.json +3 -2
- package/tests/assortments-index.test.ts +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assortments-index.js","sourceRoot":"","sources":["../src/assortments-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { AssortmentsSettingsOptions } from '@unchainedshop/types/assortments';
|
|
2
|
+
import { Db } from '@unchainedshop/types/common';
|
|
3
|
+
export declare const assortmentsSettings: {
|
|
4
|
+
zipTree: any;
|
|
5
|
+
slugify: any;
|
|
6
|
+
setCachedProductIds: any;
|
|
7
|
+
getCachedProductIds: any;
|
|
8
|
+
configureSettings: ({ setCachedProductIds, getCachedProductIds, zipTree, slugify, }: AssortmentsSettingsOptions, db: Db) => Promise<void>;
|
|
9
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { slugify as defaultSlugify } from '@unchainedshop/utils';
|
|
2
|
+
import zipTreeByDeepness from './utils/tree-zipper/zipTreeByDeepness';
|
|
3
|
+
import makeMongoDBCache from './product-cache/mongodb';
|
|
4
|
+
export const assortmentsSettings = {
|
|
5
|
+
zipTree: null,
|
|
6
|
+
slugify: null,
|
|
7
|
+
setCachedProductIds: null,
|
|
8
|
+
getCachedProductIds: null,
|
|
9
|
+
configureSettings: async ({ setCachedProductIds, getCachedProductIds, zipTree = zipTreeByDeepness, slugify = defaultSlugify, }, db) => {
|
|
10
|
+
const defaultCache = await makeMongoDBCache(db);
|
|
11
|
+
assortmentsSettings.zipTree = zipTree;
|
|
12
|
+
assortmentsSettings.slugify = slugify;
|
|
13
|
+
assortmentsSettings.setCachedProductIds = setCachedProductIds || defaultCache.setCachedProductIds;
|
|
14
|
+
assortmentsSettings.getCachedProductIds = getCachedProductIds || defaultCache.getCachedProductIds;
|
|
15
|
+
},
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=assortments-settings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"assortments-settings.js","sourceRoot":"","sources":["../src/assortments-settings.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACjE,OAAO,iBAAiB,MAAM,uCAAuC,CAAC;AACtE,OAAO,gBAAgB,MAAM,yBAAyB,CAAC;AAEvD,MAAM,CAAC,MAAM,mBAAmB,GAAG;IACjC,OAAO,EAAE,IAAI;IACb,OAAO,EAAE,IAAI;IACb,mBAAmB,EAAE,IAAI;IACzB,mBAAmB,EAAE,IAAI;IACzB,iBAAiB,EAAE,KAAK,EACtB,EACE,mBAAmB,EACnB,mBAAmB,EACnB,OAAO,GAAG,iBAAiB,EAC3B,OAAO,GAAG,cAAc,GACG,EAC7B,EAAM,EACN,EAAE;QACF,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAChD,mBAAmB,CAAC,OAAO,GAAG,OAAO,CAAC;QACtC,mBAAmB,CAAC,OAAO,GAAG,OAAO,CAAC;QACtC,mBAAmB,CAAC,mBAAmB,GAAG,mBAAmB,IAAI,YAAY,CAAC,mBAAmB,CAAC;QAClG,mBAAmB,CAAC,mBAAmB,GAAG,mBAAmB,IAAI,YAAY,CAAC,mBAAmB,CAAC;IACpG,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AssortmentMedia, AssortmentMediaText } from '@unchainedshop/types/assortments.media';
|
|
2
|
+
import { Db } from '@unchainedshop/types/common';
|
|
3
|
+
export declare const AssortmentMediaCollection: (db: Db) => Promise<{
|
|
4
|
+
AssortmentMedias: import("mongodb").Collection<AssortmentMedia>;
|
|
5
|
+
AssortmentMediaTexts: import("mongodb").Collection<AssortmentMediaText>;
|
|
6
|
+
}>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { buildDbIndexes } from '@unchainedshop/utils';
|
|
2
|
+
export const AssortmentMediaCollection = async (db) => {
|
|
3
|
+
const AssortmentMedias = db.collection('assortment_media');
|
|
4
|
+
const AssortmentMediaTexts = db.collection('assortment_media_texts');
|
|
5
|
+
// Assortment Indexes
|
|
6
|
+
await buildDbIndexes(AssortmentMedias, [
|
|
7
|
+
{ index: { mediaId: 1 } },
|
|
8
|
+
{ index: { assortmentId: 1 } },
|
|
9
|
+
{ index: { tags: 1 } },
|
|
10
|
+
]);
|
|
11
|
+
// AssortmentTexts indexes
|
|
12
|
+
await buildDbIndexes(AssortmentMediaTexts, [
|
|
13
|
+
{ index: { assortmentMediaId: 1 } },
|
|
14
|
+
{ index: { locale: 1 } },
|
|
15
|
+
]);
|
|
16
|
+
return {
|
|
17
|
+
AssortmentMedias,
|
|
18
|
+
AssortmentMediaTexts,
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=AssortmentMediasCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssortmentMediasCollection.js","sourceRoot":"","sources":["../../src/db/AssortmentMediasCollection.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,EAAE,EAAM,EAAE,EAAE;IACxD,MAAM,gBAAgB,GAAG,EAAE,CAAC,UAAU,CAAkB,kBAAkB,CAAC,CAAC;IAC5E,MAAM,oBAAoB,GAAG,EAAE,CAAC,UAAU,CAAsB,wBAAwB,CAAC,CAAC;IAE1F,qBAAqB;IACrB,MAAM,cAAc,CAAC,gBAAgB,EAAE;QACrC,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QACzB,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,CAAC,EAAE,EAAE;QAC9B,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,gBAAgB;QAChB,oBAAoB;KACrB,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { Schemas } from '@unchainedshop/utils';
|
|
2
|
+
import SimpleSchema from 'simpl-schema';
|
|
3
|
+
export const AssortmentMediasSchema = new SimpleSchema({
|
|
4
|
+
mediaId: { type: String, required: true },
|
|
5
|
+
assortmentId: { type: String, required: true },
|
|
6
|
+
sortKey: { type: Number, required: true },
|
|
7
|
+
tags: Array,
|
|
8
|
+
'tags.$': String,
|
|
9
|
+
meta: { type: Object, blackbox: true },
|
|
10
|
+
authorId: { type: String, required: true },
|
|
11
|
+
...Schemas.timestampFields,
|
|
12
|
+
}, { requiredByDefault: false });
|
|
13
|
+
export const AssortmentMediaTextsSchema = new SimpleSchema({
|
|
14
|
+
assortmentMediaId: {
|
|
15
|
+
type: String,
|
|
16
|
+
required: true,
|
|
17
|
+
},
|
|
18
|
+
locale: String,
|
|
19
|
+
authorId: { type: String, required: true },
|
|
20
|
+
title: String,
|
|
21
|
+
subtitle: String,
|
|
22
|
+
...Schemas.timestampFields,
|
|
23
|
+
}, { requiredByDefault: false });
|
|
24
|
+
//# sourceMappingURL=AssortmentMediasSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssortmentMediasSchema.js","sourceRoot":"","sources":["../../src/db/AssortmentMediasSchema.js"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,sBAAsB,GAAG,IAAI,YAAY,CACpD;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,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC1C,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,QAAQ,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC1C,KAAK,EAAE,MAAM;IACb,QAAQ,EAAE,MAAM;IAChB,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { Db } from '@unchainedshop/types/common';
|
|
2
|
+
import { Assortment, AssortmentText, AssortmentProduct, AssortmentLink, AssortmentFilter, AssortmentProductIdCacheRecord } from '@unchainedshop/types/assortments';
|
|
3
|
+
export declare const AssortmentsCollection: (db: Db) => Promise<{
|
|
4
|
+
Assortments: import("mongodb").Collection<Assortment>;
|
|
5
|
+
AssortmentTexts: import("mongodb").Collection<AssortmentText>;
|
|
6
|
+
AssortmentProducts: import("mongodb").Collection<AssortmentProduct>;
|
|
7
|
+
AssortmentLinks: import("mongodb").Collection<AssortmentLink>;
|
|
8
|
+
AssortmentFilters: import("mongodb").Collection<AssortmentFilter>;
|
|
9
|
+
AssortmentProductIdCache: import("mongodb").Collection<AssortmentProductIdCacheRecord>;
|
|
10
|
+
}>;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import { buildDbIndexes } from '@unchainedshop/utils';
|
|
2
|
+
export const AssortmentsCollection = async (db) => {
|
|
3
|
+
const Assortments = db.collection('assortments');
|
|
4
|
+
const AssortmentTexts = db.collection('assortment_texts');
|
|
5
|
+
const AssortmentProducts = db.collection('assortment_products');
|
|
6
|
+
const AssortmentLinks = db.collection('assortment_links');
|
|
7
|
+
const AssortmentFilters = db.collection('assortment_filters');
|
|
8
|
+
const AssortmentProductIdCache = db.collection('assortment_productId_cache');
|
|
9
|
+
// Assortment Indexes
|
|
10
|
+
await buildDbIndexes(Assortments, [
|
|
11
|
+
{ index: { isActive: 1 } },
|
|
12
|
+
{ index: { isRoot: 1 } },
|
|
13
|
+
{ index: { sequence: 1 } },
|
|
14
|
+
{ index: { slugs: 1 } },
|
|
15
|
+
{ index: { tags: 1 } },
|
|
16
|
+
{
|
|
17
|
+
index: { slugs: 'text' },
|
|
18
|
+
options: {
|
|
19
|
+
name: 'assortments_fulltext_search',
|
|
20
|
+
},
|
|
21
|
+
},
|
|
22
|
+
]);
|
|
23
|
+
// AssortmentTexts indexes
|
|
24
|
+
await buildDbIndexes(AssortmentTexts, [
|
|
25
|
+
{ index: { assortmentId: 1 } },
|
|
26
|
+
{ index: { locale: 1 } },
|
|
27
|
+
{ index: { slug: 1 } },
|
|
28
|
+
{ index: { locale: 1, assortmentId: 1 } },
|
|
29
|
+
{
|
|
30
|
+
index: { title: 'text', subtitle: 'text' },
|
|
31
|
+
options: {
|
|
32
|
+
weights: {
|
|
33
|
+
title: 8,
|
|
34
|
+
subtitle: 6,
|
|
35
|
+
},
|
|
36
|
+
name: 'assortments_texts_fulltext_search',
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
]);
|
|
40
|
+
// AssortmentProducts indexes
|
|
41
|
+
await buildDbIndexes(AssortmentProducts, [
|
|
42
|
+
{ index: { assortmentId: 1 } },
|
|
43
|
+
{ index: { productId: 1 } },
|
|
44
|
+
{ index: { tags: 1 } },
|
|
45
|
+
]);
|
|
46
|
+
// AssortmentLinks indices
|
|
47
|
+
await buildDbIndexes(AssortmentLinks, [
|
|
48
|
+
{ index: { parentAssortmentId: 1 } },
|
|
49
|
+
{ index: { childAssortmentId: 1 } },
|
|
50
|
+
{ index: { tags: 1 } },
|
|
51
|
+
]);
|
|
52
|
+
// AssortmentFilter indices
|
|
53
|
+
await buildDbIndexes(AssortmentFilters, [
|
|
54
|
+
{ index: { assortmentId: 1 } },
|
|
55
|
+
{ index: { filterId: 1 } },
|
|
56
|
+
{ index: { tags: 1 } },
|
|
57
|
+
]);
|
|
58
|
+
return {
|
|
59
|
+
Assortments,
|
|
60
|
+
AssortmentTexts,
|
|
61
|
+
AssortmentProducts,
|
|
62
|
+
AssortmentLinks,
|
|
63
|
+
AssortmentFilters,
|
|
64
|
+
AssortmentProductIdCache,
|
|
65
|
+
};
|
|
66
|
+
};
|
|
67
|
+
//# sourceMappingURL=AssortmentsCollection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssortmentsCollection.js","sourceRoot":"","sources":["../../src/db/AssortmentsCollection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
import { Schemas } from '@unchainedshop/utils';
|
|
2
|
+
import SimpleSchema from 'simpl-schema';
|
|
3
|
+
export const AssortmentsSchema = new SimpleSchema({
|
|
4
|
+
authorId: { type: String, required: true },
|
|
5
|
+
isActive: Boolean,
|
|
6
|
+
isBase: Boolean,
|
|
7
|
+
isRoot: Boolean,
|
|
8
|
+
meta: { type: Object, blackbox: true },
|
|
9
|
+
sequence: { type: Number, required: true },
|
|
10
|
+
slugs: Array,
|
|
11
|
+
'slugs.$': String,
|
|
12
|
+
tags: Array,
|
|
13
|
+
'tags.$': String,
|
|
14
|
+
...Schemas.timestampFields,
|
|
15
|
+
}, { requiredByDefault: false });
|
|
16
|
+
export const AssortmentTextsSchema = new SimpleSchema({
|
|
17
|
+
assortmentId: { type: String, required: true },
|
|
18
|
+
authorId: { type: String, required: true },
|
|
19
|
+
description: String,
|
|
20
|
+
locale: { type: String, required: true },
|
|
21
|
+
slug: String,
|
|
22
|
+
subtitle: String,
|
|
23
|
+
title: String,
|
|
24
|
+
...Schemas.timestampFields,
|
|
25
|
+
}, { requiredByDefault: false });
|
|
26
|
+
export const AssortmentProductsSchema = new SimpleSchema({
|
|
27
|
+
assortmentId: { type: String, required: true },
|
|
28
|
+
authorId: { type: String, required: true },
|
|
29
|
+
meta: { type: Object, blackbox: true },
|
|
30
|
+
productId: { type: String, required: true },
|
|
31
|
+
sortKey: { type: Number, required: true },
|
|
32
|
+
tags: Array,
|
|
33
|
+
'tags.$': String,
|
|
34
|
+
...Schemas.timestampFields,
|
|
35
|
+
}, { requiredByDefault: false });
|
|
36
|
+
export const AssortmentLinksSchema = new SimpleSchema({
|
|
37
|
+
authorId: { type: String, required: true },
|
|
38
|
+
childAssortmentId: { type: String, required: true },
|
|
39
|
+
meta: { type: Object, blackbox: true },
|
|
40
|
+
parentAssortmentId: { type: String, required: true },
|
|
41
|
+
sortKey: { type: Number, required: true },
|
|
42
|
+
tags: Array,
|
|
43
|
+
'tags.$': String,
|
|
44
|
+
...Schemas.timestampFields,
|
|
45
|
+
}, { requiredByDefault: false });
|
|
46
|
+
export const AssortmentFiltersSchema = new SimpleSchema({
|
|
47
|
+
assortmentId: { type: String, required: true },
|
|
48
|
+
authorId: { type: String, required: true },
|
|
49
|
+
filterId: { type: String, required: true },
|
|
50
|
+
meta: { type: Object, blackbox: true },
|
|
51
|
+
sortKey: { type: Number, required: true },
|
|
52
|
+
tags: Array,
|
|
53
|
+
'tags.$': String,
|
|
54
|
+
...Schemas.timestampFields,
|
|
55
|
+
}, { requiredByDefault: false });
|
|
56
|
+
//# sourceMappingURL=AssortmentsSchema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssortmentsSchema.js","sourceRoot":"","sources":["../../src/db/AssortmentsSchema.js"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { AssortmentsCollection } from '../db/AssortmentsCollection';
|
|
2
|
+
export default function addMigrations(repository) {
|
|
3
|
+
repository?.register({
|
|
4
|
+
id: 20220216000000,
|
|
5
|
+
name: 'Move _cachedProductIds cache to own collection in order to save a lot of bandwidth',
|
|
6
|
+
up: async () => {
|
|
7
|
+
const { Assortments, AssortmentProductIdCache } = await AssortmentsCollection(repository.db);
|
|
8
|
+
const assortments = await Assortments.find({}, { projection: { _id: true, _cachedProductIds: true } }).toArray();
|
|
9
|
+
await Promise.all(assortments.map(async (assortment) => {
|
|
10
|
+
await AssortmentProductIdCache.updateOne({
|
|
11
|
+
_id: assortment._id,
|
|
12
|
+
}, {
|
|
13
|
+
$set: { productIds: assortment._cachedProductIds }, // eslint-disable-line
|
|
14
|
+
}, {
|
|
15
|
+
upsert: true,
|
|
16
|
+
});
|
|
17
|
+
}));
|
|
18
|
+
await Assortments.updateMany({}, {
|
|
19
|
+
$unset: { _cachedProductIds: 1 },
|
|
20
|
+
});
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=addMigrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addMigrations.js","sourceRoot":"","sources":["../../src/migrations/addMigrations.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAC;AAEpE,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,EACF,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,MAAM,wBAAwB,CAAC,SAAS,CACtC;oBACE,GAAG,EAAE,UAAU,CAAC,GAAU;iBAC3B,EACD;oBACE,IAAI,EAAE,EAAE,UAAU,EAAE,UAAU,CAAC,iBAAiB,EAAE,EAAE,sBAAsB;iBAC3E,EACD;oBACE,MAAM,EAAE,IAAI;iBACb,CACF,CAAC;YACJ,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;AACL,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { AssortmentFilter, AssortmentsModule } from '@unchainedshop/types/assortments';
|
|
2
|
+
import { Collection } from '@unchainedshop/types/common';
|
|
3
|
+
export declare const configureAssortmentFiltersModule: ({ AssortmentFilters, }: {
|
|
4
|
+
AssortmentFilters: Collection<AssortmentFilter>;
|
|
5
|
+
}) => AssortmentsModule['filters'];
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
+
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/utils';
|
|
3
|
+
const ASSORTMENT_FILTER_EVENTS = [
|
|
4
|
+
'ASSORTMENT_ADD_FILTER',
|
|
5
|
+
'ASSORTMENT_REMOVE_FILTER',
|
|
6
|
+
'ASSORTMENT_REORDER_FILTERS',
|
|
7
|
+
];
|
|
8
|
+
export const configureAssortmentFiltersModule = ({ AssortmentFilters, }) => {
|
|
9
|
+
registerEvents(ASSORTMENT_FILTER_EVENTS);
|
|
10
|
+
return {
|
|
11
|
+
findFilter: async ({ assortmentFilterId }) => {
|
|
12
|
+
return AssortmentFilters.findOne(generateDbFilterById(assortmentFilterId), {});
|
|
13
|
+
},
|
|
14
|
+
findFilters: async ({ assortmentId }, options) => {
|
|
15
|
+
const filters = AssortmentFilters.find({ assortmentId }, options);
|
|
16
|
+
return filters.toArray();
|
|
17
|
+
},
|
|
18
|
+
findFilterIds: async ({ assortmentId }) => {
|
|
19
|
+
const filters = AssortmentFilters.find({ assortmentId }, {
|
|
20
|
+
sort: { sortKey: 1 },
|
|
21
|
+
projection: { filterId: 1 },
|
|
22
|
+
}).map((filter) => filter.filterId);
|
|
23
|
+
return filters.toArray();
|
|
24
|
+
},
|
|
25
|
+
create: async (doc, userId) => {
|
|
26
|
+
const { _id, assortmentId, filterId, sortKey, ...rest } = doc;
|
|
27
|
+
const selector = {
|
|
28
|
+
...(_id ? generateDbFilterById(_id) : {}),
|
|
29
|
+
filterId,
|
|
30
|
+
assortmentId,
|
|
31
|
+
};
|
|
32
|
+
const $set = {
|
|
33
|
+
updated: new Date(),
|
|
34
|
+
updatedBy: userId,
|
|
35
|
+
...rest,
|
|
36
|
+
};
|
|
37
|
+
const $setOnInsert = {
|
|
38
|
+
_id: _id || generateDbObjectId(),
|
|
39
|
+
filterId,
|
|
40
|
+
assortmentId,
|
|
41
|
+
created: new Date(),
|
|
42
|
+
createdBy: userId,
|
|
43
|
+
};
|
|
44
|
+
if (!doc.sortKey) {
|
|
45
|
+
// Get next sort key
|
|
46
|
+
const lastAssortmentFilter = (await AssortmentFilters.findOne({ assortmentId }, { sort: { sortKey: -1 } })) || { sortKey: 0 };
|
|
47
|
+
$setOnInsert.sortKey = lastAssortmentFilter.sortKey + 1;
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
$set.sortKey = sortKey;
|
|
51
|
+
}
|
|
52
|
+
await AssortmentFilters.updateOne(selector, {
|
|
53
|
+
$set,
|
|
54
|
+
$setOnInsert,
|
|
55
|
+
}, { upsert: true });
|
|
56
|
+
const assortmentFilter = await AssortmentFilters.findOne(selector, {});
|
|
57
|
+
emit('ASSORTMENT_ADD_FILTER', { assortmentFilter });
|
|
58
|
+
return assortmentFilter;
|
|
59
|
+
},
|
|
60
|
+
delete: async (assortmentFilterId) => {
|
|
61
|
+
const selector = generateDbFilterById(assortmentFilterId);
|
|
62
|
+
const assortmentFilter = await AssortmentFilters.findOne(selector, {
|
|
63
|
+
projection: { _id: 1 },
|
|
64
|
+
});
|
|
65
|
+
await AssortmentFilters.deleteOne(selector);
|
|
66
|
+
emit('ASSORTMENT_REMOVE_FILTER', {
|
|
67
|
+
assortmentFilterId: assortmentFilter._id,
|
|
68
|
+
});
|
|
69
|
+
return [assortmentFilter];
|
|
70
|
+
},
|
|
71
|
+
deleteMany: async (selector) => {
|
|
72
|
+
const assortmentFilters = await AssortmentFilters.find(selector, {
|
|
73
|
+
projection: { _id: 1 },
|
|
74
|
+
}).toArray();
|
|
75
|
+
await AssortmentFilters.deleteMany(selector);
|
|
76
|
+
assortmentFilters.forEach((assortmentFilter) => {
|
|
77
|
+
emit('ASSORTMENT_REMOVE_FILTER', {
|
|
78
|
+
assortmentFilterId: assortmentFilter._id,
|
|
79
|
+
});
|
|
80
|
+
});
|
|
81
|
+
return assortmentFilters;
|
|
82
|
+
},
|
|
83
|
+
// This action is specifically used for the bulk migration scripts in the platform package
|
|
84
|
+
update: async (assortmentFilterId, doc) => {
|
|
85
|
+
const selector = generateDbFilterById(assortmentFilterId);
|
|
86
|
+
const modifier = { $set: doc };
|
|
87
|
+
await AssortmentFilters.updateOne(selector, modifier);
|
|
88
|
+
return AssortmentFilters.findOne(selector, {});
|
|
89
|
+
},
|
|
90
|
+
updateManualOrder: async ({ sortKeys }, userId) => {
|
|
91
|
+
const changedAssortmentFilterIds = await Promise.all(sortKeys.map(async ({ assortmentFilterId, sortKey }) => {
|
|
92
|
+
await AssortmentFilters.updateOne(generateDbFilterById(assortmentFilterId), {
|
|
93
|
+
$set: {
|
|
94
|
+
sortKey: sortKey + 1,
|
|
95
|
+
updated: new Date(),
|
|
96
|
+
updatedBy: userId,
|
|
97
|
+
},
|
|
98
|
+
});
|
|
99
|
+
return assortmentFilterId;
|
|
100
|
+
}));
|
|
101
|
+
const assortmentFilters = await AssortmentFilters.find({
|
|
102
|
+
_id: { $in: changedAssortmentFilterIds },
|
|
103
|
+
}).toArray();
|
|
104
|
+
emit('ASSORTMENT_REORDER_FILTERS', { assortmentFilters });
|
|
105
|
+
return assortmentFilters;
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
};
|
|
109
|
+
//# sourceMappingURL=configureAssortmentFiltersModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureAssortmentFiltersModule.js","sourceRoot":"","sources":["../../src/module/configureAssortmentFiltersModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { AssortmentLink, AssortmentsModule } from '@unchainedshop/types/assortments';
|
|
2
|
+
import { Collection } from '@unchainedshop/types/common';
|
|
3
|
+
export declare const configureAssortmentLinksModule: ({ AssortmentLinks, invalidateCache, }: {
|
|
4
|
+
AssortmentLinks: Collection<AssortmentLink>;
|
|
5
|
+
invalidateCache: AssortmentsModule['invalidateCache'];
|
|
6
|
+
}) => AssortmentsModule['links'];
|
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
+
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/utils';
|
|
3
|
+
const ASSORTMENT_LINK_EVENTS = [
|
|
4
|
+
'ASSORTMENT_ADD_LINK',
|
|
5
|
+
'ASSORTMENT_REMOVE_LINK',
|
|
6
|
+
'ASSORTMENT_REORDER_LINKS',
|
|
7
|
+
];
|
|
8
|
+
export const configureAssortmentLinksModule = ({ AssortmentLinks, invalidateCache, }) => {
|
|
9
|
+
registerEvents(ASSORTMENT_LINK_EVENTS);
|
|
10
|
+
return {
|
|
11
|
+
// Queries
|
|
12
|
+
findLink: async ({ assortmentLinkId, parentAssortmentId, childAssortmentId }) => {
|
|
13
|
+
return AssortmentLinks.findOne(assortmentLinkId
|
|
14
|
+
? generateDbFilterById(assortmentLinkId)
|
|
15
|
+
: { parentAssortmentId, childAssortmentId }, {});
|
|
16
|
+
},
|
|
17
|
+
findLinks: async ({ assortmentId, parentAssortmentId }, options) => {
|
|
18
|
+
const selector = parentAssortmentId
|
|
19
|
+
? {
|
|
20
|
+
parentAssortmentId,
|
|
21
|
+
}
|
|
22
|
+
: {
|
|
23
|
+
$or: [{ parentAssortmentId: assortmentId }, { childAssortmentId: assortmentId }],
|
|
24
|
+
};
|
|
25
|
+
const links = AssortmentLinks.find(selector, options || {
|
|
26
|
+
sort: { sortKey: 1 },
|
|
27
|
+
});
|
|
28
|
+
return links.toArray();
|
|
29
|
+
},
|
|
30
|
+
// Mutations
|
|
31
|
+
create: async (doc, options, userId) => {
|
|
32
|
+
const { _id: assortmentLinkId, parentAssortmentId, childAssortmentId, sortKey, ...rest } = doc;
|
|
33
|
+
const selector = {
|
|
34
|
+
...(assortmentLinkId ? generateDbFilterById(assortmentLinkId) : {}),
|
|
35
|
+
parentAssortmentId,
|
|
36
|
+
childAssortmentId,
|
|
37
|
+
};
|
|
38
|
+
const $set = {
|
|
39
|
+
updated: new Date(),
|
|
40
|
+
updatedBy: userId,
|
|
41
|
+
...rest,
|
|
42
|
+
};
|
|
43
|
+
const $setOnInsert = {
|
|
44
|
+
_id: assortmentLinkId || generateDbObjectId(),
|
|
45
|
+
parentAssortmentId,
|
|
46
|
+
childAssortmentId,
|
|
47
|
+
created: new Date(),
|
|
48
|
+
createdBy: userId,
|
|
49
|
+
};
|
|
50
|
+
if (!sortKey) {
|
|
51
|
+
// Get next sort key
|
|
52
|
+
const lastAssortmentLink = (await AssortmentLinks.findOne({ parentAssortmentId }, { sort: { sortKey: -1 } })) || { sortKey: 0 };
|
|
53
|
+
$setOnInsert.sortKey = lastAssortmentLink.sortKey + 1;
|
|
54
|
+
}
|
|
55
|
+
else {
|
|
56
|
+
$set.sortKey = sortKey;
|
|
57
|
+
}
|
|
58
|
+
await AssortmentLinks.updateOne(selector, {
|
|
59
|
+
$set,
|
|
60
|
+
$setOnInsert,
|
|
61
|
+
}, {
|
|
62
|
+
upsert: true,
|
|
63
|
+
});
|
|
64
|
+
const assortmentLink = await AssortmentLinks.findOne(selector, {});
|
|
65
|
+
emit('ASSORTMENT_ADD_LINK', { assortmentLink });
|
|
66
|
+
if (!options.skipInvalidation) {
|
|
67
|
+
await invalidateCache({ assortmentIds: [parentAssortmentId] });
|
|
68
|
+
}
|
|
69
|
+
return assortmentLink;
|
|
70
|
+
},
|
|
71
|
+
// This action is specifically used for the bulk migration scripts in the platform package
|
|
72
|
+
update: async (assortmentLinkId, doc, options, userId) => {
|
|
73
|
+
const selector = generateDbFilterById(assortmentLinkId);
|
|
74
|
+
const modifier = {
|
|
75
|
+
$set: {
|
|
76
|
+
...doc,
|
|
77
|
+
updated: new Date(),
|
|
78
|
+
updatedBy: userId,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
await AssortmentLinks.updateOne(selector, modifier);
|
|
82
|
+
const assortmentLink = await AssortmentLinks.findOne(selector, {});
|
|
83
|
+
if (!options.skipInvalidation) {
|
|
84
|
+
await invalidateCache({ assortmentIds: [assortmentLink.childAssortmentId] }, {
|
|
85
|
+
skipUpstreamTraversal: false,
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
return assortmentLink;
|
|
89
|
+
},
|
|
90
|
+
delete: async (assortmentLinkId, options) => {
|
|
91
|
+
const selector = generateDbFilterById(assortmentLinkId);
|
|
92
|
+
const assortmentLink = await AssortmentLinks.findOne(selector, {});
|
|
93
|
+
await AssortmentLinks.deleteOne(selector);
|
|
94
|
+
emit('ASSORTMENT_REMOVE_LINK', {
|
|
95
|
+
assortmentLinkId: assortmentLink._id,
|
|
96
|
+
});
|
|
97
|
+
if (!options.skipInvalidation) {
|
|
98
|
+
await invalidateCache({
|
|
99
|
+
assortmentIds: [assortmentLink.childAssortmentId, assortmentLink.parentAssortmentId],
|
|
100
|
+
}, { skipUpstreamTraversal: false });
|
|
101
|
+
}
|
|
102
|
+
return assortmentLink;
|
|
103
|
+
},
|
|
104
|
+
deleteMany: async (selector, options) => {
|
|
105
|
+
const assortmentLinks = await AssortmentLinks.find(selector, {}).toArray();
|
|
106
|
+
await AssortmentLinks.deleteMany(selector);
|
|
107
|
+
assortmentLinks.forEach((assortmentLink) => {
|
|
108
|
+
emit('ASSORTMENT_REMOVE_LINK', {
|
|
109
|
+
assortmentLinkId: assortmentLink._id,
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
if (!options.skipInvalidation && assortmentLinks.length) {
|
|
113
|
+
await invalidateCache({
|
|
114
|
+
assortmentIds: assortmentLinks.flatMap((link) => [
|
|
115
|
+
link.childAssortmentId,
|
|
116
|
+
link.parentAssortmentId,
|
|
117
|
+
]),
|
|
118
|
+
}, { skipUpstreamTraversal: false });
|
|
119
|
+
}
|
|
120
|
+
return assortmentLinks;
|
|
121
|
+
},
|
|
122
|
+
updateManualOrder: async ({ sortKeys }, options, userId) => {
|
|
123
|
+
const changedAssortmentLinkIds = await Promise.all(sortKeys.map(async ({ assortmentLinkId, sortKey }) => {
|
|
124
|
+
await AssortmentLinks.updateOne(generateDbFilterById(assortmentLinkId), {
|
|
125
|
+
$set: {
|
|
126
|
+
sortKey: sortKey + 1,
|
|
127
|
+
updated: new Date(),
|
|
128
|
+
updatedBy: userId,
|
|
129
|
+
},
|
|
130
|
+
});
|
|
131
|
+
return assortmentLinkId;
|
|
132
|
+
}));
|
|
133
|
+
const assortmentLinks = await AssortmentLinks.find({
|
|
134
|
+
_id: { $in: changedAssortmentLinkIds },
|
|
135
|
+
}).toArray();
|
|
136
|
+
if (!options.skipInvalidation && assortmentLinks.length) {
|
|
137
|
+
await invalidateCache({ assortmentIds: assortmentLinks.map((link) => link.childAssortmentId) }, {
|
|
138
|
+
skipUpstreamTraversal: false,
|
|
139
|
+
});
|
|
140
|
+
}
|
|
141
|
+
emit('ASSORTMENT_REORDER_LINKS', { assortmentLinks });
|
|
142
|
+
return assortmentLinks;
|
|
143
|
+
},
|
|
144
|
+
};
|
|
145
|
+
};
|
|
146
|
+
//# sourceMappingURL=configureAssortmentLinksModule.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configureAssortmentLinksModule.js","sourceRoot":"","sources":["../../src/module/configureAssortmentLinksModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import { AssortmentMediaModule } from '@unchainedshop/types/assortments.media';
|
|
2
|
+
import { ModuleInput } from '@unchainedshop/types/common';
|
|
3
|
+
export declare const configureAssortmentMediaModule: ({ db, }: ModuleInput<Record<string, never>>) => Promise<AssortmentMediaModule>;
|