@chevre/domain 22.11.0-alpha.9 → 22.11.0
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/aggregation/aggregateOrderOfCustomer.ts +21 -10
- package/example/src/chevre/aggregation/aggregateTasks.ts +41 -0
- package/example/src/chevre/checkCustomerAttributesLength.ts +109 -0
- package/example/src/chevre/notifyAbortedTasksByEmail.ts +1 -1
- package/example/src/chevre/reIndex.ts +1 -1
- package/example/src/chevre/roles/addEventOfferPermissionIfNotExists.ts +27 -0
- package/example/src/chevre/roles/{addAdminInventoryManagerRole.ts → addProjectCreatorRole.ts} +6 -8
- 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/searchEventSeats.ts +1 -1
- package/example/src/chevre/searchProducts.ts +28 -0
- package/example/src/chevre/settings/addSettings.ts +31 -17
- package/example/src/chevre/task/countPotentiallyRunning.ts +41 -0
- package/example/src/chevre/task/countTasks.ts +51 -0
- package/example/src/chevre/{deleteRunsAtPassedCertainPeriod.ts → task/deleteRunsAtPassedCertainPeriod.ts} +4 -3
- package/example/src/chevre/task/deleteUnexpectedTasks.ts +23 -0
- package/example/src/chevre/task/emitRunning.ts +89 -0
- 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 +29 -6
- package/lib/chevre/index.d.ts +0 -2
- package/lib/chevre/index.js +0 -10
- package/lib/chevre/repo/member.d.ts +22 -4
- package/lib/chevre/repo/member.js +81 -27
- 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/product.js +9 -0
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +15 -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/order.d.ts +17 -2
- package/lib/chevre/repo/order.js +47 -8
- package/lib/chevre/repo/pendingReservation.js +1 -0
- package/lib/chevre/repo/product.js +12 -17
- package/lib/chevre/repo/role.d.ts +5 -4
- package/lib/chevre/repo/role.js +35 -32
- package/lib/chevre/repo/setting.d.ts +1 -10
- package/lib/chevre/repo/setting.js +2 -11
- package/lib/chevre/repo/stockHolder.d.ts +4 -27
- package/lib/chevre/repo/stockHolder.js +163 -175
- package/lib/chevre/repo/task.d.ts +58 -38
- package/lib/chevre/repo/task.js +126 -296
- package/lib/chevre/repo/transaction.js +10 -10
- package/lib/chevre/service/assetTransaction/cancelReservation/start.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/registerService.js +4 -0
- package/lib/chevre/service/assetTransaction/reserve/start/createSubReservations.js +19 -16
- 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/offer/product.js +4 -0
- package/lib/chevre/service/order/confirmPayTransaction.d.ts +6 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/processOrder.js +3 -3
- package/lib/chevre/service/task/acceptCOAOffer.d.ts +1 -1
- package/lib/chevre/service/task/aggregateOffers.d.ts +1 -1
- package/lib/chevre/service/task/aggregateOffers.js +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/aggregateScreeningEvent.js +1 -1
- package/lib/chevre/service/task/authorizePayment.d.ts +1 -1
- 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/cancelPendingReservation.js +1 -1
- package/lib/chevre/service/task/cancelReservation.d.ts +1 -1
- package/lib/chevre/service/task/cancelReservation.js +1 -1
- package/lib/chevre/service/task/checkMovieTicket.d.ts +1 -1
- package/lib/chevre/service/task/checkResource.d.ts +1 -1
- package/lib/chevre/service/task/checkResource.js +1 -1
- package/lib/chevre/service/task/confirmMoneyTransfer.d.ts +1 -1
- package/lib/chevre/service/task/confirmPayTransaction.d.ts +2 -2
- package/lib/chevre/service/task/confirmPayTransaction.js +3 -2
- 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 +6 -2
- package/lib/chevre/service/task/confirmReserveTransaction.js +3 -3
- 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/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/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/refund.d.ts +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/returnOrder.d.ts +1 -1
- package/lib/chevre/service/task/returnPayTransaction.d.ts +1 -1
- package/lib/chevre/service/task/returnPointAward.d.ts +1 -1
- package/lib/chevre/service/task/returnReserveTransaction.d.ts +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 +1 -1
- package/lib/chevre/service/task.d.ts +7 -29
- package/lib/chevre/service/task.js +9 -114
- package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.d.ts +11 -0
- package/lib/chevre/service/taskHandler/onOperationFailed/informTaskIfNeeded.js +105 -0
- package/lib/chevre/service/taskHandler/onOperationFailed.d.ts +17 -0
- package/lib/chevre/service/taskHandler/onOperationFailed.js +70 -0
- package/lib/chevre/service/taskHandler.d.ts +26 -0
- package/lib/chevre/service/taskHandler.js +97 -0
- package/lib/chevre/service/validation/validateEvent.d.ts +2 -2
- package/lib/chevre/service/validation/validateEvent.js +16 -10
- 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 +6 -4
- package/example/src/chevre/adminAuth/adminIdentity.ts +0 -38
- package/example/src/chevre/executeOneTask.ts +0 -41
- package/example/src/chevre/executeTaskIfExists.ts +0 -80
- package/example/src/chevre/findExecutableTask.ts +0 -50
- package/example/src/chevre/findSetting.ts +0 -79
- package/example/src/chevre/searchPermissions.ts +0 -46
- package/example/src/chevre/searchProductOffers.ts +0 -29
- package/example/src/chevre/stockHolder/checkIfConflicted.ts +0 -76
- package/example/src/chevre/stockHolder/checkRedisKeyCount.ts +0 -186
- package/example/src/chevre/stockHolder/migratePendingReservations.ts +0 -96
- package/example/src/chevre/stockHolder/playAroundStockHolder.ts +0 -256
- package/example/src/chevre/upsertProductsByProductId.ts +0 -100
- package/lib/chevre/adminAuth.d.ts +0 -2
- package/lib/chevre/adminAuth.js +0 -6
|
@@ -18,11 +18,18 @@ function createAggregation(params: {
|
|
|
18
18
|
}) => {
|
|
19
19
|
const { order, orderDateGte, orderDateLte } = params;
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
21
|
+
if (PROJECT_ID === '*') {
|
|
22
|
+
return repos.order.aggregateOrderOfCustomerGlobally({
|
|
23
|
+
orderDate: { $gte: orderDateGte, $lte: orderDateLte },
|
|
24
|
+
customer: { email: { $eq: String(order.customer.email) } }
|
|
25
|
+
});
|
|
26
|
+
} else {
|
|
27
|
+
return repos.order.aggregateOrderOfCustomerByProject({
|
|
28
|
+
project: { id: { $eq: PROJECT_ID } },
|
|
29
|
+
orderDate: { $gte: orderDateGte, $lte: orderDateLte },
|
|
30
|
+
customer: { email: { $eq: String(order.customer.email) } }
|
|
31
|
+
});
|
|
32
|
+
}
|
|
26
33
|
};
|
|
27
34
|
}
|
|
28
35
|
|
|
@@ -41,12 +48,16 @@ async function main() {
|
|
|
41
48
|
|
|
42
49
|
const cursor = orderRepo.getCursor(
|
|
43
50
|
{
|
|
44
|
-
'project.id': { $eq: PROJECT_ID },
|
|
51
|
+
...(PROJECT_ID !== '*') ? { 'project.id': { $eq: PROJECT_ID } } : undefined,
|
|
45
52
|
orderDate: {
|
|
46
53
|
$gte: orderDateGte,
|
|
47
54
|
$lte: orderDateLte
|
|
48
55
|
},
|
|
49
|
-
typeOf: { $eq: chevre.factory.order.OrderType.Order }
|
|
56
|
+
typeOf: { $eq: chevre.factory.order.OrderType.Order },
|
|
57
|
+
'customer.id': { // exclude pos,tvm
|
|
58
|
+
$exists: true,
|
|
59
|
+
$in: []
|
|
60
|
+
}
|
|
50
61
|
},
|
|
51
62
|
{
|
|
52
63
|
customer: 1,
|
|
@@ -79,11 +90,11 @@ async function main() {
|
|
|
79
90
|
if (typeof email === 'string') {
|
|
80
91
|
console.log(
|
|
81
92
|
'aggregating...',
|
|
82
|
-
order.project.id, order.orderNumber, order.orderDate, i);
|
|
93
|
+
order.project.id, order.orderNumber, email, order.orderDate, i);
|
|
83
94
|
const aggregateResult = await createAggregation({ order, orderDateGte, orderDateLte })({ order: orderRepo });
|
|
84
95
|
await aggregateOrderRepo.save(
|
|
85
96
|
{
|
|
86
|
-
project:
|
|
97
|
+
project: { id: PROJECT_ID, typeOf: chevre.factory.organizationType.Project },
|
|
87
98
|
identifier: email,
|
|
88
99
|
typeOf: chevre.factory.personType.Person
|
|
89
100
|
},
|
|
@@ -92,7 +103,7 @@ async function main() {
|
|
|
92
103
|
updateCount += 1;
|
|
93
104
|
console.log(
|
|
94
105
|
'aggregated.',
|
|
95
|
-
order.project.id, order.orderNumber, order.orderDate, i);
|
|
106
|
+
order.project.id, order.orderNumber, email, order.orderDate, i);
|
|
96
107
|
|
|
97
108
|
const sumGraceTime = (typeof aggregateResult.aggregation.sumGraceTime === 'number')
|
|
98
109
|
? aggregateResult.aggregation.sumGraceTime
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as moment from 'moment';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../../lib/index';
|
|
6
|
+
|
|
7
|
+
// tslint:disable-next-line:max-func-body-length
|
|
8
|
+
async function main() {
|
|
9
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
10
|
+
|
|
11
|
+
const taskRepo = await chevre.repository.Task.createInstance(mongoose.connection);
|
|
12
|
+
|
|
13
|
+
const aggregateDate = new Date();
|
|
14
|
+
const runsFrom: Date = moment(aggregateDate)
|
|
15
|
+
.utc()
|
|
16
|
+
// .tz('Asia/Tokyo')
|
|
17
|
+
.add(-1, 'days')
|
|
18
|
+
.startOf('days')
|
|
19
|
+
.toDate();
|
|
20
|
+
const runsThrough: Date = moment(aggregateDate)
|
|
21
|
+
.utc()
|
|
22
|
+
// .tz('Asia/Tokyo')
|
|
23
|
+
.add(-1, 'days')
|
|
24
|
+
.endOf('days')
|
|
25
|
+
.toDate();
|
|
26
|
+
|
|
27
|
+
const result = await taskRepo.aggregateTask({
|
|
28
|
+
project: {
|
|
29
|
+
id: { $ne: 'sskts-development' }
|
|
30
|
+
},
|
|
31
|
+
runsFrom,
|
|
32
|
+
runsThrough
|
|
33
|
+
});
|
|
34
|
+
console.dir(result, { depth: null });
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
main()
|
|
38
|
+
.then(() => {
|
|
39
|
+
console.log('success!');
|
|
40
|
+
})
|
|
41
|
+
.catch(console.error);
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as moment from 'moment';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../lib/index';
|
|
6
|
+
|
|
7
|
+
// const project = { id: String(process.env.PROJECT_ID) };
|
|
8
|
+
const MAX_LENGTH = 50;
|
|
9
|
+
const CHECK_DAYS = 60;
|
|
10
|
+
|
|
11
|
+
async function main() {
|
|
12
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
13
|
+
|
|
14
|
+
const orderRepo = await chevre.repository.Order.createInstance(mongoose.connection);
|
|
15
|
+
|
|
16
|
+
const cursor = orderRepo.getCursor(
|
|
17
|
+
{
|
|
18
|
+
typeOf: { $eq: chevre.factory.order.OrderType.Order },
|
|
19
|
+
orderDate: {
|
|
20
|
+
$gte: moment()
|
|
21
|
+
.add(-CHECK_DAYS, 'days')
|
|
22
|
+
.toDate()
|
|
23
|
+
}
|
|
24
|
+
// _id: { $eq: '67de46777ec0510590b68922' }
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
customer: 1,
|
|
28
|
+
project: 1,
|
|
29
|
+
orderDate: 1
|
|
30
|
+
}
|
|
31
|
+
);
|
|
32
|
+
console.log('docs found');
|
|
33
|
+
|
|
34
|
+
let i = 0;
|
|
35
|
+
let exceededCount = 0;
|
|
36
|
+
await cursor.eachAsync(async (doc) => {
|
|
37
|
+
i += 1;
|
|
38
|
+
const order: Pick<
|
|
39
|
+
chevre.factory.order.IOrder,
|
|
40
|
+
'customer' | 'project' | 'orderDate'
|
|
41
|
+
> = doc.toObject();
|
|
42
|
+
|
|
43
|
+
const attributesNames: (keyof chevre.factory.order.ICustomer)[] = [
|
|
44
|
+
'address',
|
|
45
|
+
'age',
|
|
46
|
+
'email',
|
|
47
|
+
'givenName',
|
|
48
|
+
'familyName',
|
|
49
|
+
'gender',
|
|
50
|
+
'name',
|
|
51
|
+
'url',
|
|
52
|
+
'telephone'
|
|
53
|
+
];
|
|
54
|
+
|
|
55
|
+
const maxLengthNotExceeded = attributesNames.every((attributesName) => {
|
|
56
|
+
const attributesValue = order.customer[attributesName];
|
|
57
|
+
if (attributesValue === undefined) {
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
if (typeof attributesValue !== 'string') {
|
|
61
|
+
throw new Error(`${attributesName}: ${attributesValue} must be string. ${order.project.id}`);
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
return attributesValue.length <= MAX_LENGTH;
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
if (maxLengthNotExceeded) {
|
|
68
|
+
// no op
|
|
69
|
+
process.stdout.write('-');
|
|
70
|
+
} else {
|
|
71
|
+
exceededCount += 1;
|
|
72
|
+
console.log('\n');
|
|
73
|
+
console.log('maxLengthExceeded.', order.project.id, order.customer, order.orderDate, i);
|
|
74
|
+
}
|
|
75
|
+
});
|
|
76
|
+
|
|
77
|
+
console.log('\n');
|
|
78
|
+
console.log(i, 'docs checked');
|
|
79
|
+
console.log(exceededCount, 'docs exceeded');
|
|
80
|
+
|
|
81
|
+
// let result: any;
|
|
82
|
+
// const attributesNames = [
|
|
83
|
+
// // 'customer.address',
|
|
84
|
+
// // 'customer.age',
|
|
85
|
+
// 'customer.email',
|
|
86
|
+
// 'customer.givenName',
|
|
87
|
+
// 'customer.familyName'
|
|
88
|
+
// // 'customer.gender',
|
|
89
|
+
// // 'customer.name',
|
|
90
|
+
// // 'customer.url',
|
|
91
|
+
// ];
|
|
92
|
+
// for (const attributesName of attributesNames) {
|
|
93
|
+
// console.log('how is', attributesName, '?');
|
|
94
|
+
// result = await orderRepo.checkCustomerAttributesLength({
|
|
95
|
+
// attributesName,
|
|
96
|
+
// length: MAX_LENGTH
|
|
97
|
+
// });
|
|
98
|
+
// // tslint:disable-next-line:no-null-keyword
|
|
99
|
+
// console.dir(result, { depth: null });
|
|
100
|
+
// console.log('how is', attributesName, '?', result.length, 'results found');
|
|
101
|
+
// }
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
main()
|
|
105
|
+
.then(() => {
|
|
106
|
+
console.log('\n');
|
|
107
|
+
console.log('success!');
|
|
108
|
+
})
|
|
109
|
+
.catch(console.error);
|
|
@@ -30,7 +30,7 @@ async function main() {
|
|
|
30
30
|
]
|
|
31
31
|
});
|
|
32
32
|
|
|
33
|
-
const result = await (await chevre.service.
|
|
33
|
+
const result = await (await chevre.service.notification.createService()).notifyAbortedTasksByEmail({
|
|
34
34
|
dateAbortedGte: moment()
|
|
35
35
|
// tslint:disable-next-line:no-magic-numbers
|
|
36
36
|
.add(-10, 'days')
|
|
@@ -11,7 +11,7 @@ mongoose.Model.on('index', (...args) => {
|
|
|
11
11
|
async function main() {
|
|
12
12
|
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
13
13
|
|
|
14
|
-
await chevre.repository.
|
|
14
|
+
await chevre.repository.Task.createInstance(mongoose.connection);
|
|
15
15
|
console.log('success!');
|
|
16
16
|
}
|
|
17
17
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as mongoose from 'mongoose';
|
|
3
|
+
|
|
4
|
+
import { chevre } from '../../../../lib/index';
|
|
5
|
+
|
|
6
|
+
async function main() {
|
|
7
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
8
|
+
|
|
9
|
+
const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);
|
|
10
|
+
|
|
11
|
+
const roleNames = [
|
|
12
|
+
chevre.factory.role.organizationRole.RoleName.InventoryManager,
|
|
13
|
+
chevre.factory.role.organizationRole.RoleName.SellersOwner,
|
|
14
|
+
chevre.factory.role.organizationRole.RoleName.SellersInventoryManager
|
|
15
|
+
];
|
|
16
|
+
for (const roleName of roleNames) {
|
|
17
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
18
|
+
roleName: { $eq: roleName },
|
|
19
|
+
permission: 'eventOffers.*'
|
|
20
|
+
});
|
|
21
|
+
console.log(result, roleName);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
main()
|
|
26
|
+
.then()
|
|
27
|
+
.catch(console.error);
|
package/example/src/chevre/roles/{addAdminInventoryManagerRole.ts → addProjectCreatorRole.ts}
RENAMED
|
@@ -9,13 +9,11 @@ async function main() {
|
|
|
9
9
|
const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);
|
|
10
10
|
|
|
11
11
|
const roleNames = [
|
|
12
|
-
|
|
12
|
+
'projectCreator'
|
|
13
13
|
];
|
|
14
14
|
const permissions = [
|
|
15
|
-
'
|
|
16
|
-
'
|
|
17
|
-
'admin.sellers.eventSeries.*',
|
|
18
|
-
'admin.sellers.read'
|
|
15
|
+
'aggregations.read',
|
|
16
|
+
'projects.create'
|
|
19
17
|
];
|
|
20
18
|
for (const roleName of roleNames) {
|
|
21
19
|
const existingRoles = await roleRepo.projectFields(
|
|
@@ -26,8 +24,8 @@ async function main() {
|
|
|
26
24
|
);
|
|
27
25
|
if (existingRoles.length === 0) {
|
|
28
26
|
const createResult = await roleRepo.create({
|
|
29
|
-
roleName: roleName,
|
|
30
|
-
member: { typeOf: chevre.factory.
|
|
27
|
+
roleName: <any>roleName,
|
|
28
|
+
member: { typeOf: chevre.factory.personType.Person },
|
|
31
29
|
memberOf: { typeOf: chevre.factory.organizationType.Project },
|
|
32
30
|
permissions: []
|
|
33
31
|
});
|
|
@@ -35,7 +33,7 @@ async function main() {
|
|
|
35
33
|
}
|
|
36
34
|
for (const permission of permissions) {
|
|
37
35
|
const result = await roleRepo.addPermissionIfNotExists({
|
|
38
|
-
roleName: { $eq: roleName },
|
|
36
|
+
roleName: { $eq: <any>roleName },
|
|
39
37
|
permission
|
|
40
38
|
});
|
|
41
39
|
console.log('permission added.', result, roleName);
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import type { CognitoIdentityProvider as CognitoIdentityServiceProvider } from '@aws-sdk/client-cognito-identity-provider';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { IGlobalMember } from '../../../../lib/chevre/repo/mongoose/schemas/member/global';
|
|
6
|
+
import { chevre } from '../../../../lib/index';
|
|
7
|
+
|
|
8
|
+
const { PROJECT_CREATOR_SUB } = process.env;
|
|
9
|
+
|
|
10
|
+
let cognitoIdentityServiceProvider: CognitoIdentityServiceProvider | undefined;
|
|
11
|
+
|
|
12
|
+
async function main() {
|
|
13
|
+
if (typeof PROJECT_CREATOR_SUB !== 'string') {
|
|
14
|
+
throw new Error('PROJECT_CREATOR_SUB setting required');
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
18
|
+
|
|
19
|
+
const memberRepo = await chevre.repository.Member.createInstance(mongoose.connection);
|
|
20
|
+
const settingRepo = await chevre.repository.Setting.createInstance(mongoose.connection);
|
|
21
|
+
const setting = await settingRepo.findOne({ project: { id: { $eq: '*' } } }, ['userPoolIdNew']);
|
|
22
|
+
if (typeof setting?.userPoolIdNew !== 'string') {
|
|
23
|
+
throw new chevre.factory.errors.NotFound('setting.userPoolIdNew');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
let globalMember: IGlobalMember;
|
|
27
|
+
|
|
28
|
+
if (cognitoIdentityServiceProvider === undefined) {
|
|
29
|
+
const { CognitoIdentityProvider } = await import('@aws-sdk/client-cognito-identity-provider');
|
|
30
|
+
const { fromEnv } = await import('@aws-sdk/credential-providers');
|
|
31
|
+
cognitoIdentityServiceProvider = new CognitoIdentityProvider({
|
|
32
|
+
apiVersion: 'latest',
|
|
33
|
+
region: 'ap-northeast-1',
|
|
34
|
+
credentials: fromEnv()
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const personRepo = await chevre.repository.Person.createInstance({
|
|
38
|
+
userPoolId: setting.userPoolIdNew,
|
|
39
|
+
cognitoIdentityServiceProvider
|
|
40
|
+
});
|
|
41
|
+
const profile = await personRepo.findById({ userId: PROJECT_CREATOR_SUB });
|
|
42
|
+
const memberName = (typeof profile.givenName === 'string' && typeof profile.familyName === 'string')
|
|
43
|
+
? `${profile.givenName} ${profile.familyName}`
|
|
44
|
+
: profile.memberOf?.membershipNumber;
|
|
45
|
+
|
|
46
|
+
globalMember = {
|
|
47
|
+
typeOf: chevre.factory.role.RoleType.OrganizationRole,
|
|
48
|
+
member: {
|
|
49
|
+
typeOf: chevre.factory.personType.Person,
|
|
50
|
+
id: profile.id,
|
|
51
|
+
name: memberName,
|
|
52
|
+
username: profile.memberOf?.membershipNumber,
|
|
53
|
+
hasRole: [{
|
|
54
|
+
typeOf: chevre.factory.role.RoleType.OrganizationRole,
|
|
55
|
+
roleName: <any>'projectCreator'
|
|
56
|
+
}]
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
console.log(profile, globalMember);
|
|
60
|
+
|
|
61
|
+
const existingGlobalMemberRoles = await memberRepo.findGlobalRoleNamesByMember({ member: { id: { $eq: globalMember.member.id } } });
|
|
62
|
+
console.log('existingGlobalMemberRoles:', existingGlobalMemberRoles);
|
|
63
|
+
|
|
64
|
+
// 権限作成
|
|
65
|
+
await memberRepo.createGlobalMember([globalMember]);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
main()
|
|
69
|
+
.then(() => {
|
|
70
|
+
console.log('success!');
|
|
71
|
+
})
|
|
72
|
+
.catch(console.error);
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
// import * as moment from 'moment';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../../lib/index';
|
|
6
|
+
|
|
7
|
+
const formatter = new Intl.NumberFormat('ja-JP');
|
|
8
|
+
|
|
9
|
+
const PROJECT_ID = String(process.env.PROJECT_ID);
|
|
10
|
+
const memberId = 'b3640a78-babd-4da4-81d3-7dcf4881a4a5';
|
|
11
|
+
|
|
12
|
+
async function main() {
|
|
13
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI);
|
|
14
|
+
|
|
15
|
+
const memberRepo = await chevre.repository.Member.createInstance(mongoose.connection);
|
|
16
|
+
const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);
|
|
17
|
+
|
|
18
|
+
let startTime: [number, number] = process.hrtime();
|
|
19
|
+
let diff: [number, number] = process.hrtime(startTime);
|
|
20
|
+
let result: any;
|
|
21
|
+
|
|
22
|
+
startTime = process.hrtime();
|
|
23
|
+
result = await (await chevre.service.iam.createService()).findProjectPermissionsByMember({
|
|
24
|
+
project: { id: PROJECT_ID },
|
|
25
|
+
member: {
|
|
26
|
+
id: memberId,
|
|
27
|
+
memberOf: {
|
|
28
|
+
id: PROJECT_ID,
|
|
29
|
+
typeOf: chevre.factory.organizationType.Project
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
})({
|
|
33
|
+
member: memberRepo,
|
|
34
|
+
role: roleRepo
|
|
35
|
+
});
|
|
36
|
+
diff = process.hrtime(startTime);
|
|
37
|
+
console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
38
|
+
console.log(result.roleNames.length, 'roleNames found');
|
|
39
|
+
console.log(result.permissions.length, 'permissions found');
|
|
40
|
+
|
|
41
|
+
startTime = process.hrtime();
|
|
42
|
+
result = await (await chevre.service.iam.createService()).findProjectPermissionsByMember({
|
|
43
|
+
project: { id: PROJECT_ID },
|
|
44
|
+
member: {
|
|
45
|
+
id: memberId,
|
|
46
|
+
memberOf: {
|
|
47
|
+
id: PROJECT_ID,
|
|
48
|
+
typeOf: chevre.factory.organizationType.Project
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
})({
|
|
52
|
+
member: memberRepo,
|
|
53
|
+
role: roleRepo
|
|
54
|
+
});
|
|
55
|
+
diff = process.hrtime(startTime);
|
|
56
|
+
console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
57
|
+
console.log(result.roleNames.length, 'roleNames found');
|
|
58
|
+
console.log(result.permissions.length, 'permissions found');
|
|
59
|
+
|
|
60
|
+
startTime = process.hrtime();
|
|
61
|
+
result = await (await chevre.service.iam.createService()).findProjectPermissionsByMember({
|
|
62
|
+
project: { id: PROJECT_ID },
|
|
63
|
+
member: {
|
|
64
|
+
id: memberId,
|
|
65
|
+
memberOf: {
|
|
66
|
+
id: PROJECT_ID,
|
|
67
|
+
typeOf: chevre.factory.organizationType.Project
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
})({
|
|
71
|
+
member: memberRepo,
|
|
72
|
+
role: roleRepo
|
|
73
|
+
});
|
|
74
|
+
diff = process.hrtime(startTime);
|
|
75
|
+
console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
76
|
+
console.log(result.roleNames.length, 'roleNames found');
|
|
77
|
+
console.log(result.permissions.length, 'permissions found');
|
|
78
|
+
|
|
79
|
+
console.log(result);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
main()
|
|
83
|
+
.then(console.log)
|
|
84
|
+
.catch(console.error);
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
// import * as moment from 'moment';
|
|
3
|
+
import * as mongoose from 'mongoose';
|
|
4
|
+
|
|
5
|
+
import { chevre } from '../../../../lib/index';
|
|
6
|
+
|
|
7
|
+
const formatter = new Intl.NumberFormat('ja-JP');
|
|
8
|
+
|
|
9
|
+
const PROJECT_ID = String(process.env.PROJECT_ID);
|
|
10
|
+
const memberId = 'xxx';
|
|
11
|
+
|
|
12
|
+
// tslint:disable-next-line:max-func-body-length
|
|
13
|
+
async function main() {
|
|
14
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI);
|
|
15
|
+
|
|
16
|
+
const memberRepo = await chevre.repository.Member.createInstance(mongoose.connection);
|
|
17
|
+
|
|
18
|
+
let startTime: [number, number] = process.hrtime();
|
|
19
|
+
let diff: [number, number] = process.hrtime(startTime);
|
|
20
|
+
let result: any;
|
|
21
|
+
|
|
22
|
+
// startTime = process.hrtime();
|
|
23
|
+
// result = await memberRepo.aggregateRoleNames({
|
|
24
|
+
// project: { id: { $eq: PROJECT_ID } },
|
|
25
|
+
// member: {
|
|
26
|
+
// id: { $eq: memberId },
|
|
27
|
+
// memberOf: {
|
|
28
|
+
// id: { $eq: PROJECT_ID },
|
|
29
|
+
// typeOf: { $eq: chevre.factory.organizationType.Project }
|
|
30
|
+
// }
|
|
31
|
+
// }
|
|
32
|
+
// });
|
|
33
|
+
// diff = process.hrtime(startTime);
|
|
34
|
+
// console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
35
|
+
// console.log(result.length, 'result found');
|
|
36
|
+
|
|
37
|
+
// startTime = process.hrtime();
|
|
38
|
+
// result = await memberRepo.aggregateRoleNames({
|
|
39
|
+
// project: { id: { $eq: PROJECT_ID } },
|
|
40
|
+
// member: {
|
|
41
|
+
// id: { $eq: memberId },
|
|
42
|
+
// memberOf: {
|
|
43
|
+
// id: { $eq: PROJECT_ID },
|
|
44
|
+
// typeOf: { $eq: chevre.factory.organizationType.Project }
|
|
45
|
+
// }
|
|
46
|
+
// }
|
|
47
|
+
// });
|
|
48
|
+
// diff = process.hrtime(startTime);
|
|
49
|
+
// console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
50
|
+
// console.log(result.length, 'result found');
|
|
51
|
+
|
|
52
|
+
// startTime = process.hrtime();
|
|
53
|
+
// result = await memberRepo.aggregateRoleNames({
|
|
54
|
+
// project: { id: { $eq: PROJECT_ID } },
|
|
55
|
+
// member: {
|
|
56
|
+
// id: { $eq: memberId },
|
|
57
|
+
// memberOf: {
|
|
58
|
+
// id: { $eq: PROJECT_ID },
|
|
59
|
+
// typeOf: { $eq: chevre.factory.organizationType.Project }
|
|
60
|
+
// }
|
|
61
|
+
// }
|
|
62
|
+
// });
|
|
63
|
+
// diff = process.hrtime(startTime);
|
|
64
|
+
// console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
65
|
+
// console.log(result.length, 'result found');
|
|
66
|
+
// console.log(result);
|
|
67
|
+
|
|
68
|
+
startTime = process.hrtime();
|
|
69
|
+
result = await memberRepo.findRoleNamesByMember({
|
|
70
|
+
project: { id: { $eq: PROJECT_ID } },
|
|
71
|
+
member: {
|
|
72
|
+
id: { $eq: memberId },
|
|
73
|
+
memberOf: {
|
|
74
|
+
id: { $eq: PROJECT_ID },
|
|
75
|
+
typeOf: { $eq: chevre.factory.organizationType.Project }
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
diff = process.hrtime(startTime);
|
|
80
|
+
console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
81
|
+
console.log(result.length, 'result found');
|
|
82
|
+
|
|
83
|
+
startTime = process.hrtime();
|
|
84
|
+
result = await memberRepo.findRoleNamesByMember({
|
|
85
|
+
project: { id: { $eq: PROJECT_ID } },
|
|
86
|
+
member: {
|
|
87
|
+
id: { $eq: memberId },
|
|
88
|
+
memberOf: {
|
|
89
|
+
id: { $eq: PROJECT_ID },
|
|
90
|
+
typeOf: { $eq: chevre.factory.organizationType.Project }
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
diff = process.hrtime(startTime);
|
|
95
|
+
console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
96
|
+
console.log(result.length, 'result found');
|
|
97
|
+
|
|
98
|
+
startTime = process.hrtime();
|
|
99
|
+
result = await memberRepo.findRoleNamesByMember({
|
|
100
|
+
project: { id: { $eq: PROJECT_ID } },
|
|
101
|
+
member: {
|
|
102
|
+
id: { $eq: memberId },
|
|
103
|
+
memberOf: {
|
|
104
|
+
id: { $eq: PROJECT_ID },
|
|
105
|
+
typeOf: { $eq: chevre.factory.organizationType.Project }
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
diff = process.hrtime(startTime);
|
|
110
|
+
console.log('diff:', [diff[0], formatter.format(diff[1])]);
|
|
111
|
+
console.log(result.length, 'result found');
|
|
112
|
+
console.log(result);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
main()
|
|
116
|
+
.then(console.log)
|
|
117
|
+
.catch(console.error);
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as mongoose from 'mongoose';
|
|
3
|
+
|
|
4
|
+
import { chevre } from '../../../../lib/index';
|
|
5
|
+
|
|
6
|
+
async function main() {
|
|
7
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
8
|
+
|
|
9
|
+
const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);
|
|
10
|
+
|
|
11
|
+
const permissions = [
|
|
12
|
+
'assetTransactions.cancelReservation.write',
|
|
13
|
+
'orders.read',
|
|
14
|
+
'orders.update',
|
|
15
|
+
'reservations.attended',
|
|
16
|
+
'reservations.read'
|
|
17
|
+
];
|
|
18
|
+
for (const permission of permissions) {
|
|
19
|
+
const roles = await roleRepo.projectFields(
|
|
20
|
+
{
|
|
21
|
+
permissions: { $eq: permission }
|
|
22
|
+
},
|
|
23
|
+
['roleName']
|
|
24
|
+
);
|
|
25
|
+
console.log(roles, permission);
|
|
26
|
+
for (const { roleName } of roles) {
|
|
27
|
+
const result = await roleRepo.removePermissionIfExists({
|
|
28
|
+
roleName: { $eq: roleName },
|
|
29
|
+
permission
|
|
30
|
+
});
|
|
31
|
+
console.log('permission removed.', permission, result, roleName);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
main()
|
|
37
|
+
.then()
|
|
38
|
+
.catch(console.error);
|
|
@@ -17,7 +17,7 @@ async function main() {
|
|
|
17
17
|
});
|
|
18
18
|
await client.connect();
|
|
19
19
|
|
|
20
|
-
const itemAvailabilityRepo = await chevre.repository.StockHolder.createInstance(
|
|
20
|
+
const itemAvailabilityRepo = await chevre.repository.StockHolder.createInstance({ connection: mongoose.connection });
|
|
21
21
|
|
|
22
22
|
const result = await itemAvailabilityRepo.searchHolders({
|
|
23
23
|
project,
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as mongoose from 'mongoose';
|
|
3
|
+
|
|
4
|
+
import { chevre } from '../../../lib/index';
|
|
5
|
+
|
|
6
|
+
const PROJECT_ID = String(process.env.PROJECT_ID);
|
|
7
|
+
|
|
8
|
+
async function main() {
|
|
9
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI);
|
|
10
|
+
|
|
11
|
+
const productRepo = await chevre.repository.Product.createInstance(mongoose.connection);
|
|
12
|
+
|
|
13
|
+
const products = await productRepo.projectFields(
|
|
14
|
+
{
|
|
15
|
+
limit: 10,
|
|
16
|
+
project: { id: { $eq: PROJECT_ID } },
|
|
17
|
+
additionalPropertyMatch: { nameEq: 'xxxxx' }
|
|
18
|
+
// seller: { id: { $eq: 'xxx' } }
|
|
19
|
+
},
|
|
20
|
+
['additionalProperty', 'productID']
|
|
21
|
+
);
|
|
22
|
+
console.log(products);
|
|
23
|
+
console.log(products.length, 'products found');
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
main()
|
|
27
|
+
.then(console.log)
|
|
28
|
+
.catch(console.error);
|