@unchainedshop/core-bookmarks 2.14.2 → 3.0.0-alpha3
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/bookmarks-index.d.ts +2 -2
- package/lib/bookmarks-index.d.ts.map +1 -1
- package/lib/bookmarks-index.js +2 -2
- package/lib/bookmarks-index.js.map +1 -1
- package/lib/db/BookmarksCollection.d.ts +1 -1
- package/lib/db/BookmarksCollection.d.ts.map +1 -1
- package/lib/module/configureBookmarksModule.d.ts +21 -2
- package/lib/module/configureBookmarksModule.d.ts.map +1 -1
- package/lib/module/configureBookmarksModule.js +14 -10
- package/lib/module/configureBookmarksModule.js.map +1 -1
- package/lib/service/bookmarkServices.d.ts +5 -1
- package/lib/service/bookmarkServices.d.ts.map +1 -1
- package/lib/service/bookmarkServices.js.map +1 -1
- package/lib/service/migrateBookmarksService.d.ts +7 -1
- package/lib/service/migrateBookmarksService.d.ts.map +1 -1
- package/lib/service/migrateBookmarksService.js.map +1 -1
- package/package.json +5 -7
- package/src/bookmarks-index.ts +2 -2
- package/src/db/BookmarksCollection.ts +1 -1
- package/src/module/configureBookmarksModule.ts +44 -14
- package/src/service/bookmarkServices.ts +7 -2
- package/src/service/migrateBookmarksService.ts +11 -1
- package/lib/db/BookmarksSchema.d.ts +0 -3
- package/lib/db/BookmarksSchema.d.ts.map +0 -1
- package/lib/db/BookmarksSchema.js +0 -9
- package/lib/db/BookmarksSchema.js.map +0 -1
- package/src/db/BookmarksSchema.ts +0 -12
package/lib/bookmarks-index.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export * from './module/configureBookmarksModule.js';
|
|
2
|
+
export * from './service/bookmarkServices.js';
|
|
3
3
|
//# sourceMappingURL=bookmarks-index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarks-index.d.ts","sourceRoot":"","sources":["../src/bookmarks-index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"bookmarks-index.d.ts","sourceRoot":"","sources":["../src/bookmarks-index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC"}
|
package/lib/bookmarks-index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export * from './module/configureBookmarksModule.js';
|
|
2
|
+
export * from './service/bookmarkServices.js';
|
|
3
3
|
//# sourceMappingURL=bookmarks-index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarks-index.js","sourceRoot":"","sources":["../src/bookmarks-index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"bookmarks-index.js","sourceRoot":"","sources":["../src/bookmarks-index.ts"],"names":[],"mappings":"AAAA,cAAc,sCAAsC,CAAC;AACrD,cAAc,+BAA+B,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
2
|
-
import { Bookmark } from '
|
|
2
|
+
import type { Bookmark } from '../bookmarks-index.js';
|
|
3
3
|
export declare const BookmarksCollection: (db: mongodb.Db) => Promise<mongodb.Collection<Bookmark>>;
|
|
4
4
|
//# sourceMappingURL=BookmarksCollection.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarksCollection.d.ts","sourceRoot":"","sources":["../../src/db/BookmarksCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"BookmarksCollection.d.ts","sourceRoot":"","sources":["../../src/db/BookmarksCollection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD,eAAO,MAAM,mBAAmB,OAAc,OAAO,CAAC,EAAE,0CAOvD,CAAC"}
|
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { ModuleInput } from '@unchainedshop/core';
|
|
2
|
+
import { mongodb } from '@unchainedshop/mongodb';
|
|
3
|
+
import type { TimestampFields } from '@unchainedshop/mongodb';
|
|
4
|
+
export type Bookmark = {
|
|
5
|
+
_id?: string;
|
|
6
|
+
userId: string;
|
|
7
|
+
productId: string;
|
|
8
|
+
meta?: any;
|
|
9
|
+
} & TimestampFields;
|
|
10
|
+
export interface BookmarksModule {
|
|
11
|
+
create: (doc: Bookmark) => Promise<string | null>;
|
|
12
|
+
update: (_id: string, doc: mongodb.UpdateFilter<Bookmark> | Bookmark) => Promise<string>;
|
|
13
|
+
delete: (_id: string) => Promise<number>;
|
|
14
|
+
findBookmarksByUserId: (userId: string) => Promise<Array<Bookmark>>;
|
|
15
|
+
findBookmarkById: (bookmarkId: string) => Promise<Bookmark>;
|
|
16
|
+
findBookmarks: (query: mongodb.Filter<Bookmark>) => Promise<Array<Bookmark>>;
|
|
17
|
+
replaceUserId: (fromUserId: string, toUserId: string, bookmarkIds?: Array<string>) => Promise<number>;
|
|
18
|
+
deleteByUserId: (toUserId: string) => Promise<number>;
|
|
19
|
+
deleteByProductId: (productId: string) => Promise<number>;
|
|
20
|
+
deleteByUserIdAndMeta: (meta: any) => Promise<number>;
|
|
21
|
+
}
|
|
3
22
|
export declare const configureBookmarksModule: ({ db, }: ModuleInput<Record<string, never>>) => Promise<BookmarksModule>;
|
|
4
23
|
//# sourceMappingURL=configureBookmarksModule.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureBookmarksModule.d.ts","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"configureBookmarksModule.d.ts","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAA4C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAI9D,MAAM,MAAM,QAAQ,GAAG;IACrB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,GAAG,CAAC;CACZ,GAAG,eAAe,CAAC;AAMpB,MAAM,WAAW,eAAe;IAC9B,MAAM,EAAE,CAAC,GAAG,EAAE,QAAQ,KAAK,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAClD,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,QAAQ,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzF,MAAM,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACzC,qBAAqB,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IACpE,gBAAgB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAC5D,aAAa,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7E,aAAa,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtG,cAAc,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACtD,iBAAiB,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IAC1D,qBAAqB,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;CACvD;AAED,eAAO,MAAM,wBAAwB,YAElC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAG,OAAO,CAAC,eAAe,CA0E9D,CAAC"}
|
|
@@ -1,17 +1,12 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
-
import { generateDbFilterById,
|
|
2
|
+
import { generateDbFilterById, generateDbObjectId } from '@unchainedshop/mongodb';
|
|
3
3
|
import { BookmarksCollection } from '../db/BookmarksCollection.js';
|
|
4
|
-
import { BookmarkSchema } from '../db/BookmarksSchema.js';
|
|
5
4
|
const BOOKMARK_EVENTS = ['BOOKMARK_CREATE', 'BOOKMARK_UPDATE', 'BOOKMARK_REMOVE'];
|
|
6
5
|
export const configureBookmarksModule = async ({ db, }) => {
|
|
7
6
|
registerEvents(BOOKMARK_EVENTS);
|
|
8
7
|
const Bookmarks = await BookmarksCollection(db);
|
|
9
|
-
const mutations = generateDbMutations(Bookmarks, BookmarkSchema, {
|
|
10
|
-
permanentlyDeleteByDefault: true,
|
|
11
|
-
});
|
|
12
8
|
return {
|
|
13
9
|
// Queries
|
|
14
|
-
...mutations,
|
|
15
10
|
findBookmarksByUserId: async (userId) => Bookmarks.find({ userId }).toArray(),
|
|
16
11
|
findBookmarkById: async (bookmarkId) => {
|
|
17
12
|
const filter = generateDbFilterById(bookmarkId);
|
|
@@ -51,17 +46,26 @@ export const configureBookmarksModule = async ({ db, }) => {
|
|
|
51
46
|
return result.deletedCount;
|
|
52
47
|
},
|
|
53
48
|
create: async (doc) => {
|
|
54
|
-
const bookmarkId = await
|
|
49
|
+
const { insertedId: bookmarkId } = await Bookmarks.insertOne({
|
|
50
|
+
_id: generateDbObjectId(),
|
|
51
|
+
created: new Date(),
|
|
52
|
+
...doc,
|
|
53
|
+
});
|
|
55
54
|
await emit('BOOKMARK_CREATE', { bookmarkId });
|
|
56
55
|
return bookmarkId;
|
|
57
56
|
},
|
|
58
|
-
update: async (
|
|
59
|
-
|
|
57
|
+
update: async (bookmarkId, doc) => {
|
|
58
|
+
await Bookmarks.updateOne({ _id: bookmarkId }, {
|
|
59
|
+
$set: {
|
|
60
|
+
updated: new Date(),
|
|
61
|
+
...doc,
|
|
62
|
+
},
|
|
63
|
+
});
|
|
60
64
|
await emit('BOOKMARK_UPDATE', { bookmarkId });
|
|
61
65
|
return bookmarkId;
|
|
62
66
|
},
|
|
63
67
|
delete: async (bookmarkId) => {
|
|
64
|
-
const deletedCount = await
|
|
68
|
+
const { deletedCount } = await Bookmarks.deleteOne({ _id: bookmarkId });
|
|
65
69
|
await emit('BOOKMARK_REMOVE', { bookmarkId });
|
|
66
70
|
return deletedCount;
|
|
67
71
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configureBookmarksModule.js","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"configureBookmarksModule.js","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,7 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MigrateBookmarksService } from './migrateBookmarksService.js';
|
|
2
|
+
export interface BookmarkServices {
|
|
3
|
+
migrateBookmarks: MigrateBookmarksService;
|
|
4
|
+
}
|
|
2
5
|
export declare const bookmarkServices: BookmarkServices;
|
|
6
|
+
export type { MigrateBookmarksService };
|
|
3
7
|
//# sourceMappingURL=bookmarkServices.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarkServices.d.ts","sourceRoot":"","sources":["../../src/service/bookmarkServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"bookmarkServices.d.ts","sourceRoot":"","sources":["../../src/service/bookmarkServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAA2B,MAAM,8BAA8B,CAAC;AAEhG,MAAM,WAAW,gBAAgB;IAC/B,gBAAgB,EAAE,uBAAuB,CAAC;CAC3C;AAED,eAAO,MAAM,gBAAgB,EAAE,gBAE9B,CAAC;AAEF,YAAY,EAAE,uBAAuB,EAAE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bookmarkServices.js","sourceRoot":"","sources":["../../src/service/bookmarkServices.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"bookmarkServices.js","sourceRoot":"","sources":["../../src/service/bookmarkServices.ts"],"names":[],"mappings":"AAAA,OAAO,EAA2B,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAMhG,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,gBAAgB,EAAE,uBAAuB;CAC1C,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UnchainedCore } from '@unchainedshop/core';
|
|
2
|
+
export type MigrateBookmarksService = (params: {
|
|
3
|
+
fromUserId: string;
|
|
4
|
+
toUserId: string;
|
|
5
|
+
shouldMerge: boolean;
|
|
6
|
+
countryContext: string;
|
|
7
|
+
}, unchainedAPI: UnchainedCore) => Promise<void>;
|
|
2
8
|
export declare const migrateBookmarksService: MigrateBookmarksService;
|
|
3
9
|
//# sourceMappingURL=migrateBookmarksService.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrateBookmarksService.d.ts","sourceRoot":"","sources":["../../src/service/migrateBookmarksService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"migrateBookmarksService.d.ts","sourceRoot":"","sources":["../../src/service/migrateBookmarksService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEpD,MAAM,MAAM,uBAAuB,GAAG,CACpC,MAAM,EAAE;IACN,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB,EACD,YAAY,EAAE,aAAa,KACxB,OAAO,CAAC,IAAI,CAAC,CAAC;AAMnB,eAAO,MAAM,uBAAuB,EAAE,uBAuBrC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migrateBookmarksService.js","sourceRoot":"","sources":["../../src/service/migrateBookmarksService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"migrateBookmarksService.js","sourceRoot":"","sources":["../../src/service/migrateBookmarksService.ts"],"names":[],"mappings":"AAYA,MAAM,YAAY,GAAG,CAAC,QAAQ,EAAE,EAAE;IAChC,OAAO,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;AAC3F,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAA4B,KAAK,EACnE,EAAE,UAAU,EAAE,QAAQ,EAAE,WAAW,EAAE,EACrC,EAAE,OAAO,EAAE,EACX,EAAE;IACF,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC,CAAC;IACpF,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,8BAA8B;QAC9B,OAAO;IACT,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACjD,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAChF,MAAM,gBAAgB,GAAG,WAAW,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,aAAa;aACjC,MAAM,CAAC,CAAC,YAAY,EAAE,EAAE;YACvB,MAAM,IAAI,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;YACxC,OAAO,CAAC,gBAAgB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QACnC,MAAM,OAAO,CAAC,SAAS,CAAC,aAAa,CAAC,UAAU,EAAE,QAAQ,EAAE,cAAc,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unchainedshop/core-bookmarks",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "3.0.0-alpha3",
|
|
4
4
|
"main": "lib/bookmarks-index.js",
|
|
5
5
|
"exports": {
|
|
6
6
|
".": "./lib/bookmarks-index.js",
|
|
@@ -31,15 +31,13 @@
|
|
|
31
31
|
},
|
|
32
32
|
"homepage": "https://github.com/unchainedshop/unchained#readme",
|
|
33
33
|
"dependencies": {
|
|
34
|
-
"@unchainedshop/events": "^
|
|
35
|
-
"@unchainedshop/utils": "^
|
|
36
|
-
"simpl-schema": "^3.4.6"
|
|
34
|
+
"@unchainedshop/events": "^3.0.0-alpha3",
|
|
35
|
+
"@unchainedshop/utils": "^3.0.0-alpha3"
|
|
37
36
|
},
|
|
38
37
|
"devDependencies": {
|
|
39
|
-
"@types/node": "^
|
|
40
|
-
"@unchainedshop/types": "^2.14.2",
|
|
38
|
+
"@types/node": "^22.5.5",
|
|
41
39
|
"jest": "^29.7.0",
|
|
42
40
|
"ts-jest": "^29.2.5",
|
|
43
|
-
"typescript": "^5.
|
|
41
|
+
"typescript": "^5.6.2"
|
|
44
42
|
}
|
|
45
43
|
}
|
package/src/bookmarks-index.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export
|
|
2
|
-
export
|
|
1
|
+
export * from './module/configureBookmarksModule.js';
|
|
2
|
+
export * from './service/bookmarkServices.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { mongodb } from '@unchainedshop/mongodb';
|
|
2
|
-
import { Bookmark } from '
|
|
2
|
+
import type { Bookmark } from '../bookmarks-index.js';
|
|
3
3
|
|
|
4
4
|
export const BookmarksCollection = async (db: mongodb.Db) => {
|
|
5
5
|
const Bookmarks = db.collection<Bookmark>('bookmarks');
|
|
@@ -1,12 +1,35 @@
|
|
|
1
1
|
import { emit, registerEvents } from '@unchainedshop/events';
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import { generateDbFilterById, generateDbMutations, mongodb } from '@unchainedshop/mongodb';
|
|
2
|
+
import { ModuleInput } from '@unchainedshop/core';
|
|
3
|
+
import { generateDbFilterById, generateDbObjectId, mongodb } from '@unchainedshop/mongodb';
|
|
5
4
|
import { BookmarksCollection } from '../db/BookmarksCollection.js';
|
|
6
|
-
import {
|
|
5
|
+
import type { TimestampFields } from '@unchainedshop/mongodb';
|
|
7
6
|
|
|
8
7
|
const BOOKMARK_EVENTS: string[] = ['BOOKMARK_CREATE', 'BOOKMARK_UPDATE', 'BOOKMARK_REMOVE'];
|
|
9
8
|
|
|
9
|
+
export type Bookmark = {
|
|
10
|
+
_id?: string;
|
|
11
|
+
userId: string;
|
|
12
|
+
productId: string;
|
|
13
|
+
meta?: any;
|
|
14
|
+
} & TimestampFields;
|
|
15
|
+
|
|
16
|
+
/*
|
|
17
|
+
* Module
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
export interface BookmarksModule {
|
|
21
|
+
create: (doc: Bookmark) => Promise<string | null>;
|
|
22
|
+
update: (_id: string, doc: mongodb.UpdateFilter<Bookmark> | Bookmark) => Promise<string>;
|
|
23
|
+
delete: (_id: string) => Promise<number>;
|
|
24
|
+
findBookmarksByUserId: (userId: string) => Promise<Array<Bookmark>>;
|
|
25
|
+
findBookmarkById: (bookmarkId: string) => Promise<Bookmark>;
|
|
26
|
+
findBookmarks: (query: mongodb.Filter<Bookmark>) => Promise<Array<Bookmark>>;
|
|
27
|
+
replaceUserId: (fromUserId: string, toUserId: string, bookmarkIds?: Array<string>) => Promise<number>;
|
|
28
|
+
deleteByUserId: (toUserId: string) => Promise<number>;
|
|
29
|
+
deleteByProductId: (productId: string) => Promise<number>;
|
|
30
|
+
deleteByUserIdAndMeta: (meta: any) => Promise<number>;
|
|
31
|
+
}
|
|
32
|
+
|
|
10
33
|
export const configureBookmarksModule = async ({
|
|
11
34
|
db,
|
|
12
35
|
}: ModuleInput<Record<string, never>>): Promise<BookmarksModule> => {
|
|
@@ -14,13 +37,8 @@ export const configureBookmarksModule = async ({
|
|
|
14
37
|
|
|
15
38
|
const Bookmarks = await BookmarksCollection(db);
|
|
16
39
|
|
|
17
|
-
const mutations = generateDbMutations<Bookmark>(Bookmarks, BookmarkSchema, {
|
|
18
|
-
permanentlyDeleteByDefault: true,
|
|
19
|
-
}) as ModuleMutations<Bookmark>;
|
|
20
|
-
|
|
21
40
|
return {
|
|
22
41
|
// Queries
|
|
23
|
-
...mutations,
|
|
24
42
|
findBookmarksByUserId: async (userId) => Bookmarks.find({ userId }).toArray(),
|
|
25
43
|
findBookmarkById: async (bookmarkId) => {
|
|
26
44
|
const filter = generateDbFilterById(bookmarkId);
|
|
@@ -60,18 +78,30 @@ export const configureBookmarksModule = async ({
|
|
|
60
78
|
await Promise.all(bookmarks.map(async (b) => emit('BOOKMARK_REMOVE', { bookmarkId: b._id })));
|
|
61
79
|
return result.deletedCount;
|
|
62
80
|
},
|
|
63
|
-
create: async (doc
|
|
64
|
-
const bookmarkId = await
|
|
81
|
+
create: async (doc) => {
|
|
82
|
+
const { insertedId: bookmarkId } = await Bookmarks.insertOne({
|
|
83
|
+
_id: generateDbObjectId(),
|
|
84
|
+
created: new Date(),
|
|
85
|
+
...doc,
|
|
86
|
+
});
|
|
65
87
|
await emit('BOOKMARK_CREATE', { bookmarkId });
|
|
66
88
|
return bookmarkId;
|
|
67
89
|
},
|
|
68
|
-
update: async (
|
|
69
|
-
|
|
90
|
+
update: async (bookmarkId, doc) => {
|
|
91
|
+
await Bookmarks.updateOne(
|
|
92
|
+
{ _id: bookmarkId },
|
|
93
|
+
{
|
|
94
|
+
$set: {
|
|
95
|
+
updated: new Date(),
|
|
96
|
+
...doc,
|
|
97
|
+
},
|
|
98
|
+
},
|
|
99
|
+
);
|
|
70
100
|
await emit('BOOKMARK_UPDATE', { bookmarkId });
|
|
71
101
|
return bookmarkId;
|
|
72
102
|
},
|
|
73
103
|
delete: async (bookmarkId) => {
|
|
74
|
-
const deletedCount = await
|
|
104
|
+
const { deletedCount } = await Bookmarks.deleteOne({ _id: bookmarkId });
|
|
75
105
|
await emit('BOOKMARK_REMOVE', { bookmarkId });
|
|
76
106
|
return deletedCount;
|
|
77
107
|
},
|
|
@@ -1,6 +1,11 @@
|
|
|
1
|
-
import {
|
|
2
|
-
|
|
1
|
+
import { MigrateBookmarksService, migrateBookmarksService } from './migrateBookmarksService.js';
|
|
2
|
+
|
|
3
|
+
export interface BookmarkServices {
|
|
4
|
+
migrateBookmarks: MigrateBookmarksService;
|
|
5
|
+
}
|
|
3
6
|
|
|
4
7
|
export const bookmarkServices: BookmarkServices = {
|
|
5
8
|
migrateBookmarks: migrateBookmarksService,
|
|
6
9
|
};
|
|
10
|
+
|
|
11
|
+
export type { MigrateBookmarksService };
|
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { UnchainedCore } from '@unchainedshop/core';
|
|
2
|
+
|
|
3
|
+
export type MigrateBookmarksService = (
|
|
4
|
+
params: {
|
|
5
|
+
fromUserId: string;
|
|
6
|
+
toUserId: string;
|
|
7
|
+
shouldMerge: boolean;
|
|
8
|
+
countryContext: string;
|
|
9
|
+
},
|
|
10
|
+
unchainedAPI: UnchainedCore,
|
|
11
|
+
) => Promise<void>;
|
|
2
12
|
|
|
3
13
|
const hashBookmark = (bookmark) => {
|
|
4
14
|
return `${bookmark.productId}:${bookmark.userId}:${JSON.stringify(bookmark.meta || {})}`;
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarksSchema.d.ts","sourceRoot":"","sources":["../../src/db/BookmarksSchema.ts"],"names":[],"mappings":"AACA,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,eAAO,MAAM,cAAc,cAQ1B,CAAC"}
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { Schemas } from '@unchainedshop/utils';
|
|
2
|
-
import SimpleSchema from 'simpl-schema';
|
|
3
|
-
export const BookmarkSchema = new SimpleSchema({
|
|
4
|
-
userId: { type: String, required: true },
|
|
5
|
-
productId: { type: String, required: true },
|
|
6
|
-
meta: { type: Object, blackbox: true, required: false },
|
|
7
|
-
...Schemas.timestampFields,
|
|
8
|
-
}, { requiredByDefault: false });
|
|
9
|
-
//# sourceMappingURL=BookmarksSchema.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"BookmarksSchema.js","sourceRoot":"","sources":["../../src/db/BookmarksSchema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAC/C,OAAO,YAAY,MAAM,cAAc,CAAC;AAExC,MAAM,CAAC,MAAM,cAAc,GAAG,IAAI,YAAY,CAC5C;IACE,MAAM,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IACxC,SAAS,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE;IAC3C,IAAI,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE;IACvD,GAAG,OAAO,CAAC,eAAe;CAC3B,EACD,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAC7B,CAAC"}
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Schemas } from '@unchainedshop/utils';
|
|
2
|
-
import SimpleSchema from 'simpl-schema';
|
|
3
|
-
|
|
4
|
-
export const BookmarkSchema = new SimpleSchema(
|
|
5
|
-
{
|
|
6
|
-
userId: { type: String, required: true },
|
|
7
|
-
productId: { type: String, required: true },
|
|
8
|
-
meta: { type: Object, blackbox: true, required: false },
|
|
9
|
-
...Schemas.timestampFields,
|
|
10
|
-
},
|
|
11
|
-
{ requiredByDefault: false },
|
|
12
|
-
);
|