@aneuhold/be-ts-db-lib 1.0.32 → 1.0.33

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/index.d.ts CHANGED
@@ -1,8 +1,10 @@
1
1
  import ApiKeyRepository from './repositories/common/ApiKeyRepository';
2
2
  import UserRepository from './repositories/common/UserRepository';
3
+ import DashboardNonogramKatanaItemRepository from './repositories/dashboard/DashboardNonogramKatanaItemRepository';
4
+ import DashboardNonogramKatanaUpgradeRepository from './repositories/dashboard/DashboardNonogramKatanaUpgradeRepository';
3
5
  import DashboardTaskRepository from './repositories/dashboard/DashboardTaskRepository';
4
6
  import DashboardUserConfigRepository from './repositories/dashboard/DashboardUserConfigRepository';
5
7
  import DocumentDb from './util/DocumentDb';
6
- export { UserRepository, ApiKeyRepository, DashboardTaskRepository, DashboardUserConfigRepository, DocumentDb };
8
+ export { UserRepository, ApiKeyRepository, DashboardTaskRepository, DashboardUserConfigRepository, DashboardNonogramKatanaItemRepository, DashboardNonogramKatanaUpgradeRepository, DocumentDb };
7
9
  export type {};
8
10
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,cAAc,MAAM,sCAAsC,CAAC;AAClE,OAAO,uBAAuB,MAAM,kDAAkD,CAAC;AACvF,OAAO,6BAA6B,MAAM,wDAAwD,CAAC;AACnG,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,UAAU,EACX,CAAC;AAGF,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,wCAAwC,CAAC;AACtE,OAAO,cAAc,MAAM,sCAAsC,CAAC;AAClE,OAAO,qCAAqC,MAAM,gEAAgE,CAAC;AACnH,OAAO,wCAAwC,MAAM,mEAAmE,CAAC;AACzH,OAAO,uBAAuB,MAAM,kDAAkD,CAAC;AACvF,OAAO,6BAA6B,MAAM,wDAAwD,CAAC;AACnG,OAAO,UAAU,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EACL,cAAc,EACd,gBAAgB,EAChB,uBAAuB,EACvB,6BAA6B,EAC7B,qCAAqC,EACrC,wCAAwC,EACxC,UAAU,EACX,CAAC;AAGF,YAAY,EAAE,CAAC"}
package/lib/index.js CHANGED
@@ -3,11 +3,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DocumentDb = exports.DashboardUserConfigRepository = exports.DashboardTaskRepository = exports.ApiKeyRepository = exports.UserRepository = void 0;
6
+ exports.DocumentDb = exports.DashboardNonogramKatanaUpgradeRepository = exports.DashboardNonogramKatanaItemRepository = exports.DashboardUserConfigRepository = exports.DashboardTaskRepository = exports.ApiKeyRepository = exports.UserRepository = void 0;
7
7
  const ApiKeyRepository_1 = __importDefault(require("./repositories/common/ApiKeyRepository"));
8
8
  exports.ApiKeyRepository = ApiKeyRepository_1.default;
9
9
  const UserRepository_1 = __importDefault(require("./repositories/common/UserRepository"));
10
10
  exports.UserRepository = UserRepository_1.default;
11
+ const DashboardNonogramKatanaItemRepository_1 = __importDefault(require("./repositories/dashboard/DashboardNonogramKatanaItemRepository"));
12
+ exports.DashboardNonogramKatanaItemRepository = DashboardNonogramKatanaItemRepository_1.default;
13
+ const DashboardNonogramKatanaUpgradeRepository_1 = __importDefault(require("./repositories/dashboard/DashboardNonogramKatanaUpgradeRepository"));
14
+ exports.DashboardNonogramKatanaUpgradeRepository = DashboardNonogramKatanaUpgradeRepository_1.default;
11
15
  const DashboardTaskRepository_1 = __importDefault(require("./repositories/dashboard/DashboardTaskRepository"));
12
16
  exports.DashboardTaskRepository = DashboardTaskRepository_1.default;
13
17
  const DashboardUserConfigRepository_1 = __importDefault(require("./repositories/dashboard/DashboardUserConfigRepository"));
@@ -1 +1 @@
1
- {"version":3,"file":"UserRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/common/UserRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAM/C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,cAAc,CAAC,IAAI,CAAC;IAC9D,OAAO,CAAC,MAAM,CAAC,eAAe,CAAW;IAEzC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAiB;IAEjD,OAAO;IAIP,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAQlC;;OAEG;IACH,MAAM,CAAC,OAAO;IAOR,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW/D,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAOhE"}
1
+ {"version":3,"file":"UserRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/common/UserRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,cAAc,MAAM,mBAAmB,CAAC;AAQ/C;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,cAAe,SAAQ,cAAc,CAAC,IAAI,CAAC;IAC9D,OAAO,CAAC,MAAM,CAAC,eAAe,CAAW;IAEzC,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAiB;IAEjD,OAAO;IAIP,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAclC;;OAEG;IACH,MAAM,CAAC,OAAO;IAOR,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;IAW/D,gBAAgB,CAAC,OAAO,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAOhE"}
@@ -8,6 +8,8 @@ const UserValidator_1 = __importDefault(require("../../validators/common/UserVal
8
8
  const ApiKeyRepository_1 = __importDefault(require("./ApiKeyRepository"));
9
9
  const DashboardUserConfigRepository_1 = __importDefault(require("../dashboard/DashboardUserConfigRepository"));
10
10
  const DashboardTaskRepository_1 = __importDefault(require("../dashboard/DashboardTaskRepository"));
11
+ const DashboardNonogramKatanaItemRepository_1 = __importDefault(require("../dashboard/DashboardNonogramKatanaItemRepository"));
12
+ const DashboardNonogramKatanaUpgradeRepository_1 = __importDefault(require("../dashboard/DashboardNonogramKatanaUpgradeRepository"));
11
13
  /**
12
14
  * The repository that contains {@link User} documents.
13
15
  */
@@ -21,6 +23,8 @@ class UserRepository extends BaseRepository_1.default {
21
23
  this.subscribeToChanges(ApiKeyRepository_1.default.getListenersForUserRepo());
22
24
  this.subscribeToChanges(DashboardUserConfigRepository_1.default.getListenersForUserRepo());
23
25
  this.subscribeToChanges(DashboardTaskRepository_1.default.getListenersForUserRepo());
26
+ this.subscribeToChanges(DashboardNonogramKatanaItemRepository_1.default.getListenersForUserRepo());
27
+ this.subscribeToChanges(DashboardNonogramKatanaUpgradeRepository_1.default.getListenersForUserRepo());
24
28
  }
25
29
  /**
26
30
  * Gets the singleton instance of the {@link UserRepository}.
@@ -0,0 +1,24 @@
1
+ import { NonogramKatanaItem, User } from '@aneuhold/core-ts-db-lib';
2
+ import { ObjectId } from 'bson';
3
+ import DashboardBaseRepository from './DashboardBaseRepository';
4
+ import { RepoListeners } from '../../services/RepoSubscriptionService';
5
+ /**
6
+ * The repository that contains {@link NonogramKatanaItem} documents.
7
+ */
8
+ export default class DashboardNonogramKatanaItemRepository extends DashboardBaseRepository<NonogramKatanaItem> {
9
+ private static singletonInstance;
10
+ private constructor();
11
+ static getListenersForUserRepo(): RepoListeners<User>;
12
+ protected setupSubscribers(): void;
13
+ /**
14
+ * Gets the singleton instance of the {@link DashboardNonogramKatanaItemRepository}.
15
+ */
16
+ static getRepo(): DashboardNonogramKatanaItemRepository;
17
+ /**
18
+ * Gets all Nonogram Katana items for a given user.
19
+ *
20
+ * @param userId The ID of the user to get items for.
21
+ */
22
+ getAllForUser(userId: ObjectId): Promise<NonogramKatanaItem[]>;
23
+ }
24
+ //# sourceMappingURL=DashboardNonogramKatanaItemRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardNonogramKatanaItemRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/dashboard/DashboardNonogramKatanaItemRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAGvE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,qCAAsC,SAAQ,uBAAuB,CAAC,kBAAkB,CAAC;IAC5G,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAAwC;IAExE,OAAO;IAQP,MAAM,CAAC,uBAAuB,IAAI,aAAa,CAAC,IAAI,CAAC;IAgBrD,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAElC;;OAEG;WACW,OAAO;IAQrB;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC;CAQrE"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_ts_db_lib_1 = require("@aneuhold/core-ts-db-lib");
7
+ const DashboardBaseRepository_1 = __importDefault(require("./DashboardBaseRepository"));
8
+ const DocumentCleaner_1 = __importDefault(require("../../util/DocumentCleaner"));
9
+ const NonogramKatanaItemValidator_1 = __importDefault(require("../../validators/dashboard/NonogramKatanaItemValidator"));
10
+ /**
11
+ * The repository that contains {@link NonogramKatanaItem} documents.
12
+ */
13
+ class DashboardNonogramKatanaItemRepository extends DashboardBaseRepository_1.default {
14
+ static singletonInstance;
15
+ constructor() {
16
+ super(core_ts_db_lib_1.NonogramKatanaItem.docType, new NonogramKatanaItemValidator_1.default(), DocumentCleaner_1.default.userId);
17
+ }
18
+ static getListenersForUserRepo() {
19
+ const nonogramKatanaRepo = DashboardNonogramKatanaItemRepository.getRepo();
20
+ return {
21
+ deleteOne: async (userId) => {
22
+ await (await nonogramKatanaRepo.getCollection()).deleteMany({ userId });
23
+ },
24
+ deleteList: async (userIds) => {
25
+ await (await nonogramKatanaRepo.getCollection()).deleteMany({
26
+ userId: { $in: userIds }
27
+ });
28
+ }
29
+ };
30
+ }
31
+ setupSubscribers() { }
32
+ /**
33
+ * Gets the singleton instance of the {@link DashboardNonogramKatanaItemRepository}.
34
+ */
35
+ static getRepo() {
36
+ if (!DashboardNonogramKatanaItemRepository.singletonInstance) {
37
+ DashboardNonogramKatanaItemRepository.singletonInstance =
38
+ new DashboardNonogramKatanaItemRepository();
39
+ }
40
+ return DashboardNonogramKatanaItemRepository.singletonInstance;
41
+ }
42
+ /**
43
+ * Gets all Nonogram Katana items for a given user.
44
+ *
45
+ * @param userId The ID of the user to get items for.
46
+ */
47
+ async getAllForUser(userId) {
48
+ const collection = await this.getCollection();
49
+ const filter = {
50
+ $and: [this.getFilterWithDefault(), { userId }]
51
+ };
52
+ const result = await collection.find(filter).toArray();
53
+ return result;
54
+ }
55
+ }
56
+ exports.default = DashboardNonogramKatanaItemRepository;
@@ -0,0 +1,24 @@
1
+ import { NonogramKatanaUpgrade, User } from '@aneuhold/core-ts-db-lib';
2
+ import { ObjectId } from 'bson';
3
+ import DashboardBaseRepository from './DashboardBaseRepository';
4
+ import { RepoListeners } from '../../services/RepoSubscriptionService';
5
+ /**
6
+ * The repository that contains {@link NonogramKatanaUpgrade} documents.
7
+ */
8
+ export default class DashboardNonogramKatanaUpgradeRepository extends DashboardBaseRepository<NonogramKatanaUpgrade> {
9
+ private static singletonInstance;
10
+ private constructor();
11
+ static getListenersForUserRepo(): RepoListeners<User>;
12
+ protected setupSubscribers(): void;
13
+ /**
14
+ * Gets the singleton instance of the {@link DashboardNonogramKatanaUpgradeRepository}.
15
+ */
16
+ static getRepo(): DashboardNonogramKatanaUpgradeRepository;
17
+ /**
18
+ * Gets all Nonogram Katana upgrades for a given user.
19
+ *
20
+ * @param userId The ID of the user to get upgrades for.
21
+ */
22
+ getAllForUser(userId: ObjectId): Promise<NonogramKatanaUpgrade[]>;
23
+ }
24
+ //# sourceMappingURL=DashboardNonogramKatanaUpgradeRepository.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardNonogramKatanaUpgradeRepository.d.ts","sourceRoot":"","sources":["../../../src/repositories/dashboard/DashboardNonogramKatanaUpgradeRepository.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,qBAAqB,EACrB,IAAI,EACL,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,uBAAuB,MAAM,2BAA2B,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,wCAAwC,CAAC;AAGvE;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,wCAAyC,SAAQ,uBAAuB,CAAC,qBAAqB,CAAC;IAClH,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA2C;IAE3E,OAAO;IAQP,MAAM,CAAC,uBAAuB,IAAI,aAAa,CAAC,IAAI,CAAC;IAgBrD,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAElC;;OAEG;WACW,OAAO;IAQrB;;;;OAIG;IACG,aAAa,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;CAQxE"}
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_ts_db_lib_1 = require("@aneuhold/core-ts-db-lib");
7
+ const DashboardBaseRepository_1 = __importDefault(require("./DashboardBaseRepository"));
8
+ const DocumentCleaner_1 = __importDefault(require("../../util/DocumentCleaner"));
9
+ const NonogramKatanaUpgradeValidator_1 = __importDefault(require("../../validators/dashboard/NonogramKatanaUpgradeValidator"));
10
+ /**
11
+ * The repository that contains {@link NonogramKatanaUpgrade} documents.
12
+ */
13
+ class DashboardNonogramKatanaUpgradeRepository extends DashboardBaseRepository_1.default {
14
+ static singletonInstance;
15
+ constructor() {
16
+ super(core_ts_db_lib_1.NonogramKatanaItem.docType, new NonogramKatanaUpgradeValidator_1.default(), DocumentCleaner_1.default.userId);
17
+ }
18
+ static getListenersForUserRepo() {
19
+ const upgradeRepo = DashboardNonogramKatanaUpgradeRepository.getRepo();
20
+ return {
21
+ deleteOne: async (userId) => {
22
+ await (await upgradeRepo.getCollection()).deleteMany({ userId });
23
+ },
24
+ deleteList: async (userIds) => {
25
+ await (await upgradeRepo.getCollection()).deleteMany({
26
+ userId: { $in: userIds }
27
+ });
28
+ }
29
+ };
30
+ }
31
+ setupSubscribers() { }
32
+ /**
33
+ * Gets the singleton instance of the {@link DashboardNonogramKatanaUpgradeRepository}.
34
+ */
35
+ static getRepo() {
36
+ if (!DashboardNonogramKatanaUpgradeRepository.singletonInstance) {
37
+ DashboardNonogramKatanaUpgradeRepository.singletonInstance =
38
+ new DashboardNonogramKatanaUpgradeRepository();
39
+ }
40
+ return DashboardNonogramKatanaUpgradeRepository.singletonInstance;
41
+ }
42
+ /**
43
+ * Gets all Nonogram Katana upgrades for a given user.
44
+ *
45
+ * @param userId The ID of the user to get upgrades for.
46
+ */
47
+ async getAllForUser(userId) {
48
+ const collection = await this.getCollection();
49
+ const filter = {
50
+ $and: [this.getFilterWithDefault(), { userId }]
51
+ };
52
+ const result = await collection.find(filter).toArray();
53
+ return result;
54
+ }
55
+ }
56
+ exports.default = DashboardNonogramKatanaUpgradeRepository;
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NonogramKatanaItemRepository.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NonogramKatanaItemRepository.spec.d.ts","sourceRoot":"","sources":["../../../../src/tests/repositories/dashboard/NonogramKatanaItemRepository.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_ts_db_lib_1 = require("@aneuhold/core-ts-db-lib");
7
+ const crypto_1 = __importDefault(require("crypto"));
8
+ const UserRepository_1 = __importDefault(require("../../../repositories/common/UserRepository"));
9
+ const DashboardNonogramKatanaItemRepository_1 = __importDefault(require("../../../repositories/dashboard/DashboardNonogramKatanaItemRepository"));
10
+ const testsUtil_1 = require("../../testsUtil");
11
+ const userRepo = UserRepository_1.default.getRepo();
12
+ const itemRepo = DashboardNonogramKatanaItemRepository_1.default.getRepo();
13
+ describe('Create operations', () => {
14
+ it('can create a new nonogram katana item', async () => {
15
+ const newUser = await createNewTestUser();
16
+ const newItem = new core_ts_db_lib_1.NonogramKatanaItem(newUser._id, core_ts_db_lib_1.NonogramKatanaItemName.Anchor);
17
+ const insertResult = await itemRepo.insertNew(newItem);
18
+ expect(insertResult).toBeTruthy();
19
+ const newItemFromDb = await itemRepo.get({ _id: newItem._id });
20
+ expect(newItemFromDb).toBeTruthy();
21
+ await (0, testsUtil_1.cleanupDoc)(userRepo, newUser);
22
+ });
23
+ });
24
+ async function createNewTestUser() {
25
+ const newUser = new core_ts_db_lib_1.User((0, testsUtil_1.getTestUserName)(`${crypto_1.default.randomUUID()}nonogramKatanaItemTest`));
26
+ newUser.projectAccess.dashboard = true;
27
+ const insertResult = await userRepo.insertNew(newUser);
28
+ expect(insertResult).toBeTruthy();
29
+ return newUser;
30
+ }
@@ -0,0 +1,8 @@
1
+ import { NonogramKatanaItem } from '@aneuhold/core-ts-db-lib';
2
+ import IValidator from '../BaseValidator';
3
+ export default class DashboardNonogramKatanaItemValidator extends IValidator<NonogramKatanaItem> {
4
+ validateNewObject(newItem: NonogramKatanaItem): Promise<void>;
5
+ validateUpdateObject(updatedItem: Partial<NonogramKatanaItem>): Promise<void>;
6
+ validateRepositoryInDb(dryRun: boolean): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=NonogramKatanaItemValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NonogramKatanaItemValidator.d.ts","sourceRoot":"","sources":["../../../src/validators/dashboard/NonogramKatanaItemValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAEnB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAI1C,MAAM,CAAC,OAAO,OAAO,oCAAqC,SAAQ,UAAU,CAAC,kBAAkB,CAAC;IACxF,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAoB7D,oBAAoB,CACxB,WAAW,EAAE,OAAO,CAAC,kBAAkB,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAUV,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA8B7D"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_ts_db_lib_1 = require("@aneuhold/core-ts-db-lib");
7
+ const core_ts_lib_1 = require("@aneuhold/core-ts-lib");
8
+ const BaseValidator_1 = __importDefault(require("../BaseValidator"));
9
+ const UserRepository_1 = __importDefault(require("../../repositories/common/UserRepository"));
10
+ const DashboardNonogramKatanaItemRepository_1 = __importDefault(require("../../repositories/dashboard/DashboardNonogramKatanaItemRepository"));
11
+ class DashboardNonogramKatanaItemValidator extends BaseValidator_1.default {
12
+ async validateNewObject(newItem) {
13
+ // Check if the item already exists for the user
14
+ const itemRepo = DashboardNonogramKatanaItemRepository_1.default.getRepo();
15
+ const existingItem = await itemRepo.get({
16
+ userId: newItem.userId,
17
+ itemName: newItem.itemName
18
+ });
19
+ if (existingItem) {
20
+ core_ts_lib_1.ErrorUtils.throwError(`Nonogram Katana item already exists for user: ${newItem.userId}`, newItem);
21
+ }
22
+ const userRepo = UserRepository_1.default.getRepo();
23
+ const user = await userRepo.get({ _id: newItem.userId });
24
+ if (!user) {
25
+ core_ts_lib_1.ErrorUtils.throwError(`User does not exist: ${newItem.userId}`, newItem);
26
+ }
27
+ }
28
+ async validateUpdateObject(updatedItem) {
29
+ // Check if an id is defined
30
+ if (!updatedItem._id) {
31
+ core_ts_lib_1.ErrorUtils.throwError(`No _id defined for NonogramKatanaItem update.`, updatedItem);
32
+ }
33
+ }
34
+ async validateRepositoryInDb(dryRun) {
35
+ const itemRepo = DashboardNonogramKatanaItemRepository_1.default.getRepo();
36
+ const allItems = await itemRepo.getAll();
37
+ const allUserIds = await UserRepository_1.default.getRepo().getAllIdsAsHash();
38
+ await this.runStandardValidationForRepository({
39
+ dryRun,
40
+ docName: 'Nonogram Katana Item',
41
+ allDocs: allItems,
42
+ shouldDelete: (item) => {
43
+ if (!allUserIds[item.userId.toString()]) {
44
+ core_ts_lib_1.Logger.error(`Nonogram Katana Item with ID: ${item._id} has no valid associated user.`);
45
+ return true;
46
+ }
47
+ return false;
48
+ },
49
+ documentValidator: (item) => {
50
+ const { updatedDoc, errors } = (0, core_ts_db_lib_1.validateNonogramKatanaItem)(item);
51
+ return { updatedDoc, errors };
52
+ },
53
+ deletionFunction: async (docIdsToDelete) => {
54
+ await itemRepo.deleteList(docIdsToDelete);
55
+ },
56
+ updateFunction: async (docsToUpdate) => {
57
+ await itemRepo.updateMany(docsToUpdate);
58
+ }
59
+ });
60
+ }
61
+ }
62
+ exports.default = DashboardNonogramKatanaItemValidator;
@@ -0,0 +1,8 @@
1
+ import { NonogramKatanaUpgrade } from '@aneuhold/core-ts-db-lib';
2
+ import IValidator from '../BaseValidator';
3
+ export default class DashboardNonogramKatanaUpgradeValidator extends IValidator<NonogramKatanaUpgrade> {
4
+ validateNewObject(newUpgrade: NonogramKatanaUpgrade): Promise<void>;
5
+ validateUpdateObject(updatedUpgrade: Partial<NonogramKatanaUpgrade>): Promise<void>;
6
+ validateRepositoryInDb(dryRun: boolean): Promise<void>;
7
+ }
8
+ //# sourceMappingURL=NonogramKatanaUpgradeValidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NonogramKatanaUpgradeValidator.d.ts","sourceRoot":"","sources":["../../../src/validators/dashboard/NonogramKatanaUpgradeValidator.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,EAEtB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,UAAU,MAAM,kBAAkB,CAAC;AAI1C,MAAM,CAAC,OAAO,OAAO,uCAAwC,SAAQ,UAAU,CAAC,qBAAqB,CAAC;IAC9F,iBAAiB,CAAC,UAAU,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC;IAuBnE,oBAAoB,CACxB,cAAc,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC;IAUV,sBAAsB,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;CA8B7D"}
@@ -0,0 +1,62 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const core_ts_db_lib_1 = require("@aneuhold/core-ts-db-lib");
7
+ const core_ts_lib_1 = require("@aneuhold/core-ts-lib");
8
+ const BaseValidator_1 = __importDefault(require("../BaseValidator"));
9
+ const UserRepository_1 = __importDefault(require("../../repositories/common/UserRepository"));
10
+ const DashboardNonogramKatanaUpgradeRepository_1 = __importDefault(require("../../repositories/dashboard/DashboardNonogramKatanaUpgradeRepository"));
11
+ class DashboardNonogramKatanaUpgradeValidator extends BaseValidator_1.default {
12
+ async validateNewObject(newUpgrade) {
13
+ // Check if the item already exists for the user
14
+ const upgradeRepo = DashboardNonogramKatanaUpgradeRepository_1.default.getRepo();
15
+ const existingItem = await upgradeRepo.get({
16
+ userId: newUpgrade.userId,
17
+ upgradeName: newUpgrade.upgradeName
18
+ });
19
+ if (existingItem) {
20
+ core_ts_lib_1.ErrorUtils.throwError(`Nonogram Katana upgrade already exists for user: ${newUpgrade.userId}`, newUpgrade);
21
+ }
22
+ const userRepo = UserRepository_1.default.getRepo();
23
+ const user = await userRepo.get({ _id: newUpgrade.userId });
24
+ if (!user) {
25
+ core_ts_lib_1.ErrorUtils.throwError(`User does not exist: ${newUpgrade.userId}`, newUpgrade);
26
+ }
27
+ }
28
+ async validateUpdateObject(updatedUpgrade) {
29
+ // Check if an id is defined
30
+ if (!updatedUpgrade._id) {
31
+ core_ts_lib_1.ErrorUtils.throwError(`No _id defined for NonogramKatanaUpgrade update.`, updatedUpgrade);
32
+ }
33
+ }
34
+ async validateRepositoryInDb(dryRun) {
35
+ const upgradeRepo = DashboardNonogramKatanaUpgradeRepository_1.default.getRepo();
36
+ const allUpgrades = await upgradeRepo.getAll();
37
+ const allUserIds = await UserRepository_1.default.getRepo().getAllIdsAsHash();
38
+ await this.runStandardValidationForRepository({
39
+ dryRun,
40
+ docName: 'Nonogram Katana Upgrade',
41
+ allDocs: allUpgrades,
42
+ shouldDelete: (upgrade) => {
43
+ if (!allUserIds[upgrade.userId.toString()]) {
44
+ core_ts_lib_1.Logger.error(`Nonogram Katana Upgrade with ID: ${upgrade._id} has no valid associated user.`);
45
+ return true;
46
+ }
47
+ return false;
48
+ },
49
+ documentValidator: (upgrade) => {
50
+ const { updatedDoc, errors } = (0, core_ts_db_lib_1.validateNonogramKatanaUpgrade)(upgrade);
51
+ return { updatedDoc, errors };
52
+ },
53
+ deletionFunction: async (docIdsToDelete) => {
54
+ await upgradeRepo.deleteList(docIdsToDelete);
55
+ },
56
+ updateFunction: async (docsToUpdate) => {
57
+ await upgradeRepo.updateMany(docsToUpdate);
58
+ }
59
+ });
60
+ }
61
+ }
62
+ exports.default = DashboardNonogramKatanaUpgradeValidator;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@aneuhold/be-ts-db-lib",
3
- "version": "1.0.32",
3
+ "version": "1.0.33",
4
4
  "description": "A backend database library meant to actually interact with various databases in personal projects",
5
5
  "author": "Anton G Neuhold Jr <agneuhold@gmail.com>",
6
6
  "license": "MIT",
@@ -41,7 +41,7 @@
41
41
  },
42
42
  "dependencies": {
43
43
  "@aneuhold/be-ts-lib": "^1.0.6",
44
- "@aneuhold/core-ts-db-lib": "^1.0.47",
44
+ "@aneuhold/core-ts-db-lib": "^1.0.48",
45
45
  "@aneuhold/core-ts-lib": "^1.1.11",
46
46
  "bson": "^6.2.0",
47
47
  "mongodb": "^6.3.0"