@chevre/domain 22.11.0-alpha.2 → 22.11.0-alpha.22
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/example/src/chevre/assetTransaction/processReserve.ts +0 -1
- package/example/src/chevre/notifyAbortedTasksByEmail.ts +1 -1
- package/example/src/chevre/orders/searchWithUnwoundAcceptedOffers.ts +73 -0
- package/example/src/chevre/reIndex.ts +1 -1
- package/example/src/chevre/roles/addAdminPermissionIfNotExists.ts +132 -0
- package/example/src/chevre/roles/addDefaultPermissionIfNotExists.ts +37 -0
- package/example/src/chevre/roles/addEventOfferPermissionIfNotExists.ts +27 -0
- package/example/src/chevre/roles/addPermissionIfNotExists.ts +39 -6
- package/example/src/chevre/roles/addProjectCreatorRole.ts +48 -0
- package/example/src/chevre/roles/assignGlobalRoles.ts +72 -0
- package/example/src/chevre/roles/findPermissions.ts +84 -0
- package/example/src/chevre/roles/findRoleNames.ts +117 -0
- package/example/src/chevre/roles/removeConsolePermissionIfExists.ts +38 -0
- package/example/src/chevre/roles/removePermissionFromAPIRoles.ts +46 -0
- package/example/src/chevre/roles/removePermissionIfExists.ts +39 -0
- package/example/src/chevre/settings/addSettings.ts +23 -17
- package/example/src/chevre/stockHolder/checkRedisKeyCount.ts +11 -20
- package/example/src/chevre/unsetUnnecessaryFields.ts +8 -5
- package/example/src/idaas/auth0/adminApplications.ts +183 -0
- package/example/src/idaas/auth0/getToken.ts +55 -0
- package/example/src/idaas/auth0/getTokenByPrivateKeyJWT.ts +84 -0
- package/example/src/regex.ts +31 -0
- package/lib/chevre/eventEmitter/task.d.ts +13 -4
- package/lib/chevre/index.d.ts +0 -2
- package/lib/chevre/index.js +0 -10
- package/lib/chevre/repo/acceptedOffer.d.ts +3 -1
- package/lib/chevre/repo/acceptedOffer.js +11 -3
- package/lib/chevre/repo/confirmationNumber.d.ts +0 -11
- package/lib/chevre/repo/confirmationNumber.js +15 -54
- package/lib/chevre/repo/identity.d.ts +11 -33
- package/lib/chevre/repo/identity.js +10 -15
- package/lib/chevre/repo/member.d.ts +22 -4
- package/lib/chevre/repo/member.js +81 -27
- package/lib/chevre/repo/mongoose/schemas/identity.d.ts +1 -1
- package/lib/chevre/repo/mongoose/schemas/member/global.d.ts +14 -0
- package/lib/chevre/repo/mongoose/schemas/member/global.js +82 -0
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +11 -0
- package/lib/chevre/repo/mongoose/schemas/setting.js +1 -0
- package/lib/chevre/repo/mongoose/schemas/task.js +9 -0
- package/lib/chevre/repo/orderNumber.d.ts +0 -11
- package/lib/chevre/repo/orderNumber.js +13 -51
- package/lib/chevre/repo/role.d.ts +16 -4
- package/lib/chevre/repo/role.js +71 -32
- package/lib/chevre/repo/serviceOutputIdentifier.d.ts +0 -4
- package/lib/chevre/repo/serviceOutputIdentifier.js +13 -38
- package/lib/chevre/repo/setting.d.ts +5 -10
- package/lib/chevre/repo/setting.js +4 -7
- package/lib/chevre/repo/stockHolder.js +0 -11
- package/lib/chevre/repo/task.d.ts +38 -25
- package/lib/chevre/repo/task.js +114 -211
- package/lib/chevre/repo/transactionNumber.d.ts +0 -11
- package/lib/chevre/repo/transactionNumber.js +13 -51
- package/lib/chevre/repo/transactionNumberCounter.d.ts +0 -10
- package/lib/chevre/repo/transactionNumberCounter.js +34 -29
- package/lib/chevre/service/assetTransaction/cancelReservation/start.d.ts +1 -1
- package/lib/chevre/service/code.d.ts +5 -28
- package/lib/chevre/service/code.js +3 -79
- package/lib/chevre/service/iam.d.ts +17 -7
- package/lib/chevre/service/iam.js +26 -6
- package/lib/chevre/service/notification/notifyAbortedTasksByEmail.d.ts +15 -0
- package/lib/chevre/service/notification/notifyAbortedTasksByEmail.js +38 -0
- package/lib/chevre/service/notification.d.ts +2 -1
- package/lib/chevre/service/notification.js +3 -1
- package/lib/chevre/service/task/acceptCOAOffer.d.ts +1 -1
- package/lib/chevre/service/task/acceptCOAOffer.js +6 -5
- package/lib/chevre/service/task/aggregateOffers.d.ts +1 -1
- package/lib/chevre/service/task/aggregateOnSystem.d.ts +4 -2
- package/lib/chevre/service/task/aggregateScreeningEvent.d.ts +1 -1
- package/lib/chevre/service/task/authorizePayment.d.ts +1 -1
- package/lib/chevre/service/task/authorizePayment.js +7 -6
- package/lib/chevre/service/task/cancelMoneyTransfer.d.ts +1 -1
- package/lib/chevre/service/task/cancelPendingReservation.d.ts +1 -1
- package/lib/chevre/service/task/cancelReservation.d.ts +1 -1
- package/lib/chevre/service/task/checkMovieTicket.d.ts +1 -1
- package/lib/chevre/service/task/checkMovieTicket.js +4 -3
- package/lib/chevre/service/task/checkResource.d.ts +1 -1
- package/lib/chevre/service/task/confirmMoneyTransfer.d.ts +1 -1
- package/lib/chevre/service/task/confirmPayTransaction.d.ts +1 -1
- package/lib/chevre/service/task/confirmRegisterService.d.ts +1 -1
- package/lib/chevre/service/task/confirmRegisterServiceTransaction.d.ts +1 -1
- package/lib/chevre/service/task/confirmReserveTransaction.d.ts +1 -1
- package/lib/chevre/service/task/createAccountingReport.d.ts +1 -1
- package/lib/chevre/service/task/createEvent.d.ts +1 -1
- package/lib/chevre/service/task/deletePerson.d.ts +1 -1
- package/lib/chevre/service/task/deleteTransaction.d.ts +1 -1
- package/lib/chevre/service/task/givePointAward.d.ts +1 -1
- package/lib/chevre/service/task/givePointAward.js +1 -1
- package/lib/chevre/service/task/handleNotification.d.ts +4 -2
- package/lib/chevre/service/task/importEventCapacitiesFromCOA.d.ts +1 -1
- package/lib/chevre/service/task/importEventsFromCOA.d.ts +1 -1
- package/lib/chevre/service/task/importOffersFromCOA.d.ts +1 -1
- package/lib/chevre/service/task/invalidatePaymentUrl.d.ts +1 -1
- package/lib/chevre/service/task/moneyTransfer.d.ts +1 -1
- package/lib/chevre/service/task/moneyTransfer.js +1 -1
- package/lib/chevre/service/task/onAssetTransactionStatusChanged.d.ts +1 -1
- package/lib/chevre/service/task/onAuthorizationCreated.d.ts +1 -1
- package/lib/chevre/service/task/onEventChanged.d.ts +1 -1
- package/lib/chevre/service/task/onOrderPaymentCompleted.d.ts +1 -1
- package/lib/chevre/service/task/onResourceUpdated.d.ts +1 -1
- package/lib/chevre/service/task/pay.d.ts +1 -1
- package/lib/chevre/service/task/placeOrder.d.ts +1 -1
- package/lib/chevre/service/task/publishPaymentUrl.d.ts +1 -1
- package/lib/chevre/service/task/publishPaymentUrl.js +6 -7
- package/lib/chevre/service/task/refund.d.ts +1 -1
- package/lib/chevre/service/task/refund.js +1 -1
- package/lib/chevre/service/task/registerService.d.ts +1 -1
- package/lib/chevre/service/task/reserve.d.ts +1 -1
- package/lib/chevre/service/task/returnMoneyTransfer.d.ts +1 -1
- package/lib/chevre/service/task/returnMoneyTransfer.js +1 -1
- package/lib/chevre/service/task/returnOrder.d.ts +1 -1
- package/lib/chevre/service/task/returnPayTransaction.d.ts +1 -1
- package/lib/chevre/service/task/returnPayTransaction.js +1 -1
- package/lib/chevre/service/task/returnPointAward.d.ts +1 -1
- package/lib/chevre/service/task/returnPointAward.js +1 -1
- package/lib/chevre/service/task/returnReserveTransaction.d.ts +1 -1
- package/lib/chevre/service/task/returnReserveTransaction.js +1 -1
- package/lib/chevre/service/task/sendEmailMessage.d.ts +1 -1
- package/lib/chevre/service/task/sendOrder.d.ts +1 -1
- package/lib/chevre/service/task/triggerWebhook.d.ts +1 -1
- package/lib/chevre/service/task/useReservation.d.ts +1 -1
- package/lib/chevre/service/task/voidMoneyTransferTransaction.d.ts +1 -1
- package/lib/chevre/service/task/voidPayTransaction.d.ts +1 -1
- package/lib/chevre/service/task/voidPayment.d.ts +1 -1
- package/lib/chevre/service/task/voidRegisterServiceTransaction.d.ts +1 -1
- package/lib/chevre/service/task/voidReserveTransaction.d.ts +1 -1
- package/lib/chevre/service/task/voidReserveTransaction.js +4 -3
- package/lib/chevre/service/task.d.ts +1 -23
- package/lib/chevre/service/task.js +3 -110
- package/lib/chevre/service/taskHandler.d.ts +26 -0
- package/lib/chevre/service/taskHandler.js +139 -0
- package/lib/chevre/service/validation/validateOrder.js +55 -37
- package/lib/chevre/service.d.ts +0 -4
- package/lib/chevre/service.js +10 -14
- package/lib/chevre/settings/aggregation.d.ts +6 -1
- package/lib/chevre/settings/aggregation.js +2 -1
- package/package.json +5 -3
- package/example/src/chevre/adminAuth/adminIdentity.ts +0 -38
- package/example/src/chevre/findExecutableTask.ts +0 -50
- package/example/src/chevre/findSetting.ts +0 -79
- package/example/src/chevre/roles/addRoleMembers.ts +0 -75
- package/example/src/chevre/searchPermissions.ts +0 -46
- package/example/src/chevre/transactionNumber/publishConfimationNumber.ts +0 -37
- package/example/src/chevre/transactionNumber/publishOrderNumber.ts +0 -40
- package/example/src/chevre/transactionNumber/setUseMongo4confirmationNumberFrom.ts +0 -45
- package/example/src/chevre/transactionNumber/setUseMongo4orderNumberFrom.ts +0 -41
- package/example/src/chevre/transactionNumber/setUseMongo4transactionNumberFrom.ts +0 -41
- package/lib/chevre/adminAuth.d.ts +0 -2
- package/lib/chevre/adminAuth.js +0 -6
|
@@ -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
|
-
|
|
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(
|
|
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 =
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
|
|
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 {};
|
package/lib/chevre/repo/role.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
82
|
-
{
|
|
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
|
-
|
|
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(
|
|
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 =
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
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
|
-
|
|
27
|
-
|
|
28
|
-
|
|
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
|
-
|
|
59
|
+
unsetUnnecessaryFields(params) {
|
|
60
60
|
return __awaiter(this, void 0, void 0, function* () {
|
|
61
|
-
|
|
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) {
|
|
@@ -23,7 +23,9 @@ interface IOptionOnCreate {
|
|
|
23
23
|
emitImmediately: boolean;
|
|
24
24
|
}
|
|
25
25
|
export type IExecutableTaskKeys = 'data' | 'id' | 'name' | 'status' | 'numberOfTried' | 'project' | 'remainingNumberOfTries' | 'runsAt' | 'expires';
|
|
26
|
-
export type IExecutableTask<T extends factory.taskName> = Pick<factory.task.ITask<T>, IExecutableTaskKeys
|
|
26
|
+
export type IExecutableTask<T extends factory.taskName> = Pick<factory.task.ITask<T>, IExecutableTaskKeys> & {
|
|
27
|
+
status: factory.taskStatus.Running;
|
|
28
|
+
};
|
|
27
29
|
type IKeyOfProjection = keyof factory.task.ITask<factory.taskName>;
|
|
28
30
|
type ICreatingTask = Pick<factory.task.IAttributes<factory.taskName>, 'data' | 'executionResults' | 'name' | 'numberOfTried' | 'project' | 'remainingNumberOfTries' | 'runsAt' | 'status' | 'identifier' | 'description'>;
|
|
29
31
|
/**
|
|
@@ -68,6 +70,10 @@ export declare class TaskRepo {
|
|
|
68
70
|
*/
|
|
69
71
|
createDeleteTransactionTaskIfNotExist(params: Pick<factory.task.IAttributes<factory.taskName.DeleteTransaction>, 'data' | 'executionResults' | 'name' | 'numberOfTried' | 'project' | 'remainingNumberOfTries' | 'runsAt' | 'status'>, options: IOptionOnCreate): Promise<void>;
|
|
70
72
|
createOnAssetTransactionStatusChangedTaskIfNotExist(params: Pick<factory.task.IAttributes<factory.taskName.OnAssetTransactionStatusChanged>, 'data' | 'executionResults' | 'name' | 'numberOfTried' | 'project' | 'remainingNumberOfTries' | 'runsAt' | 'status'>, options: IOptionOnCreate): Promise<void>;
|
|
73
|
+
/**
|
|
74
|
+
* Ready -> remainingNumberOfTriesが1減る
|
|
75
|
+
* Running -> findOneするだけ
|
|
76
|
+
*/
|
|
71
77
|
executeOneById(params: {
|
|
72
78
|
id: string;
|
|
73
79
|
status: factory.taskStatus.Ready | factory.taskStatus.Running;
|
|
@@ -77,7 +83,7 @@ export declare class TaskRepo {
|
|
|
77
83
|
expires?: Date;
|
|
78
84
|
}): Promise<IExecutableTask<factory.taskName> | null>;
|
|
79
85
|
/**
|
|
80
|
-
*
|
|
86
|
+
* Readyのタスクをname指定でひとつRunningに変更する
|
|
81
87
|
*/
|
|
82
88
|
executeOneIfExists(params: {
|
|
83
89
|
name?: {
|
|
@@ -106,6 +112,9 @@ export declare class TaskRepo {
|
|
|
106
112
|
}): Promise<{
|
|
107
113
|
count: number;
|
|
108
114
|
}>;
|
|
115
|
+
/**
|
|
116
|
+
* 実行日時を一定期間過ぎたReadyタスクについて、Runningスタータスに変更した上で、Runningイベントを発生させる
|
|
117
|
+
*/
|
|
109
118
|
emitRunningIfExists(params: {
|
|
110
119
|
name?: {
|
|
111
120
|
$eq?: factory.taskName;
|
|
@@ -121,30 +130,32 @@ export declare class TaskRepo {
|
|
|
121
130
|
numberOfTried?: factory.sortType;
|
|
122
131
|
runsAt: factory.sortType;
|
|
123
132
|
};
|
|
124
|
-
}): Promise<Pick<factory.task.ITask<factory.taskName>, 'id' | 'name'> | null>;
|
|
125
|
-
findExecutableOne(params: {
|
|
126
|
-
name?: {
|
|
127
|
-
$eq?: factory.taskName;
|
|
128
|
-
$nin?: factory.taskName[];
|
|
129
|
-
};
|
|
130
|
-
runsAt: {
|
|
131
|
-
$lt: Date;
|
|
132
|
-
};
|
|
133
|
-
}): Promise<IExecutableTask<factory.taskName> | null>;
|
|
133
|
+
}, next?: INextFunction): Promise<Pick<factory.task.ITask<factory.taskName>, 'id' | 'name'> | null>;
|
|
134
134
|
/**
|
|
135
135
|
* emit OnTaskStatusChanged on delayed tasks
|
|
136
136
|
*/
|
|
137
137
|
/**
|
|
138
|
-
*
|
|
138
|
+
* Readyのままで期限切れのタスクをExpiredに変更する
|
|
139
139
|
*/
|
|
140
140
|
makeExpiredMany(params: {
|
|
141
141
|
expiresLt: Date;
|
|
142
142
|
}): Promise<UpdateWriteOpResult>;
|
|
143
143
|
/**
|
|
144
|
-
*
|
|
144
|
+
* Runningのまま一定期間超過し、かつ、remainingNumberOfTries>0のタスクをReadyに変更する
|
|
145
145
|
*/
|
|
146
|
-
|
|
146
|
+
retryMany(params: {
|
|
147
147
|
intervalInMinutes: number;
|
|
148
|
+
/**
|
|
149
|
+
* リトライ条件に残り試行回数条件を追加する
|
|
150
|
+
* 十分に小さい数値を指定すれば、実質残り試行回数に関係なくRunningがReadyに変更されることになる
|
|
151
|
+
*/
|
|
152
|
+
remainingNumberOfTries: {
|
|
153
|
+
$gte?: number;
|
|
154
|
+
$lte?: number;
|
|
155
|
+
};
|
|
156
|
+
name: {
|
|
157
|
+
$in?: factory.taskName[];
|
|
158
|
+
};
|
|
148
159
|
}): Promise<UpdateWriteOpResult>;
|
|
149
160
|
/**
|
|
150
161
|
* 実行中止済タスクを強制的にリトライ
|
|
@@ -154,25 +165,27 @@ export declare class TaskRepo {
|
|
|
154
165
|
id: string;
|
|
155
166
|
remainingNumberOfTries: number;
|
|
156
167
|
}): Promise<UpdateWriteOpResult>;
|
|
157
|
-
abortOne(params: {
|
|
158
|
-
intervalInMinutes: number;
|
|
159
|
-
}): Promise<factory.task.ITask<factory.taskName> | null>;
|
|
160
168
|
abortMany(params: {
|
|
161
169
|
intervalInMinutes: number;
|
|
170
|
+
name: {
|
|
171
|
+
$in?: factory.taskName[];
|
|
172
|
+
};
|
|
162
173
|
}): Promise<UpdateWriteOpResult>;
|
|
163
174
|
/**
|
|
164
|
-
*
|
|
175
|
+
* タスクIDから実行結果とステータスを保管する
|
|
176
|
+
* Abortedの場合、dateAbortedもセットする
|
|
165
177
|
*/
|
|
166
|
-
|
|
178
|
+
setExecutionResultAndStatus(params: {
|
|
167
179
|
/**
|
|
168
180
|
* タスクID
|
|
169
181
|
*/
|
|
170
182
|
id: string;
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
183
|
+
remainingNumberOfTries: number;
|
|
184
|
+
name: factory.taskName;
|
|
185
|
+
}, update: {
|
|
186
|
+
status: factory.taskStatus.Executed | factory.taskStatus.Running | factory.taskStatus.Aborted;
|
|
187
|
+
executionResult: factory.task.IExecutionResult;
|
|
188
|
+
}, next?: INextFunction): Promise<void>;
|
|
176
189
|
count(params: factory.task.ISearchConditions): Promise<{
|
|
177
190
|
count: number;
|
|
178
191
|
}>;
|