@unchainedshop/core-bookmarks 3.0.0-alpha2 → 3.0.0-alpha4

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.
@@ -1,3 +1,3 @@
1
- export { configureBookmarksModule } from './module/configureBookmarksModule.js';
2
- export { bookmarkServices } from './service/bookmarkServices.js';
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,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC"}
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"}
@@ -1,3 +1,3 @@
1
- export { configureBookmarksModule } from './module/configureBookmarksModule.js';
2
- export { bookmarkServices } from './service/bookmarkServices.js';
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,OAAO,EAAE,wBAAwB,EAAE,MAAM,sCAAsC,CAAC;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC"}
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 '@unchainedshop/types/bookmarks.js';
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,mCAAmC,CAAC;AAE7D,eAAO,MAAM,mBAAmB,OAAc,OAAO,CAAC,EAAE,0CAOvD,CAAC"}
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,22 @@
1
- import { BookmarksModule } from '@unchainedshop/types/bookmarks.js';
2
- import { ModuleInput } from '@unchainedshop/types/core.js';
1
+ import { mongodb } from '@unchainedshop/mongodb';
2
+ import type { TimestampFields, ModuleInput } from '@unchainedshop/mongodb';
3
+ export type Bookmark = {
4
+ _id?: string;
5
+ userId: string;
6
+ productId: string;
7
+ meta?: any;
8
+ } & TimestampFields;
9
+ export interface BookmarksModule {
10
+ create: (doc: Bookmark) => Promise<string | null>;
11
+ update: (_id: string, doc: mongodb.UpdateFilter<Bookmark> | Bookmark) => Promise<string>;
12
+ delete: (_id: string) => Promise<number>;
13
+ findBookmarksByUserId: (userId: string) => Promise<Array<Bookmark>>;
14
+ findBookmarkById: (bookmarkId: string) => Promise<Bookmark>;
15
+ findBookmarks: (query: mongodb.Filter<Bookmark>) => Promise<Array<Bookmark>>;
16
+ replaceUserId: (fromUserId: string, toUserId: string, bookmarkIds?: Array<string>) => Promise<number>;
17
+ deleteByUserId: (toUserId: string) => Promise<number>;
18
+ deleteByProductId: (productId: string) => Promise<number>;
19
+ deleteByUserIdAndMeta: (meta: any) => Promise<number>;
20
+ }
3
21
  export declare const configureBookmarksModule: ({ db, }: ModuleInput<Record<string, never>>) => Promise<BookmarksModule>;
4
22
  //# sourceMappingURL=configureBookmarksModule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"configureBookmarksModule.d.ts","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"AACA,OAAO,EAAY,eAAe,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,WAAW,EAAmB,MAAM,8BAA8B,CAAC;AAO5E,eAAO,MAAM,wBAAwB,YAElC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,KAAG,OAAO,CAAC,eAAe,CAmE9D,CAAC"}
1
+ {"version":3,"file":"configureBookmarksModule.d.ts","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"AACA,OAAO,EAA4C,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAE3F,OAAO,KAAK,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAI3E,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, generateDbMutations } from '@unchainedshop/mongodb';
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 mutations.create(doc);
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 (_id, doc) => {
59
- const bookmarkId = await mutations.update(_id, doc);
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 mutations.delete(bookmarkId);
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":"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"}
1
+ {"version":3,"file":"configureBookmarksModule.js","sourceRoot":"","sources":["../../src/module/configureBookmarksModule.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,7 @@
1
- import { BookmarkServices } from '@unchainedshop/types/bookmarks.js';
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,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AAGrE,eAAO,MAAM,gBAAgB,EAAE,gBAE9B,CAAC"}
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":"AACA,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD,gBAAgB,EAAE,uBAAuB;CAC1C,CAAC"}
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,13 @@
1
- import { MigrateBookmarksService } from '@unchainedshop/types/bookmarks.js';
1
+ import { BookmarksModule } from '../bookmarks-index.js';
2
+ export type MigrateBookmarksService = (params: {
3
+ fromUserId: string;
4
+ toUserId: string;
5
+ shouldMerge: boolean;
6
+ countryContext: string;
7
+ }, unchainedAPI: {
8
+ modules: {
9
+ bookmarks: BookmarksModule;
10
+ };
11
+ }) => Promise<void>;
2
12
  export declare const migrateBookmarksService: MigrateBookmarksService;
3
13
  //# 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,mCAAmC,CAAC;AAM5E,eAAO,MAAM,uBAAuB,EAAE,uBAuBrC,CAAC"}
1
+ {"version":3,"file":"migrateBookmarksService.d.ts","sourceRoot":"","sources":["../../src/service/migrateBookmarksService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAExD,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;IAAE,OAAO,EAAE;QAAE,SAAS,EAAE,eAAe,CAAA;KAAE,CAAA;CAAE,KACtD,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":"AAEA,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"}
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.0.0-alpha2",
3
+ "version": "3.0.0-alpha4",
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": "^3.0.0-alpha2",
35
- "@unchainedshop/utils": "^3.0.0-alpha2",
36
- "simpl-schema": "^3.4.6"
34
+ "@unchainedshop/events": "^3.0.0-alpha4",
35
+ "@unchainedshop/utils": "^3.0.0-alpha4"
37
36
  },
38
37
  "devDependencies": {
39
- "@types/node": "^20.14.12",
40
- "@unchainedshop/types": "^3.0.0-alpha2",
38
+ "@types/node": "^22.7.8",
41
39
  "jest": "^29.7.0",
42
- "ts-jest": "^29.2.3",
43
- "typescript": "^5.5.4"
40
+ "ts-jest": "^29.2.5",
41
+ "typescript": "^5.6.3"
44
42
  }
45
43
  }
@@ -1,2 +1,2 @@
1
- export { configureBookmarksModule } from './module/configureBookmarksModule.js';
2
- export { bookmarkServices } from './service/bookmarkServices.js';
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 '@unchainedshop/types/bookmarks.js';
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,34 @@
1
1
  import { emit, registerEvents } from '@unchainedshop/events';
2
- import { Bookmark, BookmarksModule } from '@unchainedshop/types/bookmarks.js';
3
- import { ModuleInput, ModuleMutations } from '@unchainedshop/types/core.js';
4
- import { generateDbFilterById, generateDbMutations, mongodb } from '@unchainedshop/mongodb';
2
+ import { generateDbFilterById, generateDbObjectId, mongodb } from '@unchainedshop/mongodb';
5
3
  import { BookmarksCollection } from '../db/BookmarksCollection.js';
6
- import { BookmarkSchema } from '../db/BookmarksSchema.js';
4
+ import type { TimestampFields, ModuleInput } from '@unchainedshop/mongodb';
7
5
 
8
6
  const BOOKMARK_EVENTS: string[] = ['BOOKMARK_CREATE', 'BOOKMARK_UPDATE', 'BOOKMARK_REMOVE'];
9
7
 
8
+ export type Bookmark = {
9
+ _id?: string;
10
+ userId: string;
11
+ productId: string;
12
+ meta?: any;
13
+ } & TimestampFields;
14
+
15
+ /*
16
+ * Module
17
+ */
18
+
19
+ export interface BookmarksModule {
20
+ create: (doc: Bookmark) => Promise<string | null>;
21
+ update: (_id: string, doc: mongodb.UpdateFilter<Bookmark> | Bookmark) => Promise<string>;
22
+ delete: (_id: string) => Promise<number>;
23
+ findBookmarksByUserId: (userId: string) => Promise<Array<Bookmark>>;
24
+ findBookmarkById: (bookmarkId: string) => Promise<Bookmark>;
25
+ findBookmarks: (query: mongodb.Filter<Bookmark>) => Promise<Array<Bookmark>>;
26
+ replaceUserId: (fromUserId: string, toUserId: string, bookmarkIds?: Array<string>) => Promise<number>;
27
+ deleteByUserId: (toUserId: string) => Promise<number>;
28
+ deleteByProductId: (productId: string) => Promise<number>;
29
+ deleteByUserIdAndMeta: (meta: any) => Promise<number>;
30
+ }
31
+
10
32
  export const configureBookmarksModule = async ({
11
33
  db,
12
34
  }: ModuleInput<Record<string, never>>): Promise<BookmarksModule> => {
@@ -14,13 +36,8 @@ export const configureBookmarksModule = async ({
14
36
 
15
37
  const Bookmarks = await BookmarksCollection(db);
16
38
 
17
- const mutations = generateDbMutations<Bookmark>(Bookmarks, BookmarkSchema, {
18
- permanentlyDeleteByDefault: true,
19
- }) as ModuleMutations<Bookmark>;
20
-
21
39
  return {
22
40
  // Queries
23
- ...mutations,
24
41
  findBookmarksByUserId: async (userId) => Bookmarks.find({ userId }).toArray(),
25
42
  findBookmarkById: async (bookmarkId) => {
26
43
  const filter = generateDbFilterById(bookmarkId);
@@ -60,18 +77,30 @@ export const configureBookmarksModule = async ({
60
77
  await Promise.all(bookmarks.map(async (b) => emit('BOOKMARK_REMOVE', { bookmarkId: b._id })));
61
78
  return result.deletedCount;
62
79
  },
63
- create: async (doc: Bookmark) => {
64
- const bookmarkId = await mutations.create(doc);
80
+ create: async (doc) => {
81
+ const { insertedId: bookmarkId } = await Bookmarks.insertOne({
82
+ _id: generateDbObjectId(),
83
+ created: new Date(),
84
+ ...doc,
85
+ });
65
86
  await emit('BOOKMARK_CREATE', { bookmarkId });
66
87
  return bookmarkId;
67
88
  },
68
- update: async (_id: string, doc: Bookmark) => {
69
- const bookmarkId = await mutations.update(_id, doc);
89
+ update: async (bookmarkId, doc) => {
90
+ await Bookmarks.updateOne(
91
+ { _id: bookmarkId },
92
+ {
93
+ $set: {
94
+ updated: new Date(),
95
+ ...doc,
96
+ },
97
+ },
98
+ );
70
99
  await emit('BOOKMARK_UPDATE', { bookmarkId });
71
100
  return bookmarkId;
72
101
  },
73
102
  delete: async (bookmarkId) => {
74
- const deletedCount = await mutations.delete(bookmarkId);
103
+ const { deletedCount } = await Bookmarks.deleteOne({ _id: bookmarkId });
75
104
  await emit('BOOKMARK_REMOVE', { bookmarkId });
76
105
  return deletedCount;
77
106
  },
@@ -1,6 +1,11 @@
1
- import { BookmarkServices } from '@unchainedshop/types/bookmarks.js';
2
- import { migrateBookmarksService } from './migrateBookmarksService.js';
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 { MigrateBookmarksService } from '@unchainedshop/types/bookmarks.js';
1
+ import { BookmarksModule } from '../bookmarks-index.js';
2
+
3
+ export type MigrateBookmarksService = (
4
+ params: {
5
+ fromUserId: string;
6
+ toUserId: string;
7
+ shouldMerge: boolean;
8
+ countryContext: string;
9
+ },
10
+ unchainedAPI: { modules: { bookmarks: BookmarksModule } },
11
+ ) => Promise<void>;
2
12
 
3
13
  const hashBookmark = (bookmark) => {
4
14
  return `${bookmark.productId}:${bookmark.userId}:${JSON.stringify(bookmark.meta || {})}`;
@@ -1,7 +1,5 @@
1
1
  describe('Bookmark', () => {
2
-
3
- it('Check Bookmarks module', async () => {
4
- expect(true).toBeTruthy()
2
+ it('Check Bookmarks module', () => {
3
+ expect(true).toBeTruthy();
5
4
  });
6
-
7
5
  });
@@ -1,3 +0,0 @@
1
- import SimpleSchema from 'simpl-schema';
2
- export declare const BookmarkSchema: SimpleSchema;
3
- //# sourceMappingURL=BookmarksSchema.d.ts.map
@@ -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
- );