@chevre/domain 22.11.0-alpha.3 → 22.11.0-alpha.30

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.
Files changed (155) hide show
  1. package/example/src/chevre/aggregation/aggregateTasks.ts +41 -0
  2. package/example/src/chevre/assetTransaction/processReserve.ts +0 -1
  3. package/example/src/chevre/notifyAbortedTasksByEmail.ts +1 -1
  4. package/example/src/chevre/reIndex.ts +1 -1
  5. package/example/src/chevre/roles/addAdminPermissionIfNotExists.ts +132 -0
  6. package/example/src/chevre/roles/addDefaultPermissionIfNotExists.ts +37 -0
  7. package/example/src/chevre/roles/addEventOfferPermissionIfNotExists.ts +27 -0
  8. package/example/src/chevre/roles/addPermissionIfNotExists.ts +39 -6
  9. package/example/src/chevre/roles/addProjectCreatorRole.ts +48 -0
  10. package/example/src/chevre/roles/assignGlobalRoles.ts +72 -0
  11. package/example/src/chevre/roles/findPermissions.ts +84 -0
  12. package/example/src/chevre/roles/findRoleNames.ts +117 -0
  13. package/example/src/chevre/roles/removeConsolePermissionIfExists.ts +38 -0
  14. package/example/src/chevre/roles/removePermissionFromAPIRoles.ts +46 -0
  15. package/example/src/chevre/roles/removePermissionIfExists.ts +39 -0
  16. package/example/src/chevre/settings/addSettings.ts +31 -17
  17. package/example/src/chevre/stockHolder/checkRedisKeyCount.ts +11 -20
  18. package/example/src/chevre/task/countPotentiallyRunning.ts +41 -0
  19. package/example/src/chevre/task/countTasks.ts +51 -0
  20. package/example/src/chevre/unsetUnnecessaryFields.ts +8 -5
  21. package/example/src/idaas/auth0/adminApplications.ts +183 -0
  22. package/example/src/idaas/auth0/getToken.ts +55 -0
  23. package/example/src/idaas/auth0/getTokenByPrivateKeyJWT.ts +84 -0
  24. package/example/src/regex.ts +31 -0
  25. package/lib/chevre/eventEmitter/task.d.ts +29 -6
  26. package/lib/chevre/index.d.ts +0 -2
  27. package/lib/chevre/index.js +0 -10
  28. package/lib/chevre/repo/confirmationNumber.d.ts +0 -11
  29. package/lib/chevre/repo/confirmationNumber.js +15 -54
  30. package/lib/chevre/repo/identity.d.ts +11 -33
  31. package/lib/chevre/repo/identity.js +10 -15
  32. package/lib/chevre/repo/member.d.ts +22 -4
  33. package/lib/chevre/repo/member.js +81 -27
  34. package/lib/chevre/repo/mongoose/schemas/identity.d.ts +1 -1
  35. package/lib/chevre/repo/mongoose/schemas/member/global.d.ts +14 -0
  36. package/lib/chevre/repo/mongoose/schemas/member/global.js +82 -0
  37. package/lib/chevre/repo/mongoose/schemas/setting.d.ts +15 -0
  38. package/lib/chevre/repo/mongoose/schemas/setting.js +1 -0
  39. package/lib/chevre/repo/mongoose/schemas/task.js +9 -0
  40. package/lib/chevre/repo/orderNumber.d.ts +0 -11
  41. package/lib/chevre/repo/orderNumber.js +13 -51
  42. package/lib/chevre/repo/role.d.ts +16 -4
  43. package/lib/chevre/repo/role.js +71 -32
  44. package/lib/chevre/repo/serviceOutputIdentifier.d.ts +0 -4
  45. package/lib/chevre/repo/serviceOutputIdentifier.js +13 -38
  46. package/lib/chevre/repo/setting.d.ts +5 -10
  47. package/lib/chevre/repo/setting.js +4 -7
  48. package/lib/chevre/repo/stockHolder.js +0 -11
  49. package/lib/chevre/repo/task.d.ts +47 -34
  50. package/lib/chevre/repo/task.js +116 -292
  51. package/lib/chevre/repo/transaction.js +10 -10
  52. package/lib/chevre/repo/transactionNumber.d.ts +0 -11
  53. package/lib/chevre/repo/transactionNumber.js +13 -51
  54. package/lib/chevre/repo/transactionNumberCounter.d.ts +0 -10
  55. package/lib/chevre/repo/transactionNumberCounter.js +34 -29
  56. package/lib/chevre/service/assetTransaction/cancelReservation/start.d.ts +1 -1
  57. package/lib/chevre/service/code.d.ts +5 -28
  58. package/lib/chevre/service/code.js +3 -79
  59. package/lib/chevre/service/iam.d.ts +17 -7
  60. package/lib/chevre/service/iam.js +26 -6
  61. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.d.ts +15 -0
  62. package/lib/chevre/service/notification/notifyAbortedTasksByEmail.js +38 -0
  63. package/lib/chevre/service/notification.d.ts +2 -1
  64. package/lib/chevre/service/notification.js +3 -1
  65. package/lib/chevre/service/task/acceptCOAOffer.d.ts +1 -1
  66. package/lib/chevre/service/task/acceptCOAOffer.js +6 -5
  67. package/lib/chevre/service/task/aggregateOffers.d.ts +1 -1
  68. package/lib/chevre/service/task/aggregateOnSystem.d.ts +4 -2
  69. package/lib/chevre/service/task/aggregateScreeningEvent.d.ts +1 -1
  70. package/lib/chevre/service/task/authorizePayment.d.ts +1 -1
  71. package/lib/chevre/service/task/authorizePayment.js +7 -6
  72. package/lib/chevre/service/task/cancelMoneyTransfer.d.ts +1 -1
  73. package/lib/chevre/service/task/cancelPendingReservation.d.ts +1 -1
  74. package/lib/chevre/service/task/cancelReservation.d.ts +1 -1
  75. package/lib/chevre/service/task/checkMovieTicket.d.ts +1 -1
  76. package/lib/chevre/service/task/checkMovieTicket.js +4 -3
  77. package/lib/chevre/service/task/checkResource.d.ts +1 -1
  78. package/lib/chevre/service/task/confirmMoneyTransfer.d.ts +1 -1
  79. package/lib/chevre/service/task/confirmPayTransaction.d.ts +1 -1
  80. package/lib/chevre/service/task/confirmRegisterService.d.ts +1 -1
  81. package/lib/chevre/service/task/confirmRegisterServiceTransaction.d.ts +1 -1
  82. package/lib/chevre/service/task/confirmReserveTransaction.d.ts +1 -1
  83. package/lib/chevre/service/task/createAccountingReport.d.ts +1 -1
  84. package/lib/chevre/service/task/createEvent.d.ts +1 -1
  85. package/lib/chevre/service/task/deletePerson.d.ts +1 -1
  86. package/lib/chevre/service/task/deleteTransaction.d.ts +1 -1
  87. package/lib/chevre/service/task/givePointAward.d.ts +1 -1
  88. package/lib/chevre/service/task/givePointAward.js +1 -1
  89. package/lib/chevre/service/task/handleNotification.d.ts +4 -2
  90. package/lib/chevre/service/task/importEventCapacitiesFromCOA.d.ts +1 -1
  91. package/lib/chevre/service/task/importEventsFromCOA.d.ts +1 -1
  92. package/lib/chevre/service/task/importOffersFromCOA.d.ts +1 -1
  93. package/lib/chevre/service/task/invalidatePaymentUrl.d.ts +1 -1
  94. package/lib/chevre/service/task/moneyTransfer.d.ts +1 -1
  95. package/lib/chevre/service/task/moneyTransfer.js +1 -1
  96. package/lib/chevre/service/task/onAssetTransactionStatusChanged.d.ts +1 -1
  97. package/lib/chevre/service/task/onAuthorizationCreated.d.ts +1 -1
  98. package/lib/chevre/service/task/onEventChanged.d.ts +1 -1
  99. package/lib/chevre/service/task/onOrderPaymentCompleted.d.ts +1 -1
  100. package/lib/chevre/service/task/onResourceUpdated.d.ts +1 -1
  101. package/lib/chevre/service/task/pay.d.ts +1 -1
  102. package/lib/chevre/service/task/placeOrder.d.ts +1 -1
  103. package/lib/chevre/service/task/publishPaymentUrl.d.ts +1 -1
  104. package/lib/chevre/service/task/publishPaymentUrl.js +6 -7
  105. package/lib/chevre/service/task/refund.d.ts +1 -1
  106. package/lib/chevre/service/task/refund.js +1 -1
  107. package/lib/chevre/service/task/registerService.d.ts +1 -1
  108. package/lib/chevre/service/task/reserve.d.ts +1 -1
  109. package/lib/chevre/service/task/returnMoneyTransfer.d.ts +1 -1
  110. package/lib/chevre/service/task/returnMoneyTransfer.js +1 -1
  111. package/lib/chevre/service/task/returnOrder.d.ts +1 -1
  112. package/lib/chevre/service/task/returnPayTransaction.d.ts +1 -1
  113. package/lib/chevre/service/task/returnPayTransaction.js +1 -1
  114. package/lib/chevre/service/task/returnPointAward.d.ts +1 -1
  115. package/lib/chevre/service/task/returnPointAward.js +1 -1
  116. package/lib/chevre/service/task/returnReserveTransaction.d.ts +1 -1
  117. package/lib/chevre/service/task/returnReserveTransaction.js +1 -1
  118. package/lib/chevre/service/task/sendEmailMessage.d.ts +1 -1
  119. package/lib/chevre/service/task/sendOrder.d.ts +1 -1
  120. package/lib/chevre/service/task/triggerWebhook.d.ts +1 -1
  121. package/lib/chevre/service/task/useReservation.d.ts +1 -1
  122. package/lib/chevre/service/task/voidMoneyTransferTransaction.d.ts +1 -1
  123. package/lib/chevre/service/task/voidPayTransaction.d.ts +1 -1
  124. package/lib/chevre/service/task/voidPayment.d.ts +1 -1
  125. package/lib/chevre/service/task/voidRegisterServiceTransaction.d.ts +1 -1
  126. package/lib/chevre/service/task/voidReserveTransaction.d.ts +1 -1
  127. package/lib/chevre/service/task/voidReserveTransaction.js +4 -3
  128. package/lib/chevre/service/task.d.ts +7 -29
  129. package/lib/chevre/service/task.js +9 -114
  130. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.d.ts +11 -0
  131. package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.js +105 -0
  132. package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +17 -0
  133. package/lib/chevre/service/taskHandler/onOperationFailed.js +70 -0
  134. package/lib/chevre/service/taskHandler.d.ts +26 -0
  135. package/lib/chevre/service/taskHandler.js +96 -0
  136. package/lib/chevre/service/validation/validateOrder.js +55 -37
  137. package/lib/chevre/service.d.ts +0 -4
  138. package/lib/chevre/service.js +10 -14
  139. package/lib/chevre/settings/aggregation.d.ts +6 -1
  140. package/lib/chevre/settings/aggregation.js +2 -1
  141. package/package.json +5 -3
  142. package/example/src/chevre/adminAuth/adminIdentity.ts +0 -38
  143. package/example/src/chevre/executeOneTask.ts +0 -41
  144. package/example/src/chevre/executeTaskIfExists.ts +0 -80
  145. package/example/src/chevre/findExecutableTask.ts +0 -50
  146. package/example/src/chevre/findSetting.ts +0 -79
  147. package/example/src/chevre/roles/addRoleMembers.ts +0 -75
  148. package/example/src/chevre/searchPermissions.ts +0 -46
  149. package/example/src/chevre/transactionNumber/publishConfimationNumber.ts +0 -37
  150. package/example/src/chevre/transactionNumber/publishOrderNumber.ts +0 -40
  151. package/example/src/chevre/transactionNumber/setUseMongo4confirmationNumberFrom.ts +0 -45
  152. package/example/src/chevre/transactionNumber/setUseMongo4orderNumberFrom.ts +0 -41
  153. package/example/src/chevre/transactionNumber/setUseMongo4transactionNumberFrom.ts +0 -41
  154. package/lib/chevre/adminAuth.d.ts +0 -2
  155. package/lib/chevre/adminAuth.js +0 -6
@@ -13,6 +13,20 @@ interface IOnReservationStatusChanged {
13
13
  */
14
14
  informReservation?: factory.project.IInformParams[];
15
15
  }
16
+ interface IOnTaskStatusChanged {
17
+ /**
18
+ * AggService通知先
19
+ */
20
+ informTask?: factory.project.IInformParams[];
21
+ /**
22
+ * 分析連携するtaskNameリスト
23
+ */
24
+ informTaskNames?: factory.taskName[];
25
+ /**
26
+ * 分析連携するtaskStatusリスト
27
+ */
28
+ informTaskStatuses?: factory.taskStatus[];
29
+ }
16
30
  interface IOnEventChanged {
17
31
  informEvent2agg?: factory.project.IInformParams[];
18
32
  }
@@ -102,6 +116,7 @@ export interface ISetting {
102
116
  onEventChanged?: IOnEventChanged;
103
117
  onOrderStatusChanged: IOnOrderStatusChanged;
104
118
  onReservationStatusChanged?: IOnReservationStatusChanged;
119
+ onTaskStatusChanged?: IOnTaskStatusChanged;
105
120
  onResourceUpdated?: {
106
121
  informResource?: factory.project.IInformParams[];
107
122
  };
@@ -14,6 +14,7 @@ const schemaDefinition = {
14
14
  onEventChanged: mongoose_1.SchemaTypes.Mixed,
15
15
  onOrderStatusChanged: mongoose_1.SchemaTypes.Mixed,
16
16
  onReservationStatusChanged: mongoose_1.SchemaTypes.Mixed,
17
+ onTaskStatusChanged: mongoose_1.SchemaTypes.Mixed,
17
18
  onResourceUpdated: mongoose_1.SchemaTypes.Mixed,
18
19
  onTransactionStatusChanged: mongoose_1.SchemaTypes.Mixed,
19
20
  quota: mongoose_1.SchemaTypes.Mixed,
@@ -186,6 +186,15 @@ const indexes = [
186
186
  }
187
187
  }
188
188
  ],
189
+ [
190
+ { status: 1, lastTriedAt: 1, remainingNumberOfTries: 1, name: 1 },
191
+ {
192
+ name: 'abortMany',
193
+ partialFilterExpression: {
194
+ lastTriedAt: { $type: 'date' }
195
+ }
196
+ }
197
+ ],
189
198
  [
190
199
  { status: 1, expires: 1 },
191
200
  {
@@ -1,14 +1,10 @@
1
1
  import type { Connection } from 'mongoose';
2
- import { RedisClientType } from 'redis';
3
- import { ISetting } from './mongoose/schemas/setting';
4
2
  /**
5
3
  * 注文番号リポジトリ
6
4
  */
7
5
  export declare class OrderNumberRepo {
8
- private readonly settingModel;
9
6
  private readonly counterRepo;
10
7
  constructor(params: {
11
- redisClient: RedisClientType;
12
8
  connection: Connection;
13
9
  });
14
10
  /**
@@ -23,11 +19,4 @@ export declare class OrderNumberRepo {
23
19
  */
24
20
  orderDate: Date;
25
21
  }): Promise<string>;
26
- /**
27
- * DB移行時のみに使用目的の設定更新
28
- */
29
- setUseMongo4orderNumberFrom(params: {
30
- useMongo4orderNumberFrom: Date;
31
- }): Promise<Pick<ISetting, "useMongo4orderNumberFrom"> | null>;
32
- private useMongoBySettings;
33
22
  }
@@ -12,9 +12,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.OrderNumberRepo = void 0;
13
13
  const cdigit = require("cdigit");
14
14
  const moment = require("moment-timezone");
15
+ // import { RedisClientType } from 'redis';
15
16
  // tslint:disable-next-line:no-require-imports no-var-requires
16
17
  const fpe = require('node-fpe');
17
- const setting_1 = require("./mongoose/schemas/setting");
18
+ // import { createSchema as createSettingSchema, modelName as settingModelName } from './mongoose/schemas/setting';
18
19
  const transactionNumber_1 = require("./mongoose/schemas/transactionNumber");
19
20
  const transactionNumberCounter_1 = require("./transactionNumberCounter");
20
21
  const ORDER_NUMBER_SEPARATOR = '-';
@@ -23,8 +24,8 @@ const ORDER_NUMBER_SEPARATOR = '-';
23
24
  */
24
25
  class OrderNumberRepo {
25
26
  constructor(params) {
26
- const { connection } = params;
27
- this.settingModel = connection.model(setting_1.modelName, (0, setting_1.createSchema)());
27
+ // const { connection } = params;
28
+ // this.settingModel = connection.model(settingModelName, createSettingSchema());
28
29
  this.counterRepo = new transactionNumberCounter_1.TransactionNumberCounterRepo(params);
29
30
  }
30
31
  // private static createKey(params: {
@@ -52,27 +53,15 @@ class OrderNumberRepo {
52
53
  let dataFeedExpires;
53
54
  const dataFeedIdentifier = `${projectPrefix}:${timestamp}`;
54
55
  let incrReply;
55
- const useMongoBySettings = yield this.useMongoBySettings(params);
56
- if (useMongoBySettings) {
57
- dataFeedExpires = moment(params.orderDate)
58
- .add(1, 'minute') // ミリ秒でカウントしていくので、注文日時後1分で十分
59
- .toDate();
60
- incrReply = yield this.counterRepo.incrementByMongo({
61
- identifier: dataFeedIdentifier,
62
- includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.orderNumber },
63
- expires: dataFeedExpires
64
- });
65
- }
66
- else {
67
- dataFeedExpires = moment(params.orderDate)
68
- .add(1, 'minute') // ミリ秒でカウントしていくので、注文日時後1分で十分
69
- .toDate();
70
- incrReply = yield this.counterRepo.incrementByRedis({
71
- identifier: dataFeedIdentifier,
72
- includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.orderNumber },
73
- expires: dataFeedExpires
74
- });
75
- }
56
+ // const useMongoBySettings = await this.useMongoBySettings(params);
57
+ dataFeedExpires = moment(params.orderDate)
58
+ .add(1, 'minute') // ミリ秒でカウントしていくので、注文日時後1分で十分
59
+ .toDate();
60
+ incrReply = yield this.counterRepo.incrementByMongo({
61
+ identifier: dataFeedIdentifier,
62
+ includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.orderNumber },
63
+ expires: dataFeedExpires
64
+ });
76
65
  let orderNumber = `${timestamp}${incrReply}`;
77
66
  // checkdigit
78
67
  const cd = cdigit.luhn.compute(orderNumber);
@@ -90,32 +79,5 @@ class OrderNumberRepo {
90
79
  return orderNumber;
91
80
  });
92
81
  }
93
- /**
94
- * DB移行時のみに使用目的の設定更新
95
- */
96
- setUseMongo4orderNumberFrom(params) {
97
- return __awaiter(this, void 0, void 0, function* () {
98
- const { useMongo4orderNumberFrom } = params;
99
- return this.settingModel.findOneAndUpdate({ 'project.id': { $eq: '*' } }, {
100
- $set: { useMongo4orderNumberFrom }
101
- }, { projection: { _id: 0, useMongo4orderNumberFrom: 1 } })
102
- .lean()
103
- .exec();
104
- });
105
- }
106
- useMongoBySettings(params) {
107
- return __awaiter(this, void 0, void 0, function* () {
108
- const setting = yield this.settingModel.findOne({ 'project.id': { $eq: '*' } }, {
109
- _id: 0,
110
- useMongo4orderNumberFrom: 1
111
- })
112
- .lean()
113
- .exec();
114
- const useMongo4orderNumberFrom = setting === null || setting === void 0 ? void 0 : setting.useMongo4orderNumberFrom;
115
- return useMongo4orderNumberFrom instanceof Date
116
- && moment(params.orderDate)
117
- .isSameOrAfter(moment(useMongo4orderNumberFrom));
118
- });
119
- }
120
82
  }
121
83
  exports.OrderNumberRepo = OrderNumberRepo;
@@ -11,13 +11,14 @@ export declare class RoleRepo {
11
11
  constructor(connection: Connection);
12
12
  static CREATE_MONGO_CONDITIONS(params: factory.role.organizationRole.ISearchConditions): FilterQuery<IDocType>[];
13
13
  projectFields(params: factory.role.organizationRole.ISearchConditions, inclusion: IKeyOfProjection[]): Promise<IRole[]>;
14
- aggregatePermissions(params: {
14
+ /**
15
+ * distinctコマンドを使用して、ロールから権限を検索する
16
+ */
17
+ findUniquePermissionsByRoleName(params: {
15
18
  roleName: {
16
19
  $in: string[];
17
20
  };
18
- }): Promise<{
19
- _id: string;
20
- }[]>;
21
+ }): Promise<string[]>;
21
22
  addPermissionIfNotExists(params: {
22
23
  roleName: {
23
24
  $eq: factory.role.organizationRole.RoleName;
@@ -26,8 +27,19 @@ export declare class RoleRepo {
26
27
  }): Promise<(import("mongoose").FlattenMaps<IDocType> & {
27
28
  _id: import("mongoose").Types.ObjectId;
28
29
  }) | null>;
30
+ removePermissionIfExists(params: {
31
+ roleName: {
32
+ $eq: factory.role.organizationRole.RoleName;
33
+ };
34
+ permission: string;
35
+ }): Promise<(import("mongoose").FlattenMaps<IDocType> & {
36
+ _id: import("mongoose").Types.ObjectId;
37
+ }) | null>;
29
38
  addMember(params: Pick<IRole, 'member' | 'memberOf' | 'roleName'>): Promise<(import("mongoose").FlattenMaps<IDocType> & {
30
39
  _id: import("mongoose").Types.ObjectId;
31
40
  }) | null>;
41
+ create(params: Pick<IRole, 'member' | 'memberOf' | 'permissions' | 'roleName'>): Promise<{
42
+ id: string;
43
+ }>;
32
44
  }
33
45
  export {};
@@ -10,6 +10,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.RoleRepo = void 0;
13
+ const factory = require("../factory");
13
14
  const settings_1 = require("../settings");
14
15
  const role_1 = require("./mongoose/schemas/role");
15
16
  const AVAILABLE_PROJECT_FIELDS = [
@@ -76,39 +77,42 @@ class RoleRepo {
76
77
  .exec();
77
78
  });
78
79
  }
79
- aggregatePermissions(params) {
80
+ // migrate to findDistinctPermissionsByRoleName(2025-07-21~)
81
+ // public async aggregatePermissions(params: {
82
+ // roleName: { $in: string[] };
83
+ // }): Promise<{ _id: string }[]> {
84
+ // const matchStages: IMatchStage[] = [
85
+ // { $match: { roleName: { $in: params.roleName.$in } } }
86
+ // ];
87
+ // const aggregate = this.roleModel.aggregate([
88
+ // ...matchStages,
89
+ // {
90
+ // $unwind: {
91
+ // path: '$permissions'
92
+ // }
93
+ // },
94
+ // {
95
+ // $project: {
96
+ // _id: 0,
97
+ // permission: '$permissions'
98
+ // }
99
+ // },
100
+ // {
101
+ // $group: {
102
+ // _id: '$permission'
103
+ // }
104
+ // }
105
+ // ]);
106
+ // return aggregate.option({ maxTimeMS: MONGO_MAX_TIME_MS })
107
+ // .exec();
108
+ // }
109
+ /**
110
+ * distinctコマンドを使用して、ロールから権限を検索する
111
+ */
112
+ findUniquePermissionsByRoleName(params) {
80
113
  return __awaiter(this, void 0, void 0, function* () {
81
- const matchStages = [
82
- { $match: { roleName: { $in: params.roleName.$in } } }
83
- ];
84
- const aggregate = this.roleModel.aggregate([
85
- // ...(typeof params.sort?.productID === 'number')
86
- // ? [{ $sort: { productID: params.sort.productID } }]
87
- // : [],
88
- ...matchStages,
89
- {
90
- $unwind: {
91
- path: '$permissions'
92
- }
93
- },
94
- {
95
- $project: {
96
- _id: 0,
97
- permission: '$permissions'
98
- }
99
- },
100
- {
101
- $group: {
102
- _id: '$permission'
103
- }
104
- }
105
- ]);
106
- // if (typeof params.limit === 'number' && params.limit > 0) {
107
- // const page: number = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
108
- // aggregate.limit(params.limit * page)
109
- // .skip(params.limit * (page - 1));
110
- // }
111
- return aggregate.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
114
+ return this.roleModel.distinct('permissions', { roleName: { $in: params.roleName.$in } })
115
+ .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
112
116
  .exec();
113
117
  });
114
118
  }
@@ -132,6 +136,23 @@ class RoleRepo {
132
136
  .exec();
133
137
  });
134
138
  }
139
+ removePermissionIfExists(params) {
140
+ return __awaiter(this, void 0, void 0, function* () {
141
+ return this.roleModel.findOneAndUpdate({
142
+ roleName: { $eq: params.roleName.$eq },
143
+ permissions: { $eq: params.permission }
144
+ }, {
145
+ $pull: {
146
+ permissions: params.permission
147
+ }
148
+ }, {
149
+ new: true,
150
+ projection: { _id: 1 }
151
+ })
152
+ .lean()
153
+ .exec();
154
+ });
155
+ }
135
156
  addMember(params) {
136
157
  return __awaiter(this, void 0, void 0, function* () {
137
158
  const { roleName, member, memberOf } = params;
@@ -148,5 +169,23 @@ class RoleRepo {
148
169
  .exec();
149
170
  });
150
171
  }
172
+ create(params) {
173
+ return __awaiter(this, void 0, void 0, function* () {
174
+ var _a, _b;
175
+ let savedId;
176
+ const { member, memberOf, permissions, roleName } = params;
177
+ const creatingRole = {
178
+ member, memberOf, permissions, roleName,
179
+ typeOf: factory.role.RoleType.OrganizationRole
180
+ };
181
+ const result = yield this.roleModel.insertMany(creatingRole, { rawResult: true });
182
+ const insertedId = (_b = (_a = result.insertedIds) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.toHexString();
183
+ if (typeof insertedId !== 'string') {
184
+ throw new factory.errors.Internal(`role not saved unexpectedly. result:${JSON.stringify(result)}`);
185
+ }
186
+ savedId = insertedId;
187
+ return { id: savedId };
188
+ });
189
+ }
151
190
  }
152
191
  exports.RoleRepo = RoleRepo;
@@ -1,13 +1,10 @@
1
1
  import type { Connection } from 'mongoose';
2
- import { RedisClientType } from 'redis';
3
2
  /**
4
3
  * サービスアウトプット識別子リポジトリ
5
4
  */
6
5
  export declare class ServiceOutputIdentifierRepo {
7
- private readonly settingModel;
8
6
  private readonly counterRepo;
9
7
  constructor(params: {
10
- redisClient: RedisClientType;
11
8
  connection: Connection;
12
9
  });
13
10
  /**
@@ -16,5 +13,4 @@ export declare class ServiceOutputIdentifierRepo {
16
13
  publishByTimestamp(params: {
17
14
  startDate: Date;
18
15
  }): Promise<string>;
19
- private useMongoBySettings;
20
16
  }
@@ -12,9 +12,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.ServiceOutputIdentifierRepo = void 0;
13
13
  const cdigit = require("cdigit");
14
14
  const moment = require("moment-timezone");
15
+ // import { RedisClientType } from 'redis';
15
16
  // tslint:disable-next-line:no-require-imports no-var-requires
16
17
  const fpe = require('node-fpe');
17
- const setting_1 = require("./mongoose/schemas/setting");
18
+ // import { createSchema as createSettingSchema, modelName as settingModelName } from './mongoose/schemas/setting';
18
19
  const transactionNumber_1 = require("./mongoose/schemas/transactionNumber");
19
20
  const transactionNumberCounter_1 = require("./transactionNumberCounter");
20
21
  /**
@@ -22,8 +23,8 @@ const transactionNumberCounter_1 = require("./transactionNumberCounter");
22
23
  */
23
24
  class ServiceOutputIdentifierRepo {
24
25
  constructor(params) {
25
- const { connection } = params;
26
- this.settingModel = connection.model(setting_1.modelName, (0, setting_1.createSchema)());
26
+ // const { connection } = params;
27
+ // this.settingModel = connection.model(settingModelName, createSettingSchema());
27
28
  this.counterRepo = new transactionNumberCounter_1.TransactionNumberCounterRepo(params);
28
29
  }
29
30
  // private static createKey(params: {
@@ -47,27 +48,15 @@ class ServiceOutputIdentifierRepo {
47
48
  let dataFeedExpires;
48
49
  const dataFeedIdentifier = timestamp;
49
50
  let incrReply;
50
- const useMongoBySettings = yield this.useMongoBySettings(params);
51
- if (useMongoBySettings) {
52
- dataFeedExpires = moment(params.startDate)
53
- .add(1, 'minute') // ミリ秒でカウントしていくので、予約日時後1分で十分
54
- .toDate();
55
- incrReply = yield this.counterRepo.incrementByMongo({
56
- identifier: dataFeedIdentifier,
57
- includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.serviceOutputIdentifier },
58
- expires: dataFeedExpires
59
- });
60
- }
61
- else {
62
- dataFeedExpires = moment(params.startDate)
63
- .add(1, 'minute') // ミリ秒でカウントしていくので、予約日時後1分で十分
64
- .toDate();
65
- incrReply = yield this.counterRepo.incrementByRedis({
66
- identifier: dataFeedIdentifier,
67
- includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.serviceOutputIdentifier },
68
- expires: dataFeedExpires
69
- });
70
- }
51
+ // const useMongoBySettings = await this.useMongoBySettings(params);
52
+ dataFeedExpires = moment(params.startDate)
53
+ .add(1, 'minute') // ミリ秒でカウントしていくので、予約日時後1分で十分
54
+ .toDate();
55
+ incrReply = yield this.counterRepo.incrementByMongo({
56
+ identifier: dataFeedIdentifier,
57
+ includedInDataCatalog: { identifier: transactionNumber_1.DataCatalogIdentifier.serviceOutputIdentifier },
58
+ expires: dataFeedExpires
59
+ });
71
60
  let identifier = `${timestamp}${incrReply}`;
72
61
  // checkdigit
73
62
  const cd = cdigit.luhn.compute(identifier);
@@ -77,19 +66,5 @@ class ServiceOutputIdentifierRepo {
77
66
  return identifier;
78
67
  });
79
68
  }
80
- useMongoBySettings(params) {
81
- return __awaiter(this, void 0, void 0, function* () {
82
- const setting = yield this.settingModel.findOne({ 'project.id': { $eq: '*' } }, {
83
- _id: 0,
84
- useMongo4transactionNumberFrom: 1
85
- })
86
- .lean()
87
- .exec();
88
- const useMongo4transactionNumberFrom = setting === null || setting === void 0 ? void 0 : setting.useMongo4transactionNumberFrom;
89
- return useMongo4transactionNumberFrom instanceof Date
90
- && moment(params.startDate)
91
- .isSameOrAfter(moment(useMongo4transactionNumberFrom));
92
- });
93
- }
94
69
  }
95
70
  exports.ServiceOutputIdentifierRepo = ServiceOutputIdentifierRepo;
@@ -1,4 +1,4 @@
1
- import type { Connection } from 'mongoose';
1
+ import type { Connection, FilterQuery } from 'mongoose';
2
2
  import { ISetting } from './mongoose/schemas/setting';
3
3
  type IKeyOfProjection = keyof ISetting;
4
4
  export { ISetting };
@@ -22,14 +22,9 @@ export declare class SettingRepo {
22
22
  $eq: string;
23
23
  };
24
24
  };
25
- }, update: Pick<ISetting, 'onEventChanged' | 'onReservationStatusChanged' | 'onResourceUpdated' | 'defaultSenderEmail' | 'useInformResourceTypes' | 'userPoolIdNew' | 'userPoolIdOld' | 'storage' | 'quota' | 'triggerWebhook' | 'waiter'>): Promise<import("mongoose").UpdateWriteOpResult>;
26
- updateByProject4migration(filter: {
27
- project: {
28
- id: {
29
- $eq: string;
30
- };
31
- };
32
- }, update: {
33
- $set: any;
25
+ }, update: Pick<ISetting, 'onEventChanged' | 'onReservationStatusChanged' | 'onTaskStatusChanged' | 'onResourceUpdated' | 'defaultSenderEmail' | 'useInformResourceTypes' | 'userPoolIdNew' | 'userPoolIdOld' | 'storage' | 'quota' | 'triggerWebhook' | 'waiter'>): Promise<import("mongoose").UpdateWriteOpResult>;
26
+ unsetUnnecessaryFields(params: {
27
+ filter: FilterQuery<ISetting>;
28
+ $unset: any;
34
29
  }): Promise<import("mongoose").UpdateWriteOpResult>;
35
30
  }
@@ -49,19 +49,16 @@ class SettingRepo {
49
49
  }
50
50
  updateByProject(filter, update) {
51
51
  return __awaiter(this, void 0, void 0, function* () {
52
- const { onEventChanged, onReservationStatusChanged, onResourceUpdated, defaultSenderEmail, useInformResourceTypes, userPoolIdNew, userPoolIdOld, storage, quota, triggerWebhook, waiter } = update;
52
+ const { onEventChanged, onReservationStatusChanged, onTaskStatusChanged, onResourceUpdated, defaultSenderEmail, useInformResourceTypes, userPoolIdNew, userPoolIdOld, storage, quota, triggerWebhook, waiter } = update;
53
53
  return this.settingModel.updateOne({ 'project.id': { $eq: filter.project.id.$eq } }, {
54
- $set: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (onEventChanged !== undefined) ? { onEventChanged } : undefined), (onReservationStatusChanged !== undefined) ? { onReservationStatusChanged } : undefined), (onResourceUpdated !== undefined) ? { onResourceUpdated } : undefined), (defaultSenderEmail !== undefined) ? { defaultSenderEmail } : undefined), (useInformResourceTypes !== undefined) ? { useInformResourceTypes } : undefined), (userPoolIdNew !== undefined) ? { userPoolIdNew } : undefined), (userPoolIdOld !== undefined) ? { userPoolIdOld } : undefined), (storage !== undefined) ? { storage } : undefined), (quota !== undefined) ? { quota } : undefined), (triggerWebhook !== undefined) ? { triggerWebhook } : undefined), (waiter !== undefined) ? { waiter } : undefined)
54
+ $set: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (onEventChanged !== undefined) ? { onEventChanged } : undefined), (onReservationStatusChanged !== undefined) ? { onReservationStatusChanged } : undefined), (onTaskStatusChanged !== undefined) ? { onTaskStatusChanged } : undefined), (onResourceUpdated !== undefined) ? { onResourceUpdated } : undefined), (defaultSenderEmail !== undefined) ? { defaultSenderEmail } : undefined), (useInformResourceTypes !== undefined) ? { useInformResourceTypes } : undefined), (userPoolIdNew !== undefined) ? { userPoolIdNew } : undefined), (userPoolIdOld !== undefined) ? { userPoolIdOld } : undefined), (storage !== undefined) ? { storage } : undefined), (quota !== undefined) ? { quota } : undefined), (triggerWebhook !== undefined) ? { triggerWebhook } : undefined), (waiter !== undefined) ? { waiter } : undefined)
55
55
  })
56
56
  .exec();
57
57
  });
58
58
  }
59
- updateByProject4migration(filter, update) {
59
+ unsetUnnecessaryFields(params) {
60
60
  return __awaiter(this, void 0, void 0, function* () {
61
- const { $set } = update;
62
- return this.settingModel.updateOne({ 'project.id': { $eq: filter.project.id.$eq } }, {
63
- $set
64
- })
61
+ return this.settingModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
65
62
  .exec();
66
63
  });
67
64
  }
@@ -287,17 +287,6 @@ class StockHolderRepo {
287
287
  throw new factory.errors.Argument('startDate', 'must be Date');
288
288
  }
289
289
  let useMongoose = false;
290
- // useMongoAsStockHolder設定有の場合のみmongo利用(2025-04-18~)
291
- // const useMongoAsStockHolderBySettings = await this.useMongoAsStockHolderBySettings({ project: { id: params.project.id } });
292
- // if (useMongoAsStockHolderBySettings) {
293
- // const redisKeyExists = await this.redisKeyExists(params);
294
- // if (redisKeyExists) {
295
- // useMongoose = false;
296
- // } else {
297
- // // redis keyが存在しなければmongo利用
298
- // useMongoose = true;
299
- // }
300
- // }
301
290
  // always use mongo(2025-05-21~)
302
291
  const redisKeyExists = yield this.redisKeyExists(params);
303
292
  if (redisKeyExists) {