@chevre/domain 21.18.0-alpha.4 → 21.18.0-alpha.41
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/aggreateOwnershipInfosByOrder.ts +24 -0
- package/example/src/chevre/offerCatalog2offerCatalogItem.ts +4 -0
- package/example/src/chevre/searchAcceptedOfferIds.ts +57 -0
- package/example/src/chevre/searchOffers.ts +41 -37
- package/example/src/chevre/searchOrderAcceptedOffers.ts +12 -12
- package/example/src/chevre/searchOrders.ts +36 -19
- package/example/src/chevre/searchReservationsByOrder.ts +30 -0
- package/example/src/chevre/searchTransactions.ts +41 -0
- package/example/src/chevre/transaction/processReturnOrder.ts +1 -0
- package/example/src/chevre/upsertMoviesByIdentifier.ts +5 -4
- package/example/src/chevre/upsertOfferCatalogsByIdentifier.ts +46 -0
- package/example/src/chevre/upsertOffersByIdentifier.ts +94 -0
- package/example/src/chevre/upsertScreeningEventSeriesByVersion.ts +104 -0
- package/lib/chevre/credentials.d.ts +0 -3
- package/lib/chevre/credentials.js +4 -3
- package/lib/chevre/repo/acceptedOffer.d.ts +60 -0
- package/lib/chevre/repo/acceptedOffer.js +158 -0
- package/lib/chevre/repo/creativeWork.d.ts +12 -2
- package/lib/chevre/repo/creativeWork.js +39 -25
- package/lib/chevre/repo/event.d.ts +15 -0
- package/lib/chevre/repo/event.js +66 -0
- package/lib/chevre/repo/offer.d.ts +14 -5
- package/lib/chevre/repo/offer.js +94 -19
- package/lib/chevre/repo/offerCatalog.d.ts +18 -1
- package/lib/chevre/repo/offerCatalog.js +51 -39
- package/lib/chevre/repo/order.d.ts +14 -54
- package/lib/chevre/repo/order.js +46 -180
- package/lib/chevre/repo/paymentService.d.ts +30 -0
- package/lib/chevre/repo/paymentService.js +75 -0
- package/lib/chevre/repo/place.js +14 -10
- package/lib/chevre/repo/product.d.ts +41 -10
- package/lib/chevre/repo/product.js +94 -47
- package/lib/chevre/repo/transaction.d.ts +5 -4
- package/lib/chevre/repository.d.ts +10 -7
- package/lib/chevre/repository.js +28 -17
- package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +10 -1
- package/lib/chevre/service/aggregation/event/findEventOffers.js +10 -1
- package/lib/chevre/service/assetTransaction/moneyTransfer.js +1 -1
- package/lib/chevre/service/assetTransaction/pay/potentialActions.d.ts +3 -1
- package/lib/chevre/service/assetTransaction/pay/potentialActions.js +3 -3
- package/lib/chevre/service/assetTransaction/pay.d.ts +2 -0
- package/lib/chevre/service/assetTransaction/pay.js +47 -34
- package/lib/chevre/service/assetTransaction/refund/factory.d.ts +1 -1
- package/lib/chevre/service/assetTransaction/refund/factory.js +0 -5
- package/lib/chevre/service/assetTransaction/refund.js +15 -3
- package/lib/chevre/service/assetTransaction/registerService.js +18 -2
- package/lib/chevre/service/assetTransaction/reserve/factory/price.js +1 -1
- package/lib/chevre/service/assetTransaction/reserve.js +32 -2
- package/lib/chevre/service/delivery/factory.d.ts +3 -1
- package/lib/chevre/service/delivery/factory.js +4 -2
- package/lib/chevre/service/delivery.d.ts +1 -2
- package/lib/chevre/service/delivery.js +1 -3
- package/lib/chevre/service/event.js +1 -1
- package/lib/chevre/service/moneyTransfer.js +11 -1
- package/lib/chevre/service/offer/event/factory.d.ts +1 -1
- package/lib/chevre/service/offer/event/factory.js +4 -2
- package/lib/chevre/service/offer/event/searchEventTicketOffers.js +40 -5
- package/lib/chevre/service/offer/product/factory.js +1 -1
- package/lib/chevre/service/offer/product/searchProductOffers.js +10 -1
- package/lib/chevre/service/offer/product.d.ts +0 -14
- package/lib/chevre/service/offer/product.js +61 -44
- package/lib/chevre/service/order/confirmPayTransaction.d.ts +2 -0
- package/lib/chevre/service/order/confirmPayTransaction.js +1 -0
- package/lib/chevre/service/order/createAccountingReportIfNotExist.d.ts +3 -1
- package/lib/chevre/service/order/createAccountingReportIfNotExist.js +4 -1
- package/lib/chevre/service/order/deleteOrder.d.ts +2 -0
- package/lib/chevre/service/order/deleteOrder.js +15 -4
- package/lib/chevre/service/order/findPlaceOrderTransaction.d.ts +3 -1
- package/lib/chevre/service/order/findPlaceOrderTransaction.js +1 -2
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +3 -3
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +15 -9
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.d.ts +11 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.js +54 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled.d.ts +10 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled.js +38 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.d.ts +12 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.js +111 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.d.ts +12 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.js +64 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.d.ts +10 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +103 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +23 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +180 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.d.ts +14 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +214 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.d.ts +10 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.js +110 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.d.ts +14 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned.js +164 -0
- package/lib/chevre/service/order/onOrderStatusChanged.d.ts +9 -15
- package/lib/chevre/service/order/onOrderStatusChanged.js +11 -446
- package/lib/chevre/service/order/onOrderUpdated/factory.d.ts +6 -0
- package/lib/chevre/service/order/onOrderUpdated/factory.js +45 -0
- package/lib/chevre/service/order/onOrderUpdated.js +1 -1
- package/lib/chevre/service/order/payOrder.d.ts +2 -2
- package/lib/chevre/service/order/placeOrder.d.ts +2 -3
- package/lib/chevre/service/order/placeOrder.js +65 -22
- package/lib/chevre/service/order/returnOrder.d.ts +2 -2
- package/lib/chevre/service/order/returnOrder.js +34 -13
- package/lib/chevre/service/order/sendOrder.d.ts +2 -2
- package/lib/chevre/service/order/sendOrder.js +19 -6
- package/lib/chevre/service/order.d.ts +2 -2
- package/lib/chevre/service/order.js +2 -2
- package/lib/chevre/service/payment/any.js +1 -1
- package/lib/chevre/service/payment/movieTicket/getCredentials.js +1 -2
- package/lib/chevre/service/payment/paymentCard.js +9 -2
- package/lib/chevre/service/reserve/searchByOrder.d.ts +21 -0
- package/lib/chevre/service/reserve/searchByOrder.js +113 -0
- package/lib/chevre/service/reserve/verifyToken4reservation.js +0 -11
- package/lib/chevre/service/reserve.d.ts +2 -1
- package/lib/chevre/service/reserve.js +3 -1
- package/lib/chevre/service/task/confirmPayTransaction.js +2 -1
- package/lib/chevre/service/task/deleteTransaction.js +2 -0
- package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +5 -6
- package/lib/chevre/service/task/onAuthorizationCreated.js +9 -18
- package/lib/chevre/service/task/onOrderPaymentCompleted.js +5 -6
- package/lib/chevre/service/task/onResourceUpdated/onResourceDeleted.js +1 -1
- package/lib/chevre/service/task/onResourceUpdated.js +1 -1
- package/lib/chevre/service/task/placeOrder.js +10 -17
- package/lib/chevre/service/task/returnOrder.js +10 -17
- package/lib/chevre/service/task/sendOrder.js +10 -17
- package/lib/chevre/service/task/voidRegisterServiceTransaction.js +3 -7
- package/lib/chevre/service/transaction/deleteTransaction.d.ts +2 -0
- package/lib/chevre/service/transaction/moneyTransfer.js +3 -4
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.d.ts +0 -4
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions/registerService.js +0 -86
- package/lib/chevre/service/transaction/placeOrderInProgress/result.d.ts +1 -1
- package/lib/chevre/service/transaction/placeOrderInProgress/validation.d.ts +1 -1
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnMoneyTransfer.d.ts +1 -0
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnMoneyTransfer.js +3 -3
- package/lib/chevre/service/transaction/returnOrder/potentialActions.d.ts +1 -0
- package/lib/chevre/service/transaction/returnOrder/potentialActions.js +1 -1
- package/lib/chevre/service/transaction/returnOrder.d.ts +3 -0
- package/lib/chevre/service/transaction/returnOrder.js +73 -55
- package/package.json +3 -3
- package/example/src/chevre/transaction/findPaymentCardPermit.ts +0 -29
- package/lib/chevre/repo/action/registerServiceInProgress.d.ts +0 -29
- package/lib/chevre/repo/action/registerServiceInProgress.js +0 -58
- package/lib/chevre/service/order/onOrderStatusChanged/factory.d.ts +0 -42
- package/lib/chevre/service/order/onOrderStatusChanged/factory.js +0 -467
- package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.d.ts +0 -26
- package/lib/chevre/service/transaction/orderProgramMembership/findPaymentCardPermit.js +0 -65
|
@@ -41,9 +41,10 @@ exports.credentials = {
|
|
|
41
41
|
sendGrid: {
|
|
42
42
|
apiKey: process.env.SENDGRID_API_KEY
|
|
43
43
|
},
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
44
|
+
// discontinue(2023-12-12~)
|
|
45
|
+
// hub: {
|
|
46
|
+
// clientId: <string>process.env.HUB_CLIENT_ID
|
|
47
|
+
// },
|
|
47
48
|
jwt: {
|
|
48
49
|
secret: process.env.TOKEN_SECRET,
|
|
49
50
|
issuer: process.env.RESOURCE_SERVER_IDENTIFIER
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
import type { Connection } from 'mongoose';
|
|
2
|
+
import * as factory from '../factory';
|
|
3
|
+
type IProjection4searchWithUnwoundAcceptedOffers = {
|
|
4
|
+
[key in keyof factory.order.IOrder]?: 1;
|
|
5
|
+
} & {
|
|
6
|
+
_id?: 0 | 1;
|
|
7
|
+
};
|
|
8
|
+
type IDistinctField = 'acceptedOffers.id' | 'acceptedOffers.itemOffered.reservationNumber' | 'acceptedOffers.itemOffered.reservationFor.id' | 'acceptedOffers.itemOffered.issuedThrough.id' | 'acceptedOffers.offeredThrough.identifier' | 'acceptedOffers.itemOffered.reservationFor.superEvent.location.branchCode';
|
|
9
|
+
/**
|
|
10
|
+
* 注文オファーリポジトリ
|
|
11
|
+
*/
|
|
12
|
+
export declare class MongoRepository {
|
|
13
|
+
private readonly orderModel;
|
|
14
|
+
constructor(connection: Connection);
|
|
15
|
+
/**
|
|
16
|
+
* オファー展開の注文検索
|
|
17
|
+
*/
|
|
18
|
+
searchWithUnwoundAcceptedOffers(params: factory.order.ISearchConditions, projection?: IProjection4searchWithUnwoundAcceptedOffers): Promise<factory.order.IOrder[]>;
|
|
19
|
+
aggreateOwnershipInfosByOrder(filter: {
|
|
20
|
+
orderNumber: {
|
|
21
|
+
$eq: string;
|
|
22
|
+
};
|
|
23
|
+
}): Promise<{
|
|
24
|
+
identifier: string;
|
|
25
|
+
}[]>;
|
|
26
|
+
/**
|
|
27
|
+
* 注文オファーを展開して検索する
|
|
28
|
+
*/
|
|
29
|
+
searchAcceptedOffersByOrderNumber(filter: {
|
|
30
|
+
limit?: number;
|
|
31
|
+
page?: number;
|
|
32
|
+
orderNumber: {
|
|
33
|
+
$eq: string;
|
|
34
|
+
};
|
|
35
|
+
project: {
|
|
36
|
+
id: {
|
|
37
|
+
$eq: string;
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* アイテムタイプで絞る場合
|
|
42
|
+
*/
|
|
43
|
+
acceptedOffers?: {
|
|
44
|
+
itemOffered?: {
|
|
45
|
+
typeOf?: {
|
|
46
|
+
$in?: string[];
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
}, inclusion?: (keyof factory.order.IAcceptedOffer<factory.order.IItemOffered>)[]): Promise<factory.order.IAcceptedOffer<factory.order.IItemOffered>[]>;
|
|
51
|
+
/**
|
|
52
|
+
* 特定のフィールド値リストを検索する
|
|
53
|
+
*/
|
|
54
|
+
distinctValues(filter: {
|
|
55
|
+
orderNumber: {
|
|
56
|
+
$in: string[];
|
|
57
|
+
};
|
|
58
|
+
}, field: IDistinctField): Promise<string[]>;
|
|
59
|
+
}
|
|
60
|
+
export {};
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.MongoRepository = void 0;
|
|
13
|
+
const order_1 = require("./mongoose/schemas/order");
|
|
14
|
+
const order_2 = require("./order");
|
|
15
|
+
const settings_1 = require("../settings");
|
|
16
|
+
/**
|
|
17
|
+
* 注文オファーリポジトリ
|
|
18
|
+
*/
|
|
19
|
+
class MongoRepository {
|
|
20
|
+
constructor(connection) {
|
|
21
|
+
this.orderModel = connection.model(order_1.modelName, (0, order_1.createSchema)());
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* オファー展開の注文検索
|
|
25
|
+
*/
|
|
26
|
+
searchWithUnwoundAcceptedOffers(params, projection) {
|
|
27
|
+
var _a;
|
|
28
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
29
|
+
const conditions = order_2.MongoRepository.CREATE_MONGO_CONDITIONS(params);
|
|
30
|
+
const aggregate = this.orderModel.aggregate();
|
|
31
|
+
// pipelineの順序に注意
|
|
32
|
+
// @see https://docs.mongodb.com/manual/reference/operator/aggregation/sort/
|
|
33
|
+
// tslint:disable-next-line:no-single-line-block-comment
|
|
34
|
+
/* istanbul ignore else */
|
|
35
|
+
if (typeof ((_a = params.sort) === null || _a === void 0 ? void 0 : _a.orderDate) === 'number') {
|
|
36
|
+
aggregate.sort({ orderDate: params.sort.orderDate });
|
|
37
|
+
}
|
|
38
|
+
aggregate.unwind('$acceptedOffers');
|
|
39
|
+
conditions.forEach((c) => {
|
|
40
|
+
aggregate.match(c);
|
|
41
|
+
});
|
|
42
|
+
aggregate.project(Object.assign(Object.assign({}, projection), { acceptedOffers: ['$acceptedOffers'] }));
|
|
43
|
+
if (typeof params.limit === 'number' && params.limit > 0) {
|
|
44
|
+
const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
45
|
+
aggregate.limit(params.limit * page)
|
|
46
|
+
.skip(params.limit * (page - 1));
|
|
47
|
+
}
|
|
48
|
+
return aggregate
|
|
49
|
+
// .allowDiskUse(true) // false化(2023-11-30~)
|
|
50
|
+
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
51
|
+
.exec();
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
aggreateOwnershipInfosByOrder(filter) {
|
|
55
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
56
|
+
const aggregate = this.orderModel.aggregate([
|
|
57
|
+
{
|
|
58
|
+
$unwind: {
|
|
59
|
+
path: '$acceptedOffers',
|
|
60
|
+
includeArrayIndex: 'acceptedOfferIndex'
|
|
61
|
+
}
|
|
62
|
+
},
|
|
63
|
+
{ $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
|
|
64
|
+
{
|
|
65
|
+
$project: {
|
|
66
|
+
_id: 0,
|
|
67
|
+
// acceptedOfferIndex: '$acceptedOfferIndex',
|
|
68
|
+
// itemOfferedTypeOf: '$acceptedOffers.itemOffered.typeOf',
|
|
69
|
+
// customerId: '$customer.id',
|
|
70
|
+
// orderNumber: '$orderNumber',
|
|
71
|
+
identifier: {
|
|
72
|
+
$concat: ['$customer.id', '-', '$acceptedOffers.itemOffered.typeOf', '-', '$orderNumber', '-', { $toString: '$acceptedOfferIndex' }]
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
]);
|
|
77
|
+
return aggregate
|
|
78
|
+
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
79
|
+
.exec();
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* 注文オファーを展開して検索する
|
|
84
|
+
*/
|
|
85
|
+
searchAcceptedOffersByOrderNumber(filter, inclusion) {
|
|
86
|
+
var _a, _b, _c;
|
|
87
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
88
|
+
const matchStages = [
|
|
89
|
+
{ $match: { 'project.id': { $eq: filter.project.id.$eq } } },
|
|
90
|
+
{ $match: { orderNumber: { $eq: filter.orderNumber.$eq } } }
|
|
91
|
+
];
|
|
92
|
+
const itemOfferedTypeOfIn = (_c = (_b = (_a = filter.acceptedOffers) === null || _a === void 0 ? void 0 : _a.itemOffered) === null || _b === void 0 ? void 0 : _b.typeOf) === null || _c === void 0 ? void 0 : _c.$in;
|
|
93
|
+
if (Array.isArray(itemOfferedTypeOfIn)) {
|
|
94
|
+
matchStages.push({
|
|
95
|
+
$match: { 'acceptedOffers.itemOffered.typeOf': { $exists: true, $in: itemOfferedTypeOfIn } }
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
const aggregate = this.orderModel.aggregate([
|
|
99
|
+
// if (typeof params.sort?.orderDate === 'number') {
|
|
100
|
+
// aggregate.sort({ orderDate: params.sort.orderDate });
|
|
101
|
+
// }
|
|
102
|
+
{
|
|
103
|
+
$unwind: {
|
|
104
|
+
path: '$acceptedOffers'
|
|
105
|
+
// includeArrayIndex: 'elementIndex'
|
|
106
|
+
}
|
|
107
|
+
},
|
|
108
|
+
...matchStages
|
|
109
|
+
]);
|
|
110
|
+
if (Array.isArray(inclusion) && inclusion.length > 0) {
|
|
111
|
+
const specifiedProjection = {
|
|
112
|
+
_id: 0
|
|
113
|
+
};
|
|
114
|
+
inclusion.forEach((key) => {
|
|
115
|
+
specifiedProjection[key] = `$acceptedOffers.${key}`;
|
|
116
|
+
});
|
|
117
|
+
aggregate.project(specifiedProjection);
|
|
118
|
+
}
|
|
119
|
+
else {
|
|
120
|
+
aggregate.project({
|
|
121
|
+
_id: 0,
|
|
122
|
+
itemOffered: '$acceptedOffers.itemOffered',
|
|
123
|
+
priceSpecification: '$acceptedOffers.priceSpecification',
|
|
124
|
+
typeOf: '$acceptedOffers.typeOf',
|
|
125
|
+
id: '$acceptedOffers.id',
|
|
126
|
+
offeredThrough: '$acceptedOffers.offeredThrough',
|
|
127
|
+
name: '$acceptedOffers.name'
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
if (typeof filter.limit === 'number' && filter.limit > 0) {
|
|
131
|
+
const page = (typeof filter.page === 'number' && filter.page > 0) ? filter.page : 1;
|
|
132
|
+
aggregate.limit(filter.limit * page)
|
|
133
|
+
.skip(filter.limit * (page - 1));
|
|
134
|
+
}
|
|
135
|
+
return aggregate
|
|
136
|
+
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
137
|
+
.exec();
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* 特定のフィールド値リストを検索する
|
|
142
|
+
*/
|
|
143
|
+
distinctValues(filter, field) {
|
|
144
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
145
|
+
if (!Array.isArray(filter.orderNumber.$in) || filter.orderNumber.$in.length === 0) {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
const filterQuery = {
|
|
149
|
+
orderNumber: { $in: filter.orderNumber.$in }
|
|
150
|
+
};
|
|
151
|
+
filterQuery[field] = { $exists: true };
|
|
152
|
+
return this.orderModel.distinct(field, filterQuery)
|
|
153
|
+
.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
154
|
+
.exec();
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
exports.MongoRepository = MongoRepository;
|
|
@@ -36,12 +36,22 @@ export declare class MongoRepository {
|
|
|
36
36
|
/**
|
|
37
37
|
* コンテンツを保管する
|
|
38
38
|
*/
|
|
39
|
-
saveMovie(params: factory.creativeWork.movie.ICreativeWork
|
|
39
|
+
saveMovie(params: factory.creativeWork.movie.ICreativeWork & {
|
|
40
|
+
/**
|
|
41
|
+
* ドキュメント作成時には無視される
|
|
42
|
+
*/
|
|
43
|
+
$unset?: {
|
|
44
|
+
[key in keyof factory.creativeWork.movie.ICreativeWork]?: 1;
|
|
45
|
+
};
|
|
46
|
+
}): Promise<any>;
|
|
40
47
|
/**
|
|
41
48
|
* コードをキーにして冪等作成
|
|
42
49
|
*/
|
|
43
50
|
upsertMoviesByIdentifier(params: {
|
|
44
|
-
|
|
51
|
+
$set: factory.creativeWork.movie.ICreativeWork;
|
|
52
|
+
$unset?: {
|
|
53
|
+
[key in keyof factory.creativeWork.movie.ICreativeWork]?: 1;
|
|
54
|
+
};
|
|
45
55
|
}[], options?: {
|
|
46
56
|
replace?: boolean;
|
|
47
57
|
}): Promise<{
|
|
@@ -121,12 +121,13 @@ class MongoRepository {
|
|
|
121
121
|
return __awaiter(this, void 0, void 0, function* () {
|
|
122
122
|
let doc;
|
|
123
123
|
if (params.id === '') {
|
|
124
|
-
|
|
124
|
+
const { $unset } = params, createParams = __rest(params, ["$unset"]);
|
|
125
|
+
doc = yield this.creativeWorkModel.create(createParams);
|
|
125
126
|
}
|
|
126
127
|
else {
|
|
127
|
-
// 上書き禁止属性を除外
|
|
128
|
-
const { id, identifier, project, typeOf } = params,
|
|
129
|
-
doc = yield this.creativeWorkModel.findOneAndUpdate({ _id: { $eq: params.id } },
|
|
128
|
+
// 上書き禁止属性を除外
|
|
129
|
+
const { id, identifier, project, typeOf, $unset } = params, setFields = __rest(params, ["id", "identifier", "project", "typeOf", "$unset"]);
|
|
130
|
+
doc = yield this.creativeWorkModel.findOneAndUpdate({ _id: { $eq: params.id } }, Object.assign({ $set: setFields }, ($unset !== undefined) ? { $unset } : undefined), { upsert: false, new: true })
|
|
130
131
|
.exec();
|
|
131
132
|
}
|
|
132
133
|
if (doc === null) {
|
|
@@ -143,42 +144,55 @@ class MongoRepository {
|
|
|
143
144
|
return __awaiter(this, void 0, void 0, function* () {
|
|
144
145
|
const bulkWriteOps = [];
|
|
145
146
|
if (Array.isArray(params)) {
|
|
146
|
-
|
|
147
|
+
// tslint:disable-next-line:cyclomatic-complexity max-func-body-length
|
|
148
|
+
params.forEach(({ $set, $unset }) => {
|
|
149
|
+
// リソースのユニークネスを保証するfilter
|
|
150
|
+
const filter = {
|
|
151
|
+
typeOf: $set.typeOf,
|
|
152
|
+
'project.id': { $eq: $set.project.id },
|
|
153
|
+
identifier: { $eq: $set.identifier }
|
|
154
|
+
};
|
|
147
155
|
if ((options === null || options === void 0 ? void 0 : options.replace) === true) {
|
|
148
|
-
|
|
149
|
-
|
|
156
|
+
// updateOneで再実装
|
|
157
|
+
// const replacement: WithoutId<factory.creativeWork.movie.ICreativeWork> = replaceFields;
|
|
158
|
+
// const replaceOne: ReplaceOneModel<factory.creativeWork.movie.ICreativeWork> = {
|
|
159
|
+
// filter,
|
|
160
|
+
// replacement,
|
|
161
|
+
// upsert: true
|
|
162
|
+
// };
|
|
163
|
+
// bulkWriteOps.push({ replaceOne });
|
|
164
|
+
const { id, identifier, project, typeOf } = $set, setFields = __rest($set, ["id", "identifier", "project", "typeOf"]);
|
|
165
|
+
if (typeof identifier !== 'string' || identifier.length === 0) {
|
|
150
166
|
throw new factory.errors.ArgumentNull('identifier');
|
|
151
167
|
}
|
|
152
|
-
const
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
168
|
+
const setOnInsert = {
|
|
169
|
+
typeOf,
|
|
170
|
+
project,
|
|
171
|
+
identifier
|
|
172
|
+
};
|
|
173
|
+
const updateFilter = Object.assign({ $setOnInsert: setOnInsert, $set: setFields }, ($unset !== undefined) ? { $unset } : undefined);
|
|
174
|
+
const updateOne = {
|
|
175
|
+
filter,
|
|
176
|
+
update: updateFilter,
|
|
160
177
|
upsert: true
|
|
161
178
|
};
|
|
162
|
-
bulkWriteOps.push({
|
|
179
|
+
bulkWriteOps.push({ updateOne });
|
|
163
180
|
}
|
|
164
181
|
else {
|
|
165
|
-
const
|
|
182
|
+
const { typeOf, project, identifier, duration, name, additionalProperty, contentRating, headline, distributor, thumbnailUrl, datePublished } = $set, setOnInsertFields = __rest($set, ["typeOf", "project", "identifier", "duration", "name", "additionalProperty", "contentRating", "headline", "distributor", "thumbnailUrl", "datePublished"]);
|
|
166
183
|
if (typeof identifier !== 'string' || identifier.length === 0) {
|
|
167
184
|
throw new factory.errors.ArgumentNull('identifier');
|
|
168
185
|
}
|
|
186
|
+
const setOnInsert = Object.assign(Object.assign({}, setOnInsertFields), { typeOf,
|
|
187
|
+
project,
|
|
188
|
+
identifier });
|
|
169
189
|
const updateFilter = {
|
|
170
|
-
$setOnInsert:
|
|
171
|
-
project,
|
|
172
|
-
identifier }),
|
|
190
|
+
$setOnInsert: setOnInsert,
|
|
173
191
|
// 変更可能な属性のみ上書き
|
|
174
192
|
$set: Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, (name !== undefined) ? { name } : undefined), (contentRating !== undefined) ? { contentRating } : undefined), (duration !== undefined) ? { duration } : undefined), (headline !== undefined) ? { headline } : undefined), (datePublished !== undefined) ? { datePublished } : undefined), (distributor !== undefined) ? { distributor } : undefined), (typeof thumbnailUrl === 'string') ? { thumbnailUrl } : undefined), (Array.isArray(additionalProperty)) ? { additionalProperty } : [])
|
|
175
193
|
};
|
|
176
194
|
const updateOne = {
|
|
177
|
-
filter
|
|
178
|
-
typeOf: typeOf,
|
|
179
|
-
'project.id': { $eq: project.id },
|
|
180
|
-
identifier: { $eq: identifier }
|
|
181
|
-
},
|
|
195
|
+
filter,
|
|
182
196
|
update: updateFilter,
|
|
183
197
|
upsert: true
|
|
184
198
|
};
|
|
@@ -119,6 +119,18 @@ export declare class MongoRepository {
|
|
|
119
119
|
createScreeningEventSeriesIfNotExistByWorkPerformed(params: {
|
|
120
120
|
attributes: factory.event.IAttributes<factory.eventType.ScreeningEventSeries>;
|
|
121
121
|
}[]): Promise<BulkWriteResult | void>;
|
|
122
|
+
/**
|
|
123
|
+
* コンテンツ+バージョンをキーにして冪等置換
|
|
124
|
+
*/
|
|
125
|
+
upsertScreeningEventSeriesByVersion(params: {
|
|
126
|
+
$set: factory.event.IAttributes<factory.eventType.ScreeningEventSeries>;
|
|
127
|
+
$unset?: IUnset<factory.eventType.ScreeningEventSeries>;
|
|
128
|
+
}[]): Promise<{
|
|
129
|
+
bulkWriteResult4insert: BulkWriteResult;
|
|
130
|
+
modifiedEvents: {
|
|
131
|
+
id: string;
|
|
132
|
+
}[];
|
|
133
|
+
} | void>;
|
|
122
134
|
/**
|
|
123
135
|
* イベント部分更新
|
|
124
136
|
*/
|
|
@@ -135,6 +147,9 @@ export declare class MongoRepository {
|
|
|
135
147
|
save<T extends factory.eventType>(params: {
|
|
136
148
|
id?: string;
|
|
137
149
|
attributes: factory.event.IAttributes<T>;
|
|
150
|
+
/**
|
|
151
|
+
* ドキュメント作成時には無視される
|
|
152
|
+
*/
|
|
138
153
|
$unset?: IUnset<T>;
|
|
139
154
|
upsert?: boolean;
|
|
140
155
|
}): Promise<factory.event.IEvent<T>>;
|
package/lib/chevre/repo/event.js
CHANGED
|
@@ -605,6 +605,72 @@ class MongoRepository {
|
|
|
605
605
|
}
|
|
606
606
|
});
|
|
607
607
|
}
|
|
608
|
+
/**
|
|
609
|
+
* コンテンツ+バージョンをキーにして冪等置換
|
|
610
|
+
*/
|
|
611
|
+
// tslint:disable-next-line:max-func-body-length
|
|
612
|
+
upsertScreeningEventSeriesByVersion(params
|
|
613
|
+
// options?: {
|
|
614
|
+
// }
|
|
615
|
+
) {
|
|
616
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
617
|
+
const uniqid = yield Promise.resolve().then(() => require('uniqid'));
|
|
618
|
+
const bulkWriteOps4insert = [];
|
|
619
|
+
// const bulkWriteOps: AnyBulkWriteOperation<factory.event.IAttributes<factory.eventType.ScreeningEventSeries>>[] = [];
|
|
620
|
+
const queryFilters = [];
|
|
621
|
+
if (Array.isArray(params)) {
|
|
622
|
+
params.forEach(({ $set, $unset }) => {
|
|
623
|
+
const version = $set.workPerformed.version;
|
|
624
|
+
if (typeof version !== 'string' || version.length === 0) {
|
|
625
|
+
throw new factory.errors.ArgumentNull('workPerformed.version');
|
|
626
|
+
}
|
|
627
|
+
// リソースのユニークネスを保証するfilter
|
|
628
|
+
const filter = {
|
|
629
|
+
typeOf: $set.typeOf,
|
|
630
|
+
'project.id': { $eq: $set.project.id },
|
|
631
|
+
'location.branchCode': { $exists: true, $eq: $set.location.branchCode },
|
|
632
|
+
'workPerformed.identifier': { $exists: true, $eq: $set.workPerformed.identifier },
|
|
633
|
+
'workPerformed.version': { $exists: true, $eq: version }
|
|
634
|
+
};
|
|
635
|
+
queryFilters.push({
|
|
636
|
+
typeOf: $set.typeOf,
|
|
637
|
+
'project.id': { $eq: $set.project.id },
|
|
638
|
+
'location.branchCode': { $exists: true, $eq: $set.location.branchCode },
|
|
639
|
+
'workPerformed.identifier': { $exists: true, $eq: $set.workPerformed.identifier },
|
|
640
|
+
'workPerformed.version': { $exists: true, $eq: version }
|
|
641
|
+
});
|
|
642
|
+
const { identifier, project, typeOf } = $set, setFields = __rest($set, ["identifier", "project", "typeOf"]);
|
|
643
|
+
const setOnInsert = {
|
|
644
|
+
project,
|
|
645
|
+
typeOf,
|
|
646
|
+
_id: uniqid()
|
|
647
|
+
};
|
|
648
|
+
const updateOne = {
|
|
649
|
+
filter,
|
|
650
|
+
update: Object.assign({ $setOnInsert: setOnInsert, $set: setFields }, ($unset !== undefined) ? { $unset } : undefined),
|
|
651
|
+
upsert: true
|
|
652
|
+
};
|
|
653
|
+
bulkWriteOps4insert.push({ updateOne });
|
|
654
|
+
// updateOneで再実装
|
|
655
|
+
// const replacement: WithoutId<factory.event.IAttributes<factory.eventType.ScreeningEventSeries>> = attributes;
|
|
656
|
+
// const replaceOne: ReplaceOneModel<factory.event.IAttributes<factory.eventType.ScreeningEventSeries>> = {
|
|
657
|
+
// filter,
|
|
658
|
+
// replacement,
|
|
659
|
+
// upsert: true
|
|
660
|
+
// };
|
|
661
|
+
// bulkWriteOps.push({ replaceOne });
|
|
662
|
+
});
|
|
663
|
+
}
|
|
664
|
+
if (bulkWriteOps4insert.length > 0) {
|
|
665
|
+
const bulkWriteResult4insert = yield this.eventModel.bulkWrite(bulkWriteOps4insert, { ordered: false });
|
|
666
|
+
// const bulkWriteResult = await this.eventModel.bulkWrite(bulkWriteOps, { ordered: false });
|
|
667
|
+
// modifiedの場合upsertedIdsに含まれないので、idを検索する
|
|
668
|
+
const modifiedEvents = yield this.eventModel.find({ $or: queryFilters }, { _id: 1 })
|
|
669
|
+
.exec();
|
|
670
|
+
return { bulkWriteResult4insert, modifiedEvents };
|
|
671
|
+
}
|
|
672
|
+
});
|
|
673
|
+
}
|
|
608
674
|
/**
|
|
609
675
|
* イベント部分更新
|
|
610
676
|
*/
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { BulkWriteResult } from 'mongodb';
|
|
1
2
|
import { AnyExpression, Connection, PipelineStage } from 'mongoose';
|
|
2
3
|
import * as factory from '../factory';
|
|
3
4
|
type IMatchStage = PipelineStage.Match;
|
|
4
|
-
type KeyOfUnitPriceOffer = keyof factory.unitPriceOffer.IUnitPriceOffer
|
|
5
|
+
type KeyOfUnitPriceOffer = keyof Omit<factory.unitPriceOffer.IUnitPriceOffer, 'id'>;
|
|
5
6
|
type IProjection = {
|
|
6
7
|
[key in KeyOfUnitPriceOffer]?: 0 | 1;
|
|
7
8
|
};
|
|
@@ -151,14 +152,22 @@ export declare class MongoRepository {
|
|
|
151
152
|
}[]>;
|
|
152
153
|
count(params: Omit<factory.unitPriceOffer.ISearchConditions, 'limit' | 'page' | 'sort'>): Promise<number>;
|
|
153
154
|
search(params: factory.unitPriceOffer.ISearchConditions, projection?: IProjection): Promise<IUnitPriceOfferFromAggregateOffer[]>;
|
|
154
|
-
save(params: factory.unitPriceOffer.IUnitPriceOffer & {
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
save(params: factory.unitPriceOffer.IUnitPriceOffer & {}): Promise<factory.unitPriceOffer.IUnitPriceOffer>;
|
|
156
|
+
/**
|
|
157
|
+
* コードをキーにして冪等置換(2023-12-13~)
|
|
158
|
+
*/
|
|
159
|
+
upsertByIdentifier(params: Omit<factory.unitPriceOffer.IUnitPriceOffer, 'id'>[]): Promise<{
|
|
160
|
+
bulkWriteResult4insert: BulkWriteResult;
|
|
161
|
+
bulkWriteResult: BulkWriteResult;
|
|
162
|
+
modifiedOffers: {
|
|
163
|
+
id: string;
|
|
164
|
+
}[];
|
|
165
|
+
} | void>;
|
|
157
166
|
/**
|
|
158
167
|
* sskts専用オファー保管
|
|
159
168
|
*/
|
|
160
169
|
saveManyByIdentifier(params: {
|
|
161
|
-
attributes: factory.unitPriceOffer.IUnitPriceOffer
|
|
170
|
+
attributes: Omit<factory.unitPriceOffer.IUnitPriceOffer, 'id'>;
|
|
162
171
|
upsert?: boolean;
|
|
163
172
|
}[]): Promise<void>;
|
|
164
173
|
/**
|
package/lib/chevre/repo/offer.js
CHANGED
|
@@ -421,7 +421,8 @@ class MongoRepository {
|
|
|
421
421
|
},
|
|
422
422
|
typeOf: '$offers.typeOf',
|
|
423
423
|
project: '$project',
|
|
424
|
-
id: '$offers.id',
|
|
424
|
+
// id: '$offers.id',
|
|
425
|
+
id: '$_id',
|
|
425
426
|
identifier: '$offers.identifier',
|
|
426
427
|
name: '$offers.name',
|
|
427
428
|
description: '$offers.description',
|
|
@@ -461,17 +462,24 @@ class MongoRepository {
|
|
|
461
462
|
offerIndex: `$${OFFERS_ARRAY_INDEX_NAME}`,
|
|
462
463
|
parentOffer: {
|
|
463
464
|
id: '$_id'
|
|
464
|
-
}
|
|
465
|
+
},
|
|
466
|
+
id: '$_id' // 強制的に集計オファーIDに変更(2023-12-14~)
|
|
465
467
|
};
|
|
466
468
|
positiveProjectionFields.forEach((field) => {
|
|
467
|
-
|
|
469
|
+
// idは上書きしない(2023-12-14~)
|
|
470
|
+
if (field !== 'id') {
|
|
471
|
+
projectStage[field] = `$offers.${field}`;
|
|
472
|
+
}
|
|
468
473
|
});
|
|
469
474
|
}
|
|
470
475
|
else if (negativeProjectionFields.length > 0) {
|
|
471
476
|
negativeProjectionFields.forEach((field) => {
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
|
|
477
|
+
// idは除外しない(2023-12-14~)
|
|
478
|
+
if (field !== 'id') {
|
|
479
|
+
if (typeof projectStage[field] === 'string') {
|
|
480
|
+
// tslint:disable-next-line:no-dynamic-delete
|
|
481
|
+
delete projectStage[field];
|
|
482
|
+
}
|
|
475
483
|
}
|
|
476
484
|
});
|
|
477
485
|
}
|
|
@@ -757,7 +765,8 @@ class MongoRepository {
|
|
|
757
765
|
save(params) {
|
|
758
766
|
return __awaiter(this, void 0, void 0, function* () {
|
|
759
767
|
let doc;
|
|
760
|
-
const { $unset
|
|
768
|
+
// const { $unset, ...paramsWithoutUnset } = params;
|
|
769
|
+
const paramsWithoutUnset = __rest(params, []);
|
|
761
770
|
let savedUnitPriceOffer;
|
|
762
771
|
if (params.id === '') {
|
|
763
772
|
const uniqid = yield Promise.resolve().then(() => require('uniqid'));
|
|
@@ -776,7 +785,7 @@ class MongoRepository {
|
|
|
776
785
|
page: 1,
|
|
777
786
|
project: { id: { $eq: params.project.id } },
|
|
778
787
|
id: { $eq: params.id }
|
|
779
|
-
}, {
|
|
788
|
+
}, { identifier: 1, project: 1, typeOf: 1 });
|
|
780
789
|
const originalUnitPriceOffer = unitPriceOffers.shift();
|
|
781
790
|
if (originalUnitPriceOffer === undefined) {
|
|
782
791
|
throw new factory.errors.NotFound(factory.offerType.Offer);
|
|
@@ -803,6 +812,82 @@ class MongoRepository {
|
|
|
803
812
|
return savedUnitPriceOffer;
|
|
804
813
|
});
|
|
805
814
|
}
|
|
815
|
+
/**
|
|
816
|
+
* コードをキーにして冪等置換(2023-12-13~)
|
|
817
|
+
*/
|
|
818
|
+
upsertByIdentifier(params
|
|
819
|
+
// options?: {
|
|
820
|
+
// replace?: boolean;
|
|
821
|
+
// }
|
|
822
|
+
) {
|
|
823
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
824
|
+
const uniqid = yield Promise.resolve().then(() => require('uniqid'));
|
|
825
|
+
const insertBulkWriteOps = [];
|
|
826
|
+
const updateBulkWriteOps = [];
|
|
827
|
+
const queryFilters = [];
|
|
828
|
+
if (Array.isArray(params)) {
|
|
829
|
+
params.forEach((p) => {
|
|
830
|
+
// リソースのユニークネスを保証するfilter
|
|
831
|
+
const filter = {
|
|
832
|
+
'project.id': { $eq: p.project.id },
|
|
833
|
+
'offers.identifier': { $exists: true, $eq: p.identifier }
|
|
834
|
+
};
|
|
835
|
+
queryFilters.push({
|
|
836
|
+
'project.id': { $eq: p.project.id },
|
|
837
|
+
'offers.identifier': { $exists: true, $eq: p.identifier }
|
|
838
|
+
});
|
|
839
|
+
const newOfferId = uniqid(); // setOnInsert時のみに利用する新ID
|
|
840
|
+
const unitPriceOffer = Object.assign(Object.assign({}, p), { id: newOfferId });
|
|
841
|
+
const aggregateOffer = {
|
|
842
|
+
project: p.project,
|
|
843
|
+
typeOf: factory.offerType.AggregateOffer,
|
|
844
|
+
offers: [unitPriceOffer]
|
|
845
|
+
};
|
|
846
|
+
const setOnInsert = Object.assign(Object.assign({}, aggregateOffer), { _id: newOfferId });
|
|
847
|
+
const updateFilter = { $setOnInsert: setOnInsert };
|
|
848
|
+
const updateOneOnInsert = {
|
|
849
|
+
filter,
|
|
850
|
+
update: updateFilter,
|
|
851
|
+
upsert: true
|
|
852
|
+
};
|
|
853
|
+
insertBulkWriteOps.push({ updateOne: updateOneOnInsert });
|
|
854
|
+
});
|
|
855
|
+
}
|
|
856
|
+
if (insertBulkWriteOps.length > 0) {
|
|
857
|
+
const bulkWriteResult4insert = yield this.aggregateOfferModel.bulkWrite(insertBulkWriteOps, { ordered: false });
|
|
858
|
+
// modifiedの場合upsertedIdsに含まれないので、idを検索する
|
|
859
|
+
const modifiedOffers = yield this.aggregateOfferModel.find({ $or: queryFilters }, { _id: 1, 'offers.identifier': 1 })
|
|
860
|
+
.exec()
|
|
861
|
+
.then((docs) => docs.map((doc) => doc.toObject()));
|
|
862
|
+
params.forEach((p) => {
|
|
863
|
+
const originalAggregateOffer = modifiedOffers.find(((offer) => { var _a; return ((_a = offer.offers[0]) === null || _a === void 0 ? void 0 : _a.identifier) === p.identifier; }));
|
|
864
|
+
if (originalAggregateOffer === undefined) {
|
|
865
|
+
// upsert後なので、必ず存在するはず
|
|
866
|
+
throw new factory.errors.NotFound(`${factory.offerType.AggregateOffer} [${p.identifier}]`);
|
|
867
|
+
}
|
|
868
|
+
// リソースのユニークネスを保証するfilter
|
|
869
|
+
const filter = {
|
|
870
|
+
'project.id': { $eq: p.project.id },
|
|
871
|
+
'offers.identifier': { $exists: true, $eq: p.identifier }
|
|
872
|
+
};
|
|
873
|
+
const unitPriceOffer = Object.assign(Object.assign({}, p), { id: originalAggregateOffer.id });
|
|
874
|
+
const setOnUpdate = {
|
|
875
|
+
'offers.0': unitPriceOffer
|
|
876
|
+
};
|
|
877
|
+
const updateOne = {
|
|
878
|
+
filter,
|
|
879
|
+
update: { $set: setOnUpdate },
|
|
880
|
+
upsert: false
|
|
881
|
+
};
|
|
882
|
+
updateBulkWriteOps.push({ updateOne });
|
|
883
|
+
});
|
|
884
|
+
if (updateBulkWriteOps.length > 0) {
|
|
885
|
+
const bulkWriteResult = yield this.aggregateOfferModel.bulkWrite(updateBulkWriteOps, { ordered: false });
|
|
886
|
+
return { bulkWriteResult4insert, bulkWriteResult, modifiedOffers };
|
|
887
|
+
}
|
|
888
|
+
}
|
|
889
|
+
});
|
|
890
|
+
}
|
|
806
891
|
/**
|
|
807
892
|
* sskts専用オファー保管
|
|
808
893
|
*/
|
|
@@ -874,7 +959,7 @@ class MongoRepository {
|
|
|
874
959
|
const updatingOffers = yield this.search({
|
|
875
960
|
project: { id: { $eq: params.project.id } },
|
|
876
961
|
addOn: { itemOffered: { id: { $in: params.addOn.itemOffered.id.$in } } }
|
|
877
|
-
}, {
|
|
962
|
+
}, { identifier: 1 });
|
|
878
963
|
const result = yield this.aggregateOfferModel.updateMany(conditions, {
|
|
879
964
|
$pull: {
|
|
880
965
|
'offers.$[offer].addOn': {
|
|
@@ -893,16 +978,6 @@ class MongoRepository {
|
|
|
893
978
|
return result;
|
|
894
979
|
});
|
|
895
980
|
}
|
|
896
|
-
// public async deleteById(params: {
|
|
897
|
-
// project: { id: string };
|
|
898
|
-
// id: string;
|
|
899
|
-
// }) {
|
|
900
|
-
// await this.aggregateOfferModel.findOneAndRemove(
|
|
901
|
-
// { _id: { $eq: params.id } },
|
|
902
|
-
// { projection: { _id: 1 } }
|
|
903
|
-
// )
|
|
904
|
-
// .exec();
|
|
905
|
-
// }
|
|
906
981
|
/**
|
|
907
982
|
* サブカタログから集計オファーIDリストを検索する
|
|
908
983
|
*/
|