@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.
@@ -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,23 @@
1
- import { BookmarksModule } from '@unchainedshop/types/bookmarks.js';
2
- import { ModuleInput } from '@unchainedshop/types/core.js';
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,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,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, 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,9 @@
1
- import { MigrateBookmarksService } from '@unchainedshop/types/bookmarks.js';
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,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,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":"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": "2.14.2",
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": "^2.14.2",
35
- "@unchainedshop/utils": "^2.14.2",
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": "^20.16.5",
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.5.4"
41
+ "typescript": "^5.6.2"
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,35 @@
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 { ModuleInput } from '@unchainedshop/core';
3
+ import { generateDbFilterById, generateDbObjectId, mongodb } from '@unchainedshop/mongodb';
5
4
  import { BookmarksCollection } from '../db/BookmarksCollection.js';
6
- import { BookmarkSchema } from '../db/BookmarksSchema.js';
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: Bookmark) => {
64
- const bookmarkId = await mutations.create(doc);
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 (_id: string, doc: Bookmark) => {
69
- const bookmarkId = await mutations.update(_id, doc);
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 mutations.delete(bookmarkId);
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 { 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 { 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,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
- );