@chevre/domain 22.11.0-alpha.5 → 22.11.0-alpha.6
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/roles/addAdminPermissionIfNotExists.ts +129 -0
- package/example/src/chevre/roles/addPermissionIfNotExists.ts +39 -6
- package/example/src/chevre/stockHolder/checkRedisKeyCount.ts +17 -21
- package/example/src/chevre/unsetUnnecessaryFields.ts +6 -5
- package/lib/chevre/repo/setting.d.ts +5 -1
- package/lib/chevre/repo/setting.js +6 -0
- package/lib/chevre/service/validation/validateOrder.js +55 -37
- package/package.json +1 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
// tslint:disable:no-console
|
|
2
|
+
import * as mongoose from 'mongoose';
|
|
3
|
+
|
|
4
|
+
import { chevre } from '../../../../lib/index';
|
|
5
|
+
|
|
6
|
+
// tslint:disable-next-line:max-func-body-length
|
|
7
|
+
async function main() {
|
|
8
|
+
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
9
|
+
|
|
10
|
+
const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);
|
|
11
|
+
|
|
12
|
+
let roleNames = [
|
|
13
|
+
chevre.factory.role.organizationRole.RoleName.InventoryManager
|
|
14
|
+
];
|
|
15
|
+
let permissions = [
|
|
16
|
+
'admin.creativeWorks.*',
|
|
17
|
+
'admin.sellers.eventSeries.*',
|
|
18
|
+
'admin.customers.read',
|
|
19
|
+
'admin.offers.read',
|
|
20
|
+
'admin.offers.create',
|
|
21
|
+
'admin.offerCatalogs.create',
|
|
22
|
+
'admin.offerCatalogItems.read',
|
|
23
|
+
'admin.offerCatalogItems.create',
|
|
24
|
+
'admin.products.create',
|
|
25
|
+
'admin.sellers.events.create',
|
|
26
|
+
'admin.sellers.events.update'
|
|
27
|
+
];
|
|
28
|
+
for (const roleName of roleNames) {
|
|
29
|
+
for (const permission of permissions) {
|
|
30
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
31
|
+
roleName: { $eq: roleName },
|
|
32
|
+
permission
|
|
33
|
+
});
|
|
34
|
+
console.log('permission added.', result, roleName);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
roleNames = [
|
|
39
|
+
chevre.factory.role.organizationRole.RoleName.SellersOwner
|
|
40
|
+
];
|
|
41
|
+
permissions = [
|
|
42
|
+
'admin.sellers.eventSeries.*',
|
|
43
|
+
'admin.customers.read',
|
|
44
|
+
'admin.offers.read',
|
|
45
|
+
'admin.offerCatalogItems.read',
|
|
46
|
+
'admin.sellers.events.create',
|
|
47
|
+
'admin.sellers.events.update',
|
|
48
|
+
'admin.sellers.orders.read',
|
|
49
|
+
'admin.sellers.reservations.read',
|
|
50
|
+
'admin.sellers.assetTransactions.cancelReservation.write'
|
|
51
|
+
];
|
|
52
|
+
for (const roleName of roleNames) {
|
|
53
|
+
for (const permission of permissions) {
|
|
54
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
55
|
+
roleName: { $eq: roleName },
|
|
56
|
+
permission
|
|
57
|
+
});
|
|
58
|
+
console.log('permission added.', result, roleName);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
roleNames = [
|
|
63
|
+
chevre.factory.role.organizationRole.RoleName.SellersInventoryManager
|
|
64
|
+
];
|
|
65
|
+
permissions = [
|
|
66
|
+
'admin.sellers.eventSeries.*',
|
|
67
|
+
'admin.customers.read',
|
|
68
|
+
'admin.offers.read',
|
|
69
|
+
'admin.offerCatalogItems.read',
|
|
70
|
+
'admin.sellers.events.create',
|
|
71
|
+
'admin.sellers.events.update'
|
|
72
|
+
];
|
|
73
|
+
for (const roleName of roleNames) {
|
|
74
|
+
for (const permission of permissions) {
|
|
75
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
76
|
+
roleName: { $eq: roleName },
|
|
77
|
+
permission
|
|
78
|
+
});
|
|
79
|
+
console.log('permission added.', result, roleName);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
roleNames = [
|
|
84
|
+
chevre.factory.role.organizationRole.RoleName.TicketClerk
|
|
85
|
+
];
|
|
86
|
+
permissions = [
|
|
87
|
+
'admin.customers.read',
|
|
88
|
+
'admin.offers.read',
|
|
89
|
+
'admin.sellers.notes.create',
|
|
90
|
+
'admin.sellers.notes.read',
|
|
91
|
+
'admin.sellers.notes.update',
|
|
92
|
+
'admin.sellers.orders.read',
|
|
93
|
+
'admin.sellers.orders.update',
|
|
94
|
+
'admin.sellers.reservations.read',
|
|
95
|
+
'admin.sellers.reservations.attended',
|
|
96
|
+
'admin.sellers.assetTransactions.cancelReservation.write'
|
|
97
|
+
];
|
|
98
|
+
for (const roleName of roleNames) {
|
|
99
|
+
for (const permission of permissions) {
|
|
100
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
101
|
+
roleName: { $eq: roleName },
|
|
102
|
+
permission
|
|
103
|
+
});
|
|
104
|
+
console.log('permission added.', result, roleName);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
roleNames = [
|
|
109
|
+
chevre.factory.role.organizationRole.RoleName.TicketCollector
|
|
110
|
+
];
|
|
111
|
+
permissions = [
|
|
112
|
+
'admin.sellers.reservations.read',
|
|
113
|
+
'admin.sellers.reservations.attended'
|
|
114
|
+
];
|
|
115
|
+
for (const roleName of roleNames) {
|
|
116
|
+
for (const permission of permissions) {
|
|
117
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
118
|
+
roleName: { $eq: roleName },
|
|
119
|
+
permission
|
|
120
|
+
});
|
|
121
|
+
console.log('permission added.', result, roleName);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
main()
|
|
128
|
+
.then()
|
|
129
|
+
.catch(console.error);
|
|
@@ -8,17 +8,50 @@ async function main() {
|
|
|
8
8
|
|
|
9
9
|
const roleRepo = await chevre.repository.Role.createInstance(mongoose.connection);
|
|
10
10
|
|
|
11
|
-
const roleNames = [
|
|
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
|
+
let roleNames = [
|
|
24
|
+
chevre.factory.role.organizationRole.RoleName.InventoryManager
|
|
25
|
+
];
|
|
26
|
+
let permissions = [
|
|
27
|
+
'admin.creativeWorks.*'
|
|
28
|
+
];
|
|
29
|
+
for (const roleName of roleNames) {
|
|
30
|
+
for (const permission of permissions) {
|
|
31
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
32
|
+
roleName: { $eq: roleName },
|
|
33
|
+
permission
|
|
34
|
+
});
|
|
35
|
+
console.log('permission added.', result, roleName);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
roleNames = [
|
|
12
40
|
chevre.factory.role.organizationRole.RoleName.InventoryManager,
|
|
13
41
|
chevre.factory.role.organizationRole.RoleName.SellersOwner,
|
|
14
42
|
chevre.factory.role.organizationRole.RoleName.SellersInventoryManager
|
|
15
43
|
];
|
|
44
|
+
permissions = [
|
|
45
|
+
'admin.sellers.eventSeries.*'
|
|
46
|
+
];
|
|
16
47
|
for (const roleName of roleNames) {
|
|
17
|
-
const
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
48
|
+
for (const permission of permissions) {
|
|
49
|
+
const result = await roleRepo.addPermissionIfNotExists({
|
|
50
|
+
roleName: { $eq: roleName },
|
|
51
|
+
permission
|
|
52
|
+
});
|
|
53
|
+
console.log('permission added.', result, roleName);
|
|
54
|
+
}
|
|
22
55
|
}
|
|
23
56
|
}
|
|
24
57
|
|
|
@@ -38,7 +38,6 @@ function countRedisKeyByProject(params: {
|
|
|
38
38
|
{
|
|
39
39
|
'project.id': {
|
|
40
40
|
$eq: params.project.id
|
|
41
|
-
// $in: useMongoAsStockHolderProjects
|
|
42
41
|
},
|
|
43
42
|
// startDate: {
|
|
44
43
|
// $gte: params.now
|
|
@@ -93,30 +92,27 @@ function countRedisKeyByProject(params: {
|
|
|
93
92
|
async function main() {
|
|
94
93
|
const eventRepo = await chevre.repository.Event.createInstance(mongoose.connection);
|
|
95
94
|
const projectRepo = await chevre.repository.Project.createInstance(mongoose.connection);
|
|
96
|
-
const settingRepo = await chevre.repository.Setting.createInstance(mongoose.connection);
|
|
95
|
+
// const settingRepo = await chevre.repository.Setting.createInstance(mongoose.connection);
|
|
97
96
|
const stockHolderRepo = await chevre.repository.StockHolder.createInstance(
|
|
98
97
|
client,
|
|
99
98
|
mongoose.connection
|
|
100
99
|
);
|
|
101
100
|
|
|
102
|
-
const setting = await settingRepo.findOne(
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
);
|
|
106
|
-
const useMongoAsStockHolder = setting?.useMongoAsStockHolder === true;
|
|
107
|
-
let
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
useMongoAsStockHolderProjects = useMongoAsStockHolderProjects.filter((id) => id.slice(0, 6) !== 'sskts-');
|
|
101
|
+
// const setting = await settingRepo.findOne(
|
|
102
|
+
// { project: { id: { $eq: '*' } } },
|
|
103
|
+
// ['useMongoAsStockHolder']
|
|
104
|
+
// );
|
|
105
|
+
// const useMongoAsStockHolder = setting?.useMongoAsStockHolder === true;
|
|
106
|
+
let checkingProjects: string[] = [];
|
|
107
|
+
// 全プロジェクト
|
|
108
|
+
checkingProjects = (await projectRepo.projectFields(
|
|
109
|
+
{
|
|
110
|
+
// id: { $eq: 'xxx' }
|
|
111
|
+
},
|
|
112
|
+
['id']
|
|
113
|
+
)).map(({ id }) => id);
|
|
114
|
+
|
|
115
|
+
checkingProjects = checkingProjects.filter((id) => id.slice(0, 6) !== 'sskts-');
|
|
120
116
|
|
|
121
117
|
const results: {
|
|
122
118
|
project: { id: string };
|
|
@@ -127,7 +123,7 @@ async function main() {
|
|
|
127
123
|
const now = moment()
|
|
128
124
|
.add(0, 'days')
|
|
129
125
|
.toDate();
|
|
130
|
-
for (const projectId of
|
|
126
|
+
for (const projectId of checkingProjects) {
|
|
131
127
|
const { checkedCount, redisKeyCount } = await countRedisKeyByProject({
|
|
132
128
|
project: { id: projectId },
|
|
133
129
|
now
|
|
@@ -9,17 +9,18 @@ import { chevre } from '../../../lib/index';
|
|
|
9
9
|
async function main() {
|
|
10
10
|
await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
|
|
11
11
|
|
|
12
|
-
const
|
|
12
|
+
const settingRepo = await chevre.repository.Setting.createInstance(mongoose.connection);
|
|
13
13
|
|
|
14
14
|
let updateResult: any;
|
|
15
15
|
|
|
16
|
-
updateResult = await
|
|
16
|
+
updateResult = await settingRepo.unsetUnnecessaryFields({
|
|
17
17
|
filter: {
|
|
18
|
-
'
|
|
19
|
-
// _id: { $eq: 'blj55y1mo' }
|
|
18
|
+
'project.id': { $eq: '*' }
|
|
20
19
|
},
|
|
21
20
|
$unset: {
|
|
22
|
-
|
|
21
|
+
useMongo4confirmationNumberFrom: 1,
|
|
22
|
+
useMongo4orderNumberFrom: 1,
|
|
23
|
+
useMongo4transactionNumberFrom: 1
|
|
23
24
|
}
|
|
24
25
|
});
|
|
25
26
|
console.log(updateResult);
|
|
@@ -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 };
|
|
@@ -32,4 +32,8 @@ export declare class SettingRepo {
|
|
|
32
32
|
}, update: {
|
|
33
33
|
$set: any;
|
|
34
34
|
}): Promise<import("mongoose").UpdateWriteOpResult>;
|
|
35
|
+
unsetUnnecessaryFields(params: {
|
|
36
|
+
filter: FilterQuery<ISetting>;
|
|
37
|
+
$unset: any;
|
|
38
|
+
}): Promise<import("mongoose").UpdateWriteOpResult>;
|
|
35
39
|
}
|
|
@@ -65,5 +65,11 @@ class SettingRepo {
|
|
|
65
65
|
.exec();
|
|
66
66
|
});
|
|
67
67
|
}
|
|
68
|
+
unsetUnnecessaryFields(params) {
|
|
69
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
70
|
+
return this.settingModel.updateMany(params.filter, { $unset: params.$unset }, { timestamps: false })
|
|
71
|
+
.exec();
|
|
72
|
+
});
|
|
73
|
+
}
|
|
68
74
|
}
|
|
69
75
|
exports.SettingRepo = SettingRepo;
|
|
@@ -12,35 +12,51 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.validateOrder = validateOrder;
|
|
13
13
|
// import * as createDebug from 'debug';
|
|
14
14
|
const moment = require("moment");
|
|
15
|
-
const util = require("util");
|
|
16
15
|
const factory = require("../../factory");
|
|
17
16
|
const factory_1 = require("../offer/event/authorize/factory");
|
|
18
17
|
const factory_2 = require("../offer/product/factory");
|
|
19
18
|
const validateMovieTicket_1 = require("../transaction/placeOrder/confirm/validation/validateMovieTicket");
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
19
|
+
// const debug = createDebug('chevre-domain:service:validation');
|
|
20
|
+
// type ICreatingCheckEventTask = Pick<
|
|
21
|
+
// factory.task.checkResource.IAttributes,
|
|
22
|
+
// 'data' | 'executionResults' | 'name' | 'numberOfTried' | 'project' | 'remainingNumberOfTries' | 'runsAt' | 'status' | 'description'
|
|
23
|
+
// > & {
|
|
24
|
+
// description: string;
|
|
25
|
+
// };
|
|
26
|
+
// function createCheckEventTasks(params: {
|
|
27
|
+
// order: Pick<factory.order.IOrder, 'orderNumber' | 'typeOf'>;
|
|
28
|
+
// project: { id: string };
|
|
29
|
+
// reservationForIds: string[];
|
|
30
|
+
// }): ICreatingCheckEventTask[] {
|
|
31
|
+
// const { order, project, reservationForIds } = params;
|
|
32
|
+
// const runsAt = new Date();
|
|
33
|
+
// return reservationForIds.map((reservationForId) => {
|
|
34
|
+
// const object: factory.task.checkResource.IResourceAsEvent = { id: reservationForId, typeOf: factory.eventType.ScreeningEvent };
|
|
35
|
+
// const data: factory.task.checkResource.IData = {
|
|
36
|
+
// object,
|
|
37
|
+
// project: { id: project.id, typeOf: factory.organizationType.Project },
|
|
38
|
+
// typeOf: factory.actionType.CheckAction
|
|
39
|
+
// };
|
|
40
|
+
// const description: string = util.format(
|
|
41
|
+
// '%s:%s:%s:%s',
|
|
42
|
+
// order.typeOf,
|
|
43
|
+
// order.orderNumber,
|
|
44
|
+
// factory.eventType.ScreeningEvent,
|
|
45
|
+
// reservationForId
|
|
46
|
+
// );
|
|
47
|
+
// return {
|
|
48
|
+
// description,
|
|
49
|
+
// project: { id: project.id, typeOf: factory.organizationType.Project },
|
|
50
|
+
// name: factory.taskName.CheckResource,
|
|
51
|
+
// status: factory.taskStatus.Ready,
|
|
52
|
+
// runsAt,
|
|
53
|
+
// remainingNumberOfTries: 3,
|
|
54
|
+
// numberOfTried: 0,
|
|
55
|
+
// executionResults: [],
|
|
56
|
+
// data
|
|
57
|
+
// };
|
|
58
|
+
// });
|
|
59
|
+
// }
|
|
44
60
|
function validateOrder(params) {
|
|
45
61
|
// tslint:disable-next-line:cyclomatic-complexity max-func-body-length
|
|
46
62
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -216,18 +232,20 @@ function validateOrder(params) {
|
|
|
216
232
|
throw new Error(`invalid ticketIdentifiers.length:${reservationReservedTicketIdentifiers.length} [expected:${acceptedOffers.length}]`);
|
|
217
233
|
}
|
|
218
234
|
}
|
|
235
|
+
// useMongoAsStockHolderProjectsの場合のイベント検証タスク作成を廃止(もう十分検証したので)(2025-07-11~)
|
|
219
236
|
// add check event task(2025-05-01~)
|
|
220
|
-
const setting =
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
}
|
|
237
|
+
// const setting = <Pick<ISetting, 'useMongoAsStockHolderProjects'> | null>
|
|
238
|
+
// await repos.setting.findOne({ project: { id: { $eq: '*' } } }, ['useMongoAsStockHolderProjects']);
|
|
239
|
+
// const useMongoAsStockHolderProjects = setting?.useMongoAsStockHolderProjects;
|
|
240
|
+
// if (Array.isArray(useMongoAsStockHolderProjects) && useMongoAsStockHolderProjects.includes(params.project.id)) {
|
|
241
|
+
// const creatingCheckResourceTask = createCheckEventTasks({
|
|
242
|
+
// order: { orderNumber: order.orderNumber, typeOf: factory.order.OrderType.Order },
|
|
243
|
+
// project: { id: params.project.id },
|
|
244
|
+
// reservationForIds
|
|
245
|
+
// });
|
|
246
|
+
// if (creatingCheckResourceTask.length > 0) {
|
|
247
|
+
// await repos.task.saveMany(creatingCheckResourceTask, { emitImmediately: true });
|
|
248
|
+
// }
|
|
249
|
+
// }
|
|
232
250
|
});
|
|
233
251
|
}
|
package/package.json
CHANGED