@chevre/domain 22.10.0-alpha.9 → 22.11.0-alpha.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/adminAuth/adminIdentity.ts +38 -0
- package/example/src/chevre/adminIdentities.ts +8 -8
- package/example/src/chevre/assetTransaction/processReserve.ts +4 -1
- package/example/src/chevre/concurrentLock/lockOfferRateLimit.ts +64 -0
- package/example/src/chevre/concurrentLock/lockTransactionProcess.ts +44 -0
- package/example/src/chevre/createTaskIfNotExistByAlternateName.ts +1 -1
- package/example/src/chevre/findOneAvailableHours.ts +11 -11
- package/example/src/chevre/identity/getCommonClients.ts +126 -0
- package/example/src/chevre/identity/migrateClients2oauth.ts +200 -0
- package/example/src/chevre/issuer/adminMemberProgramTiers.ts +55 -0
- package/example/src/chevre/maintenance/checkTransactionStatuses.ts +105 -0
- package/example/src/chevre/migrateIdentities.ts +24 -37
- package/example/src/chevre/reIndex.ts +1 -1
- package/example/src/chevre/roles/addPermissionIfNotExists.ts +27 -0
- package/example/src/chevre/roles/addRoleMembers.ts +75 -0
- package/example/src/chevre/saveWebSite.ts +14 -17
- package/example/src/chevre/stockHolder/checkRedisKeyCount.ts +43 -22
- package/example/src/chevre/transactionNumber/publishConfimationNumber.ts +37 -0
- package/example/src/chevre/transactionNumber/publishOrderNumber.ts +40 -0
- package/example/src/chevre/transactionNumber/setUseMongo4confirmationNumberFrom.ts +45 -0
- package/example/src/chevre/transactionNumber/setUseMongo4orderNumberFrom.ts +41 -0
- package/example/src/chevre/transactionNumber/setUseMongo4transactionNumberFrom.ts +41 -0
- package/example/src/redisMulti.ts +63 -0
- package/example/src/signPayload.ts +1 -1
- package/lib/chevre/adminAuth.d.ts +2 -0
- package/lib/chevre/adminAuth.js +6 -0
- package/lib/chevre/eventEmitter/task.d.ts +36 -6
- package/lib/chevre/eventEmitter/task.js +5 -4
- package/lib/chevre/eventEmitter.d.ts +2 -2
- package/lib/chevre/eventEmitter.js +2 -2
- package/lib/chevre/index.d.ts +2 -0
- package/lib/chevre/index.js +10 -0
- package/lib/chevre/repo/concurrentLock.d.ts +14 -0
- package/lib/chevre/repo/concurrentLock.js +48 -0
- package/lib/chevre/repo/concurrentLockAbstract.d.ts +42 -0
- package/lib/chevre/repo/concurrentLockAbstract.js +9 -0
- package/lib/chevre/repo/confirmationNumber.d.ts +17 -4
- package/lib/chevre/repo/confirmationNumber.js +89 -32
- package/lib/chevre/repo/identity.d.ts +42 -5
- package/lib/chevre/repo/identity.js +35 -4
- package/lib/chevre/repo/issuer.d.ts +10 -2
- package/lib/chevre/repo/member.js +2 -2
- package/lib/chevre/repo/memberProgram.d.ts +43 -2
- package/lib/chevre/repo/memberProgram.js +79 -8
- package/lib/chevre/repo/mongoose/schemas/issuer.d.ts +3 -1
- package/lib/chevre/repo/mongoose/schemas/issuer.js +10 -0
- package/lib/chevre/repo/mongoose/schemas/offer/event.js +30 -2
- package/lib/chevre/repo/mongoose/schemas/role.d.ts +2 -3
- package/lib/chevre/repo/mongoose/schemas/role.js +11 -1
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +3 -0
- package/lib/chevre/repo/mongoose/schemas/setting.js +4 -1
- package/lib/chevre/repo/mongoose/schemas/transactionNumber.d.ts +39 -0
- package/lib/chevre/repo/mongoose/schemas/transactionNumber.js +101 -0
- package/lib/chevre/repo/orderNumber.d.ts +15 -4
- package/lib/chevre/repo/orderNumber.js +71 -24
- package/lib/chevre/repo/passport.d.ts +1 -1
- package/lib/chevre/repo/passport.js +31 -13
- package/lib/chevre/repo/rateLimit/offer.d.ts +7 -2
- package/lib/chevre/repo/rateLimit/offer.js +41 -40
- package/lib/chevre/repo/role.d.ts +18 -4
- package/lib/chevre/repo/role.js +53 -4
- package/lib/chevre/repo/serviceOutputIdentifier.d.ts +8 -4
- package/lib/chevre/repo/serviceOutputIdentifier.js +54 -22
- package/lib/chevre/repo/stockHolder.d.ts +0 -2
- package/lib/chevre/repo/stockHolder.js +24 -31
- package/lib/chevre/repo/task.d.ts +10 -25
- package/lib/chevre/repo/task.js +65 -36
- package/lib/chevre/repo/transactionNumber.d.ts +15 -4
- package/lib/chevre/repo/transactionNumber.js +67 -22
- package/lib/chevre/repo/transactionNumberCounter.d.ts +28 -0
- package/lib/chevre/repo/transactionNumberCounter.js +128 -0
- package/lib/chevre/repo/transactionProcess.d.ts +7 -4
- package/lib/chevre/repo/transactionProcess.js +34 -13
- package/lib/chevre/service/aggregation/event/aggregateOffers.js +1 -0
- package/lib/chevre/service/assetTransaction/reserve/start.js +9 -1
- package/lib/chevre/service/assetTransaction/reserve/validateStartRequest.js +1 -1
- package/lib/chevre/service/code.js +1 -1
- package/lib/chevre/service/offer/event/checkAvailability.d.ts +1 -1
- package/lib/chevre/service/offer/event/checkAvailability.js +1 -0
- package/lib/chevre/service/offer/product.js +0 -40
- package/lib/chevre/service/payment/any.d.ts +0 -2
- package/lib/chevre/service/payment/any.js +1 -0
- package/lib/chevre/service/reserve/cancelReservation.d.ts +3 -0
- package/lib/chevre/service/reserve/cancelReservation.js +5 -1
- package/lib/chevre/service/task/acceptCOAOffer.js +2 -2
- package/lib/chevre/service/task/authorizePayment.js +4 -4
- package/lib/chevre/service/task/givePointAward.js +1 -1
- package/lib/chevre/service/task/moneyTransfer.js +1 -1
- package/lib/chevre/service/task/publishPaymentUrl.js +2 -2
- package/lib/chevre/service/task/refund.js +1 -1
- package/lib/chevre/service/task/returnMoneyTransfer.js +1 -1
- package/lib/chevre/service/task/returnPayTransaction.js +1 -1
- package/lib/chevre/service/task/returnPointAward.js +1 -1
- package/lib/chevre/service/task/returnReserveTransaction.js +1 -1
- package/lib/chevre/service/task.d.ts +8 -17
- package/lib/chevre/service/task.js +14 -5
- package/lib/chevre/service/transaction/placeOrder/start/validateStartRequest.js +2 -2
- package/lib/chevre/service/transaction/returnOrder/preStart/factory.d.ts +20 -0
- package/lib/chevre/service/transaction/returnOrder/preStart/factory.js +2 -0
- package/lib/chevre/service/transaction/returnOrder/preStart/findApplicableReturnPolicy.d.ts +23 -0
- package/lib/chevre/service/transaction/returnOrder/preStart/findApplicableReturnPolicy.js +323 -0
- package/lib/chevre/service/transaction/returnOrder/preStart/getReturnPolicyByProject.d.ts +13 -0
- package/lib/chevre/service/transaction/returnOrder/preStart/getReturnPolicyByProject.js +132 -0
- package/lib/chevre/service/transaction/returnOrder/preStart.js +2 -391
- package/package.json +3 -3
- package/example/src/chevre/migrateMembers2identities.ts +0 -109
- package/example/src/chevre/publishConfimationNumber.ts +0 -27
|
@@ -65,7 +65,7 @@ class IdentityRepo {
|
|
|
65
65
|
}
|
|
66
66
|
return andConditions;
|
|
67
67
|
}
|
|
68
|
-
|
|
68
|
+
saveIdentity(params) {
|
|
69
69
|
return __awaiter(this, void 0, void 0, function* () {
|
|
70
70
|
var _a, _b;
|
|
71
71
|
let doc;
|
|
@@ -75,7 +75,8 @@ class IdentityRepo {
|
|
|
75
75
|
if (savingId === '') {
|
|
76
76
|
throw new factory.errors.ArgumentNull('id');
|
|
77
77
|
}
|
|
78
|
-
|
|
78
|
+
// issuedByのみ更新可能
|
|
79
|
+
const _c = params.attributes, { id, dateCreated, about, project, typeOf, $unset } = _c, updateFields = __rest(_c, ["id", "dateCreated", "about", "project", "typeOf", "$unset"]);
|
|
79
80
|
const filter = {
|
|
80
81
|
_id: { $eq: savingId },
|
|
81
82
|
'project.id': { $eq: project.id }
|
|
@@ -106,7 +107,7 @@ class IdentityRepo {
|
|
|
106
107
|
return { id: savedId };
|
|
107
108
|
});
|
|
108
109
|
}
|
|
109
|
-
|
|
110
|
+
projectIdentityFields(conditions, inclusion) {
|
|
110
111
|
return __awaiter(this, void 0, void 0, function* () {
|
|
111
112
|
var _a;
|
|
112
113
|
const andConditions = IdentityRepo.CREATE_FILTER_QUERY(conditions);
|
|
@@ -125,7 +126,7 @@ class IdentityRepo {
|
|
|
125
126
|
.exec();
|
|
126
127
|
});
|
|
127
128
|
}
|
|
128
|
-
|
|
129
|
+
deleteIdentityById(params) {
|
|
129
130
|
return __awaiter(this, void 0, void 0, function* () {
|
|
130
131
|
yield this.identityModel.findOneAndDelete({
|
|
131
132
|
_id: { $eq: params.id },
|
|
@@ -134,5 +135,35 @@ class IdentityRepo {
|
|
|
134
135
|
.exec();
|
|
135
136
|
});
|
|
136
137
|
}
|
|
138
|
+
getCursor(conditions, projection) {
|
|
139
|
+
return this.identityModel.find(conditions, projection)
|
|
140
|
+
.sort({ 'about.id': factory.sortType.Ascending })
|
|
141
|
+
.cursor();
|
|
142
|
+
}
|
|
143
|
+
updateIssuedBy2array(params) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
let doc;
|
|
146
|
+
const { id, issuedBy } = params;
|
|
147
|
+
const filter = {
|
|
148
|
+
_id: { $eq: id }
|
|
149
|
+
};
|
|
150
|
+
const update = {
|
|
151
|
+
$set: {
|
|
152
|
+
issuedBy
|
|
153
|
+
}
|
|
154
|
+
};
|
|
155
|
+
const options = {
|
|
156
|
+
upsert: false,
|
|
157
|
+
new: true,
|
|
158
|
+
projection: { _id: 1, id: { $toString: '$_id' } }
|
|
159
|
+
};
|
|
160
|
+
doc = yield this.identityModel.findOneAndUpdate(filter, update, options)
|
|
161
|
+
.lean()
|
|
162
|
+
.exec();
|
|
163
|
+
if (doc === null) {
|
|
164
|
+
throw new factory.errors.NotFound(this.identityModel.modelName);
|
|
165
|
+
}
|
|
166
|
+
});
|
|
167
|
+
}
|
|
137
168
|
}
|
|
138
169
|
exports.IdentityRepo = IdentityRepo;
|
|
@@ -36,11 +36,19 @@ export declare class IssuerRepo {
|
|
|
36
36
|
};
|
|
37
37
|
}): Promise<void>;
|
|
38
38
|
getCursor(conditions: any, projection: any): import("mongoose").Cursor<import("mongoose").Document<unknown, {}, IDocType> & factory.issuer.IIssuer & {
|
|
39
|
-
hasMemberProgram?:
|
|
39
|
+
hasMemberProgram?: (
|
|
40
|
+
/**
|
|
41
|
+
* 発行者リポジトリ
|
|
42
|
+
*/
|
|
43
|
+
factory.issuer.IMemberProgram & {
|
|
44
|
+
hasTiers?: Pick<factory.issuer.IMemberProgramTier, "identifier" | "typeOf">[];
|
|
45
|
+
})[];
|
|
40
46
|
} & {
|
|
41
47
|
_id: import("mongoose").Types.ObjectId;
|
|
42
48
|
}, import("mongoose").QueryOptions<import("mongoose").Document<unknown, {}, IDocType> & factory.issuer.IIssuer & {
|
|
43
|
-
hasMemberProgram?: factory.issuer.IMemberProgram
|
|
49
|
+
hasMemberProgram?: (factory.issuer.IMemberProgram & {
|
|
50
|
+
hasTiers?: Pick<factory.issuer.IMemberProgramTier, "identifier" | "typeOf">[];
|
|
51
|
+
})[];
|
|
44
52
|
} & {
|
|
45
53
|
_id: import("mongoose").Types.ObjectId;
|
|
46
54
|
}>>;
|
|
@@ -1,18 +1,32 @@
|
|
|
1
1
|
import { Connection } from 'mongoose';
|
|
2
2
|
import * as factory from '../factory';
|
|
3
|
-
type
|
|
3
|
+
type IMemberProgramTier = Pick<factory.issuer.IMemberProgramTier, 'identifier' | 'typeOf'>;
|
|
4
|
+
type IMemberProgram = factory.issuer.IMemberProgram & {
|
|
5
|
+
hasTiers?: IMemberProgramTier[];
|
|
6
|
+
};
|
|
4
7
|
type IMemberProgramAsSearchResult = IMemberProgram & {
|
|
5
8
|
hostingOrganization: {
|
|
6
9
|
identifier: string;
|
|
7
10
|
};
|
|
8
11
|
};
|
|
12
|
+
type IMemberProgramTierAsSearchResult = IMemberProgramTier & {
|
|
13
|
+
isTierOf: {
|
|
14
|
+
identifier: string;
|
|
15
|
+
hostingOrganization: {
|
|
16
|
+
identifier: string;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
19
|
+
};
|
|
9
20
|
/**
|
|
10
21
|
* メンバープログラムリポジトリ
|
|
11
22
|
*/
|
|
12
23
|
export declare class MemberProgramRepo {
|
|
13
24
|
private readonly issuerModel;
|
|
14
25
|
constructor(connection: Connection);
|
|
15
|
-
|
|
26
|
+
/**
|
|
27
|
+
* memberProgramを検索する
|
|
28
|
+
*/
|
|
29
|
+
projectMemberPrograms(params: {
|
|
16
30
|
limit?: number;
|
|
17
31
|
page?: number;
|
|
18
32
|
project?: {
|
|
@@ -27,8 +41,34 @@ export declare class MemberProgramRepo {
|
|
|
27
41
|
};
|
|
28
42
|
identifier?: {
|
|
29
43
|
$eq?: string;
|
|
44
|
+
$in?: string[];
|
|
30
45
|
};
|
|
31
46
|
}): Promise<IMemberProgramAsSearchResult[]>;
|
|
47
|
+
/**
|
|
48
|
+
* tierを検索する
|
|
49
|
+
*/
|
|
50
|
+
projectMemberProgramTiers(params: {
|
|
51
|
+
limit?: number;
|
|
52
|
+
page?: number;
|
|
53
|
+
project?: {
|
|
54
|
+
id?: {
|
|
55
|
+
$eq?: string;
|
|
56
|
+
};
|
|
57
|
+
};
|
|
58
|
+
isTierOf?: {
|
|
59
|
+
hostingOrganization?: {
|
|
60
|
+
id?: {
|
|
61
|
+
$eq?: string;
|
|
62
|
+
};
|
|
63
|
+
};
|
|
64
|
+
identifier?: {
|
|
65
|
+
$eq?: string;
|
|
66
|
+
};
|
|
67
|
+
};
|
|
68
|
+
identifier?: {
|
|
69
|
+
$eq?: string;
|
|
70
|
+
};
|
|
71
|
+
}): Promise<IMemberProgramTierAsSearchResult[]>;
|
|
32
72
|
create(params: {
|
|
33
73
|
project: {
|
|
34
74
|
id: string;
|
|
@@ -43,6 +83,7 @@ export declare class MemberProgramRepo {
|
|
|
43
83
|
id: string;
|
|
44
84
|
};
|
|
45
85
|
identifier: string;
|
|
86
|
+
hasTiers?: Pick<factory.issuer.IMemberProgramTier, 'identifier'>[];
|
|
46
87
|
hostingOrganization: {
|
|
47
88
|
id: string;
|
|
48
89
|
};
|
|
@@ -21,9 +21,12 @@ class MemberProgramRepo {
|
|
|
21
21
|
constructor(connection) {
|
|
22
22
|
this.issuerModel = connection.model(issuer_1.modelName, (0, issuer_1.createSchema)());
|
|
23
23
|
}
|
|
24
|
-
|
|
24
|
+
/**
|
|
25
|
+
* memberProgramを検索する
|
|
26
|
+
*/
|
|
27
|
+
projectMemberPrograms(params) {
|
|
25
28
|
return __awaiter(this, void 0, void 0, function* () {
|
|
26
|
-
var _a, _b, _c, _d, _e;
|
|
29
|
+
var _a, _b, _c, _d, _e, _f;
|
|
27
30
|
const matchStages = [];
|
|
28
31
|
const projectIdEq = (_b = (_a = params.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq;
|
|
29
32
|
if (typeof projectIdEq === 'string') {
|
|
@@ -37,6 +40,10 @@ class MemberProgramRepo {
|
|
|
37
40
|
if (typeof identifierEq === 'string') {
|
|
38
41
|
matchStages.push({ $match: { 'hasMemberProgram.identifier': { $exists: true, $eq: identifierEq } } });
|
|
39
42
|
}
|
|
43
|
+
const identifierIn = (_f = params.identifier) === null || _f === void 0 ? void 0 : _f.$in;
|
|
44
|
+
if (Array.isArray(identifierIn)) {
|
|
45
|
+
matchStages.push({ $match: { 'hasMemberProgram.identifier': { $exists: true, $in: identifierIn } } });
|
|
46
|
+
}
|
|
40
47
|
const aggregate = this.issuerModel.aggregate([
|
|
41
48
|
{
|
|
42
49
|
$unwind: {
|
|
@@ -44,12 +51,13 @@ class MemberProgramRepo {
|
|
|
44
51
|
}
|
|
45
52
|
},
|
|
46
53
|
...matchStages,
|
|
47
|
-
|
|
54
|
+
{ $sort: { 'hasMemberProgram.identifier': factory.sortType.Ascending } },
|
|
48
55
|
{
|
|
49
56
|
$project: {
|
|
50
57
|
_id: 0,
|
|
51
58
|
typeOf: '$hasMemberProgram.typeOf',
|
|
52
59
|
identifier: '$hasMemberProgram.identifier',
|
|
60
|
+
hasTiers: '$hasMemberProgram.hasTiers',
|
|
53
61
|
hostingOrganization: {
|
|
54
62
|
identifier: '$identifier'
|
|
55
63
|
}
|
|
@@ -58,8 +66,67 @@ class MemberProgramRepo {
|
|
|
58
66
|
]);
|
|
59
67
|
if (typeof params.limit === 'number' && params.limit > 0) {
|
|
60
68
|
const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
61
|
-
aggregate.
|
|
62
|
-
.
|
|
69
|
+
aggregate.skip(params.limit * (page - 1))
|
|
70
|
+
.limit(params.limit);
|
|
71
|
+
}
|
|
72
|
+
return aggregate.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
73
|
+
.exec();
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* tierを検索する
|
|
78
|
+
*/
|
|
79
|
+
projectMemberProgramTiers(params) {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
82
|
+
const matchStages = [];
|
|
83
|
+
const projectIdEq = (_b = (_a = params.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq;
|
|
84
|
+
if (typeof projectIdEq === 'string') {
|
|
85
|
+
matchStages.push({ $match: { 'project.id': { $eq: projectIdEq } } });
|
|
86
|
+
}
|
|
87
|
+
const hostingOrganizationIdEq = (_e = (_d = (_c = params.isTierOf) === null || _c === void 0 ? void 0 : _c.hostingOrganization) === null || _d === void 0 ? void 0 : _d.id) === null || _e === void 0 ? void 0 : _e.$eq;
|
|
88
|
+
if (typeof hostingOrganizationIdEq === 'string') {
|
|
89
|
+
matchStages.push({ $match: { _id: { $eq: new mongoose_1.Types.ObjectId(hostingOrganizationIdEq) } } });
|
|
90
|
+
}
|
|
91
|
+
const memberProgramIdentifierEq = (_g = (_f = params.isTierOf) === null || _f === void 0 ? void 0 : _f.identifier) === null || _g === void 0 ? void 0 : _g.$eq;
|
|
92
|
+
if (typeof memberProgramIdentifierEq === 'string') {
|
|
93
|
+
matchStages.push({ $match: { 'hasMemberProgram.identifier': { $exists: true, $eq: memberProgramIdentifierEq } } });
|
|
94
|
+
}
|
|
95
|
+
const identifierEq = (_h = params.identifier) === null || _h === void 0 ? void 0 : _h.$eq;
|
|
96
|
+
if (typeof identifierEq === 'string') {
|
|
97
|
+
matchStages.push({ $match: { 'hasMemberProgram.hasTiers.identifier': { $exists: true, $eq: identifierEq } } });
|
|
98
|
+
}
|
|
99
|
+
const aggregate = this.issuerModel.aggregate([
|
|
100
|
+
{
|
|
101
|
+
$unwind: {
|
|
102
|
+
path: '$hasMemberProgram'
|
|
103
|
+
}
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
$unwind: {
|
|
107
|
+
path: '$hasMemberProgram.hasTiers'
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
...matchStages,
|
|
111
|
+
{ $sort: { 'hasMemberProgram.hasTiers.identifier': factory.sortType.Ascending } },
|
|
112
|
+
{
|
|
113
|
+
$project: {
|
|
114
|
+
_id: 0,
|
|
115
|
+
typeOf: '$hasMemberProgram.hasTiers.typeOf',
|
|
116
|
+
identifier: '$hasMemberProgram.hasTiers.identifier',
|
|
117
|
+
isTierOf: {
|
|
118
|
+
identifier: '$hasMemberProgram.identifier',
|
|
119
|
+
hostingOrganization: {
|
|
120
|
+
identifier: '$identifier'
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
]);
|
|
126
|
+
if (typeof params.limit === 'number' && params.limit > 0) {
|
|
127
|
+
const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
128
|
+
aggregate.skip(params.limit * (page - 1))
|
|
129
|
+
.limit(params.limit);
|
|
63
130
|
}
|
|
64
131
|
return aggregate.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
65
132
|
.exec();
|
|
@@ -96,16 +163,20 @@ class MemberProgramRepo {
|
|
|
96
163
|
}
|
|
97
164
|
updateOne(params) {
|
|
98
165
|
return __awaiter(this, void 0, void 0, function* () {
|
|
99
|
-
const
|
|
166
|
+
const hasTiers = (Array.isArray(params.hasTiers))
|
|
167
|
+
? params.hasTiers.map(({ identifier }) => ({ identifier, typeOf: 'MemberProgramTier' }))
|
|
168
|
+
: [];
|
|
169
|
+
const updatingMemberProgram = {
|
|
100
170
|
typeOf: 'MemberProgram',
|
|
101
|
-
identifier: params.identifier
|
|
171
|
+
identifier: params.identifier,
|
|
172
|
+
hasTiers
|
|
102
173
|
};
|
|
103
174
|
const doc = yield this.issuerModel.findOneAndUpdate({
|
|
104
175
|
_id: { $eq: params.hostingOrganization.id },
|
|
105
176
|
'project.id': { $eq: params.project.id },
|
|
106
177
|
'hasMemberProgram.identifier': { $exists: true, $eq: params.identifier }
|
|
107
178
|
}, {
|
|
108
|
-
$set: { 'hasMemberProgram.$[hasMemberProgramElement]':
|
|
179
|
+
$set: { 'hasMemberProgram.$[hasMemberProgramElement]': updatingMemberProgram }
|
|
109
180
|
}, {
|
|
110
181
|
new: true,
|
|
111
182
|
arrayFilters: [
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import { IndexDefinition, IndexOptions, Model, Schema, SchemaDefinition } from 'mongoose';
|
|
2
2
|
import * as factory from '../../../factory';
|
|
3
3
|
export type IDocType = factory.issuer.IIssuer & {
|
|
4
|
-
hasMemberProgram?: factory.issuer.IMemberProgram
|
|
4
|
+
hasMemberProgram?: (factory.issuer.IMemberProgram & {
|
|
5
|
+
hasTiers?: Pick<factory.issuer.IMemberProgramTier, 'identifier' | 'typeOf'>[];
|
|
6
|
+
})[];
|
|
5
7
|
};
|
|
6
8
|
type IModel = Model<IDocType>;
|
|
7
9
|
type ISchemaDefinition = SchemaDefinition<IDocType>;
|
|
@@ -61,6 +61,16 @@ const indexes = [
|
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
63
|
],
|
|
64
|
+
[
|
|
65
|
+
{ 'project.id': 1, 'hasMemberProgram.hasTiers.identifier': 1 },
|
|
66
|
+
{
|
|
67
|
+
name: 'uniqueMemberProgramTierIdentifier',
|
|
68
|
+
unique: true,
|
|
69
|
+
partialFilterExpression: {
|
|
70
|
+
'hasMemberProgram.hasTiers.identifier': { $exists: true }
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
],
|
|
64
74
|
[
|
|
65
75
|
{ 'hasMemberProgram.identifier': 1, identifier: 1 },
|
|
66
76
|
{ name: 'hasMemberProgramIdentifier' }
|
|
@@ -16,7 +16,7 @@ const schemaDefinition = {
|
|
|
16
16
|
availableAtOrFrom: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
17
17
|
validFrom: { type: Date, required: true },
|
|
18
18
|
validThrough: { type: Date, required: true },
|
|
19
|
-
validForMemberTier: { type: mongoose_1.SchemaTypes.Mixed, required:
|
|
19
|
+
validForMemberTier: { type: mongoose_1.SchemaTypes.Mixed, required: true }
|
|
20
20
|
};
|
|
21
21
|
const schemaOptions = {
|
|
22
22
|
autoIndex: settings_1.MONGO_AUTO_INDEX,
|
|
@@ -43,6 +43,10 @@ const schemaOptions = {
|
|
|
43
43
|
}
|
|
44
44
|
};
|
|
45
45
|
const indexes = [
|
|
46
|
+
[
|
|
47
|
+
{ validFrom: 1 },
|
|
48
|
+
{ name: 'validFrom' }
|
|
49
|
+
],
|
|
46
50
|
[
|
|
47
51
|
{
|
|
48
52
|
'itemOffered.id': 1,
|
|
@@ -57,12 +61,36 @@ const indexes = [
|
|
|
57
61
|
{
|
|
58
62
|
'itemOffered.id': 1,
|
|
59
63
|
'availableAtOrFrom.id': 1,
|
|
60
|
-
'validForMemberTier.
|
|
64
|
+
'validForMemberTier.identifier': 1
|
|
61
65
|
},
|
|
62
66
|
{
|
|
63
67
|
name: 'uniqueByItemOfferedAndAvailableAt',
|
|
64
68
|
unique: true
|
|
65
69
|
}
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
{ 'project.id': 1, validFrom: 1 },
|
|
73
|
+
{ name: 'projectId' }
|
|
74
|
+
],
|
|
75
|
+
[
|
|
76
|
+
{ 'seller.id': 1, validFrom: 1 },
|
|
77
|
+
{ name: 'sellerId' }
|
|
78
|
+
],
|
|
79
|
+
[
|
|
80
|
+
{ identifier: 1, validFrom: 1 },
|
|
81
|
+
{ name: 'identifier' }
|
|
82
|
+
],
|
|
83
|
+
[
|
|
84
|
+
{ 'itemOffered.id': 1, validFrom: 1 },
|
|
85
|
+
{ name: 'itemOfferedId' }
|
|
86
|
+
],
|
|
87
|
+
[
|
|
88
|
+
{ 'availableAtOrFrom.id': 1, validFrom: 1 },
|
|
89
|
+
{ name: 'availableAtOrFromId' }
|
|
90
|
+
],
|
|
91
|
+
[
|
|
92
|
+
{ 'validForMemberTier.identifier': 1, validFrom: 1 },
|
|
93
|
+
{ name: 'validForMemberTierIdentifier' }
|
|
66
94
|
]
|
|
67
95
|
];
|
|
68
96
|
exports.indexes = indexes;
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { IndexDefinition, IndexOptions, Model, Schema, SchemaDefinition } from 'mongoose';
|
|
2
2
|
import * as factory from '../../../factory';
|
|
3
|
-
|
|
4
|
-
type IDocType = IRole;
|
|
3
|
+
type IDocType = Pick<factory.role.organizationRole.IRole, 'permissions' | 'roleName' | 'typeOf' | 'member' | 'memberOf'>;
|
|
5
4
|
type IModel = Model<IDocType>;
|
|
6
5
|
type ISchemaDefinition = SchemaDefinition<IDocType>;
|
|
7
6
|
type ISchema = Schema<IDocType, IModel, {}, {}, {}, {}, ISchemaDefinition, IDocType>;
|
|
8
7
|
declare const modelName = "Role";
|
|
9
8
|
declare const indexes: [d: IndexDefinition, o: IndexOptions][];
|
|
10
9
|
declare function createSchema(): ISchema;
|
|
11
|
-
export { createSchema, IModel, indexes, modelName };
|
|
10
|
+
export { createSchema, IDocType, IModel, indexes, modelName };
|
|
@@ -10,7 +10,9 @@ exports.modelName = modelName;
|
|
|
10
10
|
const schemaDefinition = {
|
|
11
11
|
typeOf: { type: String, required: true },
|
|
12
12
|
permissions: [String],
|
|
13
|
-
roleName: { type: String, required: true }
|
|
13
|
+
roleName: { type: String, required: true },
|
|
14
|
+
member: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
15
|
+
memberOf: { type: mongoose_1.SchemaTypes.Mixed, required: true }
|
|
14
16
|
};
|
|
15
17
|
const schemaOptions = {
|
|
16
18
|
autoIndex: settings_1.MONGO_AUTO_INDEX,
|
|
@@ -49,6 +51,14 @@ const indexes = [
|
|
|
49
51
|
permissions: { $exists: true }
|
|
50
52
|
}
|
|
51
53
|
}
|
|
54
|
+
],
|
|
55
|
+
[
|
|
56
|
+
{ 'member.typeOf': 1, roleName: 1 },
|
|
57
|
+
{ name: 'memberTypeOf' }
|
|
58
|
+
],
|
|
59
|
+
[
|
|
60
|
+
{ 'memberOf.typeOf': 1, roleName: 1 },
|
|
61
|
+
{ name: 'memberOfTypeOf' }
|
|
52
62
|
]
|
|
53
63
|
];
|
|
54
64
|
exports.indexes = indexes;
|
|
@@ -122,6 +122,9 @@ export interface ISetting {
|
|
|
122
122
|
waiter?: IWaiterSettings;
|
|
123
123
|
useMongoAsStockHolder?: boolean;
|
|
124
124
|
useMongoAsStockHolderProjects?: string[];
|
|
125
|
+
useMongo4confirmationNumberFrom?: Date;
|
|
126
|
+
useMongo4orderNumberFrom?: Date;
|
|
127
|
+
useMongo4transactionNumberFrom?: Date;
|
|
125
128
|
}
|
|
126
129
|
type IDocType = ISetting;
|
|
127
130
|
type IModel = Model<IDocType>;
|
|
@@ -24,7 +24,10 @@ const schemaDefinition = {
|
|
|
24
24
|
userPoolIdNew: String,
|
|
25
25
|
waiter: mongoose_1.SchemaTypes.Mixed,
|
|
26
26
|
useMongoAsStockHolder: Boolean,
|
|
27
|
-
useMongoAsStockHolderProjects: [String]
|
|
27
|
+
useMongoAsStockHolderProjects: [String],
|
|
28
|
+
useMongo4confirmationNumberFrom: { type: Date, required: false },
|
|
29
|
+
useMongo4orderNumberFrom: { type: Date, required: false },
|
|
30
|
+
useMongo4transactionNumberFrom: { type: Date, required: false }
|
|
28
31
|
};
|
|
29
32
|
const schemaOptions = {
|
|
30
33
|
autoIndex: settings_1.MONGO_AUTO_INDEX,
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { Model, Schema, SchemaDefinition } from 'mongoose';
|
|
2
|
+
import * as factory from '../../../factory';
|
|
3
|
+
declare enum DataCatalogIdentifier {
|
|
4
|
+
confirmationNumber = "confirmationNumber",
|
|
5
|
+
transactionNumber = "transactionNumber",
|
|
6
|
+
orderNumber = "orderNumber",
|
|
7
|
+
serviceOutputIdentifier = "serviceOutputIdentifier"
|
|
8
|
+
}
|
|
9
|
+
interface IDataCatalog {
|
|
10
|
+
identifier: DataCatalogIdentifier;
|
|
11
|
+
typeOf: 'DataCatalog';
|
|
12
|
+
}
|
|
13
|
+
interface IInteractionCounter {
|
|
14
|
+
typeOf: 'InteractionCounter';
|
|
15
|
+
userInteractionCount: number;
|
|
16
|
+
}
|
|
17
|
+
interface IDataFeed {
|
|
18
|
+
typeOf: 'DataFeed';
|
|
19
|
+
includedInDataCatalog: IDataCatalog;
|
|
20
|
+
dateCreated: Date;
|
|
21
|
+
dateModified?: Date;
|
|
22
|
+
expires: Date;
|
|
23
|
+
/**
|
|
24
|
+
* カウント識別子
|
|
25
|
+
*/
|
|
26
|
+
identifier: string;
|
|
27
|
+
interactionStatistic: IInteractionCounter;
|
|
28
|
+
project: {
|
|
29
|
+
id: string;
|
|
30
|
+
typeOf: factory.organizationType.Project;
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
type IDocType = IDataFeed;
|
|
34
|
+
type IModel = Model<IDocType>;
|
|
35
|
+
type ISchemaDefinition = SchemaDefinition<IDocType>;
|
|
36
|
+
type ISchema = Schema<IDocType, IModel, {}, {}, {}, {}, ISchemaDefinition, IDocType>;
|
|
37
|
+
declare const modelName = "TransactionNumber";
|
|
38
|
+
declare function createSchema(): ISchema;
|
|
39
|
+
export { createSchema, IDocType, IModel, modelName, DataCatalogIdentifier };
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataCatalogIdentifier = exports.modelName = void 0;
|
|
4
|
+
exports.createSchema = createSchema;
|
|
5
|
+
const mongoose_1 = require("mongoose");
|
|
6
|
+
const writeConcern_1 = require("../writeConcern");
|
|
7
|
+
const settings_1 = require("../../../settings");
|
|
8
|
+
var DataCatalogIdentifier;
|
|
9
|
+
(function (DataCatalogIdentifier) {
|
|
10
|
+
DataCatalogIdentifier["confirmationNumber"] = "confirmationNumber";
|
|
11
|
+
DataCatalogIdentifier["transactionNumber"] = "transactionNumber";
|
|
12
|
+
DataCatalogIdentifier["orderNumber"] = "orderNumber";
|
|
13
|
+
DataCatalogIdentifier["serviceOutputIdentifier"] = "serviceOutputIdentifier";
|
|
14
|
+
})(DataCatalogIdentifier || (exports.DataCatalogIdentifier = DataCatalogIdentifier = {}));
|
|
15
|
+
const modelName = 'TransactionNumber';
|
|
16
|
+
exports.modelName = modelName;
|
|
17
|
+
const schemaDefinition = {
|
|
18
|
+
identifier: { type: String, required: true },
|
|
19
|
+
project: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
20
|
+
includedInDataCatalog: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
21
|
+
dateCreated: { type: Date, required: true },
|
|
22
|
+
dateModified: { type: Date, required: false },
|
|
23
|
+
expires: { type: Date, required: true },
|
|
24
|
+
interactionStatistic: { type: mongoose_1.SchemaTypes.Mixed, required: true },
|
|
25
|
+
typeOf: { type: String, required: true }
|
|
26
|
+
};
|
|
27
|
+
const schemaOptions = {
|
|
28
|
+
autoIndex: settings_1.MONGO_AUTO_INDEX,
|
|
29
|
+
autoCreate: false,
|
|
30
|
+
collection: 'transactionNumbers',
|
|
31
|
+
id: true,
|
|
32
|
+
read: 'primary',
|
|
33
|
+
writeConcern: writeConcern_1.writeConcern,
|
|
34
|
+
strict: true,
|
|
35
|
+
strictQuery: false,
|
|
36
|
+
timestamps: false,
|
|
37
|
+
versionKey: false,
|
|
38
|
+
toJSON: {
|
|
39
|
+
getters: false,
|
|
40
|
+
virtuals: false,
|
|
41
|
+
minimize: false,
|
|
42
|
+
versionKey: false
|
|
43
|
+
},
|
|
44
|
+
toObject: {
|
|
45
|
+
getters: false,
|
|
46
|
+
virtuals: true,
|
|
47
|
+
minimize: false,
|
|
48
|
+
versionKey: false
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
const indexes = [
|
|
52
|
+
[
|
|
53
|
+
{
|
|
54
|
+
'project.id': 1,
|
|
55
|
+
'includedInDataCatalog.identifier': 1,
|
|
56
|
+
identifier: 1
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
unique: true,
|
|
60
|
+
name: 'uniqueIdentifier'
|
|
61
|
+
}
|
|
62
|
+
],
|
|
63
|
+
[
|
|
64
|
+
{ dateCreated: -1 },
|
|
65
|
+
{ name: 'dateCreated' }
|
|
66
|
+
],
|
|
67
|
+
[
|
|
68
|
+
{ 'project.id': 1, dateCreated: -1 },
|
|
69
|
+
{ name: 'projectId' }
|
|
70
|
+
],
|
|
71
|
+
[
|
|
72
|
+
{ 'includedInDataCatalog.identifier': 1, dateCreated: -1 },
|
|
73
|
+
{ name: 'dataCatalogIdentifier' }
|
|
74
|
+
],
|
|
75
|
+
[
|
|
76
|
+
{ identifier: 1, dateCreated: -1 },
|
|
77
|
+
{ name: 'identifier' }
|
|
78
|
+
],
|
|
79
|
+
[
|
|
80
|
+
{ expires: 1 },
|
|
81
|
+
{
|
|
82
|
+
name: 'expires',
|
|
83
|
+
expireAfterSeconds: 0
|
|
84
|
+
}
|
|
85
|
+
]
|
|
86
|
+
];
|
|
87
|
+
/**
|
|
88
|
+
* 取引識別子(注文番号、取引番号など)スキーマ
|
|
89
|
+
*/
|
|
90
|
+
let schema;
|
|
91
|
+
function createSchema() {
|
|
92
|
+
if (schema === undefined) {
|
|
93
|
+
schema = new mongoose_1.Schema(schemaDefinition, schemaOptions);
|
|
94
|
+
if (settings_1.MONGO_AUTO_INDEX) {
|
|
95
|
+
indexes.forEach((indexParams) => {
|
|
96
|
+
schema === null || schema === void 0 ? void 0 : schema.index(...indexParams);
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return schema;
|
|
101
|
+
}
|
|
@@ -1,12 +1,16 @@
|
|
|
1
|
+
import type { Connection } from 'mongoose';
|
|
1
2
|
import { RedisClientType } from 'redis';
|
|
3
|
+
import { ISetting } from './mongoose/schemas/setting';
|
|
2
4
|
/**
|
|
3
5
|
* 注文番号リポジトリ
|
|
4
6
|
*/
|
|
5
7
|
export declare class OrderNumberRepo {
|
|
6
|
-
private
|
|
7
|
-
private readonly
|
|
8
|
-
constructor(
|
|
9
|
-
|
|
8
|
+
private readonly settingModel;
|
|
9
|
+
private readonly counterRepo;
|
|
10
|
+
constructor(params: {
|
|
11
|
+
redisClient: RedisClientType;
|
|
12
|
+
connection: Connection;
|
|
13
|
+
});
|
|
10
14
|
/**
|
|
11
15
|
* タイムスタンプから発行する
|
|
12
16
|
*/
|
|
@@ -19,4 +23,11 @@ export declare class OrderNumberRepo {
|
|
|
19
23
|
*/
|
|
20
24
|
orderDate: Date;
|
|
21
25
|
}): Promise<string>;
|
|
26
|
+
/**
|
|
27
|
+
* DB移行時のみに使用目的の設定更新
|
|
28
|
+
*/
|
|
29
|
+
setUseMongo4orderNumberFrom(params: {
|
|
30
|
+
useMongo4orderNumberFrom: Date;
|
|
31
|
+
}): Promise<Pick<ISetting, "useMongo4orderNumberFrom"> | null>;
|
|
32
|
+
private useMongoBySettings;
|
|
22
33
|
}
|