@chevre/domain 21.2.0-alpha.120 → 21.2.0-alpha.121
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.
|
@@ -24,6 +24,7 @@ export interface IUnlockKey {
|
|
|
24
24
|
eventId: string;
|
|
25
25
|
startDate: Date;
|
|
26
26
|
offer: IOffer;
|
|
27
|
+
holder: string;
|
|
27
28
|
}
|
|
28
29
|
export type IGetHolderResult = string | null;
|
|
29
30
|
export interface ISubReservation {
|
|
@@ -94,7 +95,7 @@ export declare class StockHolderRepository {
|
|
|
94
95
|
/**
|
|
95
96
|
* 保持者を取得する
|
|
96
97
|
*/
|
|
97
|
-
getHolder(params: IUnlockKey): Promise<string | null | undefined>;
|
|
98
|
+
getHolder(params: Omit<IUnlockKey, 'holder'>): Promise<string | null | undefined>;
|
|
98
99
|
/**
|
|
99
100
|
* 在庫状況を検索する
|
|
100
101
|
* offers.lengthが0だと"ERR wrong number of arguments for 'hmget' command"となるので注意
|
|
@@ -217,17 +217,23 @@ class StockHolderRepository {
|
|
|
217
217
|
// [id]あるいは[seatNumber+seatSection]でreservations.subReservationsから$pull+$incする
|
|
218
218
|
yield this.initializeHoldReservation({ eventId: params.eventId, startDate: params.startDate });
|
|
219
219
|
const subReservation = StockHolderRepository.offer2subReservation(params.offer);
|
|
220
|
-
|
|
220
|
+
const reservationNumber = params.holder;
|
|
221
|
+
const updateResult = yield this.holdReservationModel.findOneAndUpdate({
|
|
221
222
|
'reservationFor.id': { $eq: params.eventId },
|
|
222
|
-
'reservations.
|
|
223
|
-
|
|
224
|
-
}
|
|
223
|
+
'reservations.reservationNumber': { $eq: reservationNumber },
|
|
224
|
+
'reservations.subReservation.identifier': { $eq: subReservation.identifier }
|
|
225
225
|
}, {
|
|
226
226
|
$inc: { reservationCount: -1 },
|
|
227
|
-
$pull: { 'reservations.subReservation': { identifier: { $eq: subReservation.identifier } } }
|
|
228
|
-
}, {
|
|
227
|
+
$pull: { 'reservations.$[reservationPackage].subReservation': { identifier: { $eq: subReservation.identifier } } }
|
|
228
|
+
}, {
|
|
229
|
+
new: true,
|
|
230
|
+
arrayFilters: [
|
|
231
|
+
{ 'reservationPackage.reservationNumber': reservationNumber }
|
|
232
|
+
]
|
|
233
|
+
})
|
|
229
234
|
.select({ _id: 1 })
|
|
230
235
|
.exec();
|
|
236
|
+
debug('unlock processed. updateResult:', updateResult, 'reservationNumber:', reservationNumber, 'identifier:', subReservation.identifier);
|
|
231
237
|
// docが存在しなくてもよい
|
|
232
238
|
}
|
|
233
239
|
else {
|
|
@@ -350,7 +350,8 @@ function processUnlockSeat(params) {
|
|
|
350
350
|
itemOffered: { serviceOutput: { id: reservation.id } },
|
|
351
351
|
seatNumber: '',
|
|
352
352
|
seatSection: ''
|
|
353
|
-
}
|
|
353
|
+
},
|
|
354
|
+
holder: params.expectedHolder
|
|
354
355
|
};
|
|
355
356
|
let holder = yield repos.stockHolder.getHolder(lockKey);
|
|
356
357
|
if (holder === params.expectedHolder) {
|
|
@@ -365,7 +366,8 @@ function processUnlockSeat(params) {
|
|
|
365
366
|
offer: {
|
|
366
367
|
seatNumber: ticketedSeat.seatNumber,
|
|
367
368
|
seatSection: ticketedSeat.seatSection
|
|
368
|
-
}
|
|
369
|
+
},
|
|
370
|
+
holder: params.expectedHolder
|
|
369
371
|
};
|
|
370
372
|
holder = yield repos.stockHolder.getHolder(lockKey);
|
|
371
373
|
if (holder === params.expectedHolder) {
|
|
@@ -386,7 +388,8 @@ function processUnlockSeat(params) {
|
|
|
386
388
|
offer: {
|
|
387
389
|
seatNumber: seatNumber4sub,
|
|
388
390
|
seatSection: seatSection4sub
|
|
389
|
-
}
|
|
391
|
+
},
|
|
392
|
+
holder: params.expectedHolder
|
|
390
393
|
};
|
|
391
394
|
const holder4sub = yield repos.stockHolder.getHolder(lockKey4sub);
|
|
392
395
|
if (holder4sub === params.expectedHolder) {
|
package/package.json
CHANGED