@chevre/domain 24.0.0-alpha.45 → 24.0.0-alpha.47

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.
@@ -27,6 +27,7 @@ import type { AggregateOrderRepo } from './repo/aggregateOrder';
27
27
  import type { AggregateReservationRepo } from './repo/aggregateReservation';
28
28
  import type { AggregationRepo } from './repo/aggregation';
29
29
  import type { AssetTransactionRepo } from './repo/assetTransaction';
30
+ import type { ReserveTransactionRepo } from './repo/assetTransaction/reserve';
30
31
  import type { AuthorizationRepo } from './repo/authorization';
31
32
  import type { CategoryCodeRepo } from './repo/categoryCode';
32
33
  import type { CommentRepo } from './repo/comment';
@@ -211,6 +212,12 @@ export type AssetTransaction = AssetTransactionRepo;
211
212
  export declare namespace AssetTransaction {
212
213
  function createInstance(...params: ConstructorParameters<typeof AssetTransactionRepo>): Promise<AssetTransactionRepo>;
213
214
  }
215
+ export declare namespace assetTransaction {
216
+ type Reserve = ReserveTransactionRepo;
217
+ namespace Reserve {
218
+ function createInstance(...params: ConstructorParameters<typeof ReserveTransactionRepo>): Promise<ReserveTransactionRepo>;
219
+ }
220
+ }
214
221
  export type CategoryCode = CategoryCodeRepo;
215
222
  export declare namespace CategoryCode {
216
223
  function createInstance(...params: ConstructorParameters<typeof CategoryCodeRepo>): Promise<CategoryCodeRepo>;
@@ -23,8 +23,8 @@ var __importStar = (this && this.__importStar) || function (mod) {
23
23
  return result;
24
24
  };
25
25
  Object.defineProperty(exports, "__esModule", { value: true });
26
- exports.PaymentServiceChannel = exports.PaymentService = exports.Passport = exports.OwnershipInfo = exports.OrderNumber = exports.OrderInTransaction = exports.Order = exports.Offer = exports.OfferItemCondition = exports.OfferCatalogItem = exports.OfferCatalog = exports.NoteAboutOrder = exports.Note = exports.MovieTicketType = exports.Message = exports.MerchantReturnPolicy = exports.MemberProgram = exports.Member = exports.Issuer = exports.IdentityProvider = exports.Identity = exports.EventSeries = exports.EventSellerMakesOffer = exports.EventOffer = exports.Event = exports.EmailMessage = exports.CustomerType = exports.Customer = exports.Credentials = exports.CreativeWork = exports.ConfirmationNumber = exports.Comment = exports.Authorization = exports.CategoryCode = exports.AssetTransaction = exports.Aggregation = exports.AggregateReservation = exports.AggregateOrder = exports.AggregateOffer = exports.AggregateAction = exports.AdvanceBookingRequirement = exports.AdditionalProperty = exports.action = exports.Action = exports.AccountTransaction = exports.AccountTitle = exports.AccountingReport = exports.Account = exports.AcceptedPaymentMethod = exports.AcceptedOffer = void 0;
27
- exports.WebSite = exports.rateLimit = exports.Trip = exports.TransactionProcess = exports.TransactionNumber = exports.transaction = exports.Transaction = exports.Ticket = exports.Task = exports.StockHolder = exports.setting = exports.Setting = exports.ServiceOutputIdentifier = exports.ServiceOutput = exports.ServiceAvailableHour = exports.SellerReturnPolicy = exports.SellerPaymentAccepted = exports.SellerMakesOffer = exports.Seller = exports.Schedule = exports.Role = exports.ReserveInterface = exports.Reservation = exports.ProjectMakesOffer = exports.Project = exports.ProductOffer = exports.ProductModel = exports.ProductHasOfferCatalog = exports.Product = exports.PriceSpecification = exports.PotentialAction = exports.place = exports.Permit = exports.Person = exports.paymentMethod = exports.PendingReservation = exports.PaymentServiceProvider = void 0;
26
+ exports.PaymentService = exports.Passport = exports.OwnershipInfo = exports.OrderNumber = exports.OrderInTransaction = exports.Order = exports.Offer = exports.OfferItemCondition = exports.OfferCatalogItem = exports.OfferCatalog = exports.NoteAboutOrder = exports.Note = exports.MovieTicketType = exports.Message = exports.MerchantReturnPolicy = exports.MemberProgram = exports.Member = exports.Issuer = exports.IdentityProvider = exports.Identity = exports.EventSeries = exports.EventSellerMakesOffer = exports.EventOffer = exports.Event = exports.EmailMessage = exports.CustomerType = exports.Customer = exports.Credentials = exports.CreativeWork = exports.ConfirmationNumber = exports.Comment = exports.Authorization = exports.CategoryCode = exports.assetTransaction = exports.AssetTransaction = exports.Aggregation = exports.AggregateReservation = exports.AggregateOrder = exports.AggregateOffer = exports.AggregateAction = exports.AdvanceBookingRequirement = exports.AdditionalProperty = exports.action = exports.Action = exports.AccountTransaction = exports.AccountTitle = exports.AccountingReport = exports.Account = exports.AcceptedPaymentMethod = exports.AcceptedOffer = void 0;
27
+ exports.WebSite = exports.rateLimit = exports.Trip = exports.TransactionProcess = exports.TransactionNumber = exports.transaction = exports.Transaction = exports.Ticket = exports.Task = exports.StockHolder = exports.setting = exports.Setting = exports.ServiceOutputIdentifier = exports.ServiceOutput = exports.ServiceAvailableHour = exports.SellerReturnPolicy = exports.SellerPaymentAccepted = exports.SellerMakesOffer = exports.Seller = exports.Schedule = exports.Role = exports.ReserveInterface = exports.Reservation = exports.ProjectMakesOffer = exports.Project = exports.ProductOffer = exports.ProductModel = exports.ProductHasOfferCatalog = exports.Product = exports.PriceSpecification = exports.PotentialAction = exports.place = exports.Permit = exports.Person = exports.paymentMethod = exports.PendingReservation = exports.PaymentServiceProvider = exports.PaymentServiceChannel = void 0;
28
28
  var AcceptedOffer;
29
29
  (function (AcceptedOffer) {
30
30
  let repo;
@@ -314,6 +314,20 @@ var AssetTransaction;
314
314
  }
315
315
  AssetTransaction.createInstance = createInstance;
316
316
  })(AssetTransaction || (exports.AssetTransaction = AssetTransaction = {}));
317
+ var assetTransaction;
318
+ (function (assetTransaction) {
319
+ let Reserve;
320
+ (function (Reserve) {
321
+ let repo;
322
+ async function createInstance(...params) {
323
+ if (repo === undefined) {
324
+ repo = (await Promise.resolve().then(() => __importStar(require('./repo/assetTransaction/reserve')))).ReserveTransactionRepo;
325
+ }
326
+ return new repo(...params);
327
+ }
328
+ Reserve.createInstance = createInstance;
329
+ })(Reserve = assetTransaction.Reserve || (assetTransaction.Reserve = {}));
330
+ })(assetTransaction || (exports.assetTransaction = assetTransaction = {}));
317
331
  var CategoryCode;
318
332
  (function (CategoryCode) {
319
333
  let repo;
@@ -63,7 +63,7 @@ function validateStartParams(params) {
63
63
  if (reserveTransaction === undefined) {
64
64
  // 予約存在確認
65
65
  if (typeof params.object.reservation?.id === 'string') {
66
- const reservation = await repos.reservation.projectFieldsById({
66
+ const reservation = await repos.reservation.findReservationById({
67
67
  id: params.object.reservation.id,
68
68
  inclusion: [
69
69
  'issuedThrough', 'typeOf', 'reservationNumber', 'reservationFor.id', 'reservationFor.typeOf', 'provider', 'reservationStatus'
@@ -244,7 +244,7 @@ function cancelReservation(actionAttributesList) {
244
244
  });
245
245
  }
246
246
  else {
247
- const reservation = await repos.reservation.projectFieldsById({
247
+ const reservation = await repos.reservation.findReservationById({
248
248
  id: actionAttributes.object.id,
249
249
  inclusion: ['reservationNumber', 'reservationStatus', 'project', 'reservedTicket', 'subReservation', 'reservationFor']
250
250
  });
@@ -319,10 +319,11 @@ function cancelReservation(actionAttributesList) {
319
319
  const reservationNumber = actionAttributes.object.reservationNumber;
320
320
  if (typeof reservationNumber === 'string' && reservationNumber.length > 0) {
321
321
  // 最新のconfirmedReservationsを検索
322
- canceledReservations = await repos.reservation.projectFields({
322
+ canceledReservations = await repos.reservation.findReservations({
323
323
  reservationNumber: { $eq: reservationNumber },
324
324
  typeOf: factory.reservationType.EventReservation
325
- }, { project: 1, typeOf: 1, modifiedTime: 1, reservationNumber: 1 });
325
+ }, { project: 1, typeOf: 1, modifiedTime: 1, reservationNumber: 1 } // 廃止属性の影響なし(2026-03-25~)
326
+ );
326
327
  canceledReservations = canceledReservations.map((r) => {
327
328
  // _idは不要であり、存在すると予期せぬ影響を及ぼす可能性がある
328
329
  delete r._id;
@@ -331,7 +332,7 @@ function cancelReservation(actionAttributesList) {
331
332
  }
332
333
  }
333
334
  else {
334
- const canceledReservation = await repos.reservation.projectFieldsById({
335
+ const canceledReservation = await repos.reservation.findReservationById({
335
336
  id: actionAttributes.object.id,
336
337
  inclusion: ['project', 'typeOf', 'modifiedTime', 'reservationNumber']
337
338
  });
@@ -45,7 +45,7 @@ function confirmReservation(params) {
45
45
  // await onReservationConfirmedByAction(actionAttributes)({ task: repos.task });
46
46
  // }
47
47
  // }));
48
- const actionAttributes = await reserveIfNotYet(params.potentialReserveAction, { byTask: params.byTask })(repos);
48
+ const { actionAttributes, reserveTransaction } = await reserveIfNotYet(params.potentialReserveAction, { byTask: params.byTask })(repos);
49
49
  if (params.useOnReservationConfirmed) {
50
50
  await (0, onReservationConfirmed_1.onReservationConfirmedByAction)(actionAttributes)({ task: repos.task });
51
51
  }
@@ -55,13 +55,30 @@ function confirmReservation(params) {
55
55
  const reservationNumber = params.potentialReserveAction.object.reservationNumber;
56
56
  if (typeof reservationNumber === 'string' && reservationNumber.length > 0) {
57
57
  // 最新のconfirmedReservationsを検索
58
- confirmedReservations = await repos.reservation.projectFields({
58
+ const rawReservations = await repos.reservation.findReservations({
59
59
  reservationNumber: { $eq: reservationNumber },
60
60
  typeOf: factory.reservationType.EventReservation
61
61
  }
62
62
  // project all fields
63
63
  // {}
64
64
  );
65
+ // price,underName,ticketTypeは予約取引から補完する(2026-03-25~)
66
+ confirmedReservations = rawReservations.map((rawReservation) => {
67
+ const subReservationByTransaction = reserveTransaction.object.subReservation?.find((s) => s.id === rawReservation.id);
68
+ const priceByTransaction = subReservationByTransaction?.price;
69
+ const underNameByTransaction = reserveTransaction.object.underName;
70
+ const ticketTypeByTransaction = subReservationByTransaction?.reservedTicket.ticketType;
71
+ // console.log('creating confirmedReservation...', rawReservation, priceByTransaction, underNameByTransaction, ticketTypeByTransaction);
72
+ return {
73
+ ...rawReservation,
74
+ ...(priceByTransaction !== undefined) ? { price: priceByTransaction } : undefined,
75
+ ...(underNameByTransaction !== undefined) ? { underName: underNameByTransaction } : undefined,
76
+ reservedTicket: {
77
+ ...rawReservation.reservedTicket,
78
+ ...(ticketTypeByTransaction !== undefined) ? { ticketType: ticketTypeByTransaction } : undefined
79
+ }
80
+ };
81
+ });
65
82
  confirmedReservations = confirmedReservations.map((r) => {
66
83
  // _idは不要であり、存在すると予期せぬ影響を及ぼす可能性がある
67
84
  delete r._id;
@@ -211,6 +228,6 @@ params, options) {
211
228
  const actionResult = {};
212
229
  await repos.action.completeWithVoid({ typeOf: action.typeOf, id: action.id, result: actionResult });
213
230
  }
214
- return actionAttributes;
231
+ return { actionAttributes, reserveTransaction };
215
232
  };
216
233
  }
@@ -82,7 +82,7 @@ function findByCode(params) {
82
82
  default:
83
83
  throw new factory.errors.NotImplemented(`authorization object typeOf: ${authorization.object.typeOf} not implemented`);
84
84
  }
85
- const reservationFromRepo = await repos.reservation.projectFieldsById({
85
+ const reservationFromRepo = await repos.reservation.findReservationById({
86
86
  id: reservationId,
87
87
  inclusion: [
88
88
  'additionalTicketText', 'checkedIn', 'reservationStatus',
@@ -0,0 +1,19 @@
1
+ import * as factory from '../../factory';
2
+ import type { ReserveTransactionRepo } from '../../repo/assetTransaction/reserve';
3
+ import type { IDeprecatedField, IKeyOfProjection, ReservationRepo } from '../../repo/reservation';
4
+ type IReservationAsFindResult = Omit<factory.reservation.eventReservation.IReservation, 'price'> & {
5
+ price?: factory.reservation.eventReservation.IPrice;
6
+ };
7
+ /**
8
+ * 予約を検索する
9
+ */
10
+ export declare function findReservations(params: factory.reservation.eventReservation.ISearchConditions, options: {
11
+ inclusion: Partial<Record<IKeyOfProjection | IDeprecatedField, 1>>;
12
+ useReserveTransaction: boolean;
13
+ }): (repos: {
14
+ assetTransaction: {
15
+ reserve: ReserveTransactionRepo;
16
+ };
17
+ reservation: ReservationRepo;
18
+ }) => Promise<IReservationAsFindResult[]>;
19
+ export {};
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.findReservations = findReservations;
7
+ const debug_1 = __importDefault(require("debug"));
8
+ const util_1 = require("util");
9
+ const debug = (0, debug_1.default)('chevre-domain:service:reserve:findReservations');
10
+ /**
11
+ * 予約を検索する
12
+ */
13
+ function findReservations(params, options) {
14
+ return async (repos) => {
15
+ const { inclusion, useReserveTransaction } = options;
16
+ let reservations = await repos.reservation.findReservations(params, inclusion);
17
+ if (useReserveTransaction) {
18
+ if (reservations.length > 0) {
19
+ const requirePrice = Object.keys(inclusion).includes('price');
20
+ const requireUnderName = Object.keys(inclusion).includes('underName');
21
+ const requireReservedTicket = Object.keys(inclusion).includes('reservedTicket');
22
+ const reservationIds = reservations.map(({ id }) => id);
23
+ const subReservations = await repos.assetTransaction.reserve.findSubReservationsById({
24
+ ids: reservationIds
25
+ });
26
+ // 予約取引から参照した予約数と同じはず
27
+ debug('useReserveTransaction: true. reservations.length === subReservations.length?', reservations.length === subReservations.length);
28
+ reservations = reservations.map((reservation) => {
29
+ const subReservationByTransaction = subReservations.find((s) => s.id === reservation.id);
30
+ const priceByTransaction = subReservationByTransaction?.price;
31
+ const underNameByTransaction = subReservationByTransaction?.underName;
32
+ const ticketTypeByTransaction = subReservationByTransaction?.reservedTicket?.ticketType;
33
+ // 予約取引から参照した属性と全く等しいはず
34
+ if (requirePrice) {
35
+ const priceMatched = (0, util_1.isDeepStrictEqual)(reservation.price, priceByTransaction);
36
+ debug('requirePrice. priceMatched?', priceMatched);
37
+ if (!priceMatched) {
38
+ console.error('priceMatched: false!!!', reservation.id);
39
+ }
40
+ }
41
+ if (requireUnderName) {
42
+ const underNameMatched = (0, util_1.isDeepStrictEqual)(reservation.underName, underNameByTransaction);
43
+ debug('requireUnderName. underNameMatched?', underNameMatched);
44
+ if (!underNameMatched) {
45
+ console.error('underNameMatched: false!!!', reservation.id);
46
+ }
47
+ }
48
+ if (requireReservedTicket) {
49
+ const ticketTypeMatched = (0, util_1.isDeepStrictEqual)(reservation.reservedTicket.ticketType, ticketTypeByTransaction);
50
+ debug('requireReservedTicket. ticketTypeMatched?', ticketTypeMatched);
51
+ if (!ticketTypeMatched) {
52
+ console.error('ticketTypeMatched: false!!!', reservation.id);
53
+ }
54
+ }
55
+ return {
56
+ ...reservation, // 予約ドキュメントはそのまま返す
57
+ ...(requirePrice && priceByTransaction !== undefined) ? { price: priceByTransaction } : undefined, // priceがあれば上書き
58
+ ...(requireUnderName && underNameByTransaction !== undefined) ? { underName: underNameByTransaction } : undefined, // underNameがあれば上書き
59
+ ...(requireReservedTicket && ticketTypeByTransaction !== undefined) // ticketTypeがあれば上書き
60
+ ? {
61
+ reservedTicket: {
62
+ ...reservation.reservedTicket, // 予約ドキュメントのreservedTicketはそのまま返す
63
+ ticketType: ticketTypeByTransaction
64
+ }
65
+ }
66
+ : undefined
67
+ };
68
+ });
69
+ }
70
+ ;
71
+ }
72
+ return reservations;
73
+ };
74
+ }
@@ -5,16 +5,18 @@ import * as factory from '../../../factory';
5
5
  import { AuthorizationRepo } from '../../../repo/authorization';
6
6
  import type { SettingRepo } from '../../../repo/setting';
7
7
  import type { TaskRepo } from '../../../repo/task';
8
- type IEventReservation = factory.reservation.IReservation<factory.reservationType.EventReservation>;
8
+ export type IConfirmedReservation = Omit<factory.reservation.eventReservation.IReservation, 'price' | 'underName'> & {
9
+ price?: factory.reservation.eventReservation.IPrice;
10
+ underName?: factory.reservation.IUnderName<factory.reservationType.EventReservation>;
11
+ };
9
12
  /**
10
13
  * 予約確定後のアクション
11
14
  */
12
15
  export declare function onReservationConfirmedByAction(actionAttributes: Pick<factory.action.reserve.IAttributes, 'potentialActions'>): (repos: {
13
16
  task: TaskRepo;
14
17
  }) => Promise<void>;
15
- export declare function onReservationConfirmed(confirmedReservations: IEventReservation[], reserveAction: Pick<factory.action.reserve.IAttributes, 'instrument'>): (repos: {
18
+ export declare function onReservationConfirmed(confirmedReservations: IConfirmedReservation[], reserveAction: Pick<factory.action.reserve.IAttributes, 'instrument'>): (repos: {
16
19
  code: AuthorizationRepo;
17
20
  setting: SettingRepo;
18
21
  task: TaskRepo;
19
22
  }) => Promise<void>;
20
- export {};
@@ -104,11 +104,12 @@ function searchByOrder(params) {
104
104
  break;
105
105
  }
106
106
  default:
107
- reservations = await repos.reservation.projectFields({
107
+ reservations = await repos.reservation.findReservations({
108
108
  project: { id: { $eq: params.project.id } },
109
109
  typeOf: reservationType,
110
110
  id: { $in: reservationIds }
111
- }, { id: 1, additionalTicketText: 1, reservationStatus: 1 });
111
+ }, { id: 1, additionalTicketText: 1, reservationStatus: 1 } // 廃止属性の影響なし(2026-03-25~)
112
+ );
112
113
  }
113
114
  }
114
115
  return { reservations };
@@ -55,7 +55,7 @@ function useReservation(params) {
55
55
  // confirmReservationが間に合わない可能性を考慮する(2023-06-01~)
56
56
  await reserveIfNotYet({ object: params.object })(repos);
57
57
  // 予約検索
58
- const reservation = await repos.reservation.projectFieldsById({
58
+ const reservation = await repos.reservation.findReservationById({
59
59
  id: reservationId,
60
60
  inclusion: ['issuedThrough', 'project', 'reservationFor', 'reservationNumber', 'reservedTicket', 'typeOf']
61
61
  });
@@ -5,6 +5,7 @@ import { cancelPendingReservation, cancelReservation } from './reserve/cancelRes
5
5
  import { checkInReservation } from './reserve/checkInReservation';
6
6
  import { confirmReservation } from './reserve/confirmReservation';
7
7
  import { findByCode } from './reserve/findByCode';
8
+ import { findReservations } from './reserve/findReservations';
8
9
  import { searchByOrder } from './reserve/searchByOrder';
9
10
  import { verifyToken4reservation } from './reserve/verifyToken4reservation';
10
- export { cancelPendingReservation, cancelReservation, checkInReservation, confirmReservation, findByCode, searchByOrder, verifyToken4reservation };
11
+ export { cancelPendingReservation, cancelReservation, checkInReservation, confirmReservation, findByCode, findReservations, searchByOrder, verifyToken4reservation };
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.verifyToken4reservation = exports.searchByOrder = exports.findByCode = exports.confirmReservation = exports.checkInReservation = exports.cancelReservation = exports.cancelPendingReservation = void 0;
3
+ exports.verifyToken4reservation = exports.searchByOrder = exports.findReservations = exports.findByCode = exports.confirmReservation = exports.checkInReservation = exports.cancelReservation = exports.cancelPendingReservation = void 0;
4
4
  /**
5
5
  * 予約サービス
6
6
  */
@@ -13,6 +13,8 @@ const confirmReservation_1 = require("./reserve/confirmReservation");
13
13
  Object.defineProperty(exports, "confirmReservation", { enumerable: true, get: function () { return confirmReservation_1.confirmReservation; } });
14
14
  const findByCode_1 = require("./reserve/findByCode");
15
15
  Object.defineProperty(exports, "findByCode", { enumerable: true, get: function () { return findByCode_1.findByCode; } });
16
+ const findReservations_1 = require("./reserve/findReservations");
17
+ Object.defineProperty(exports, "findReservations", { enumerable: true, get: function () { return findReservations_1.findReservations; } });
16
18
  const searchByOrder_1 = require("./reserve/searchByOrder");
17
19
  Object.defineProperty(exports, "searchByOrder", { enumerable: true, get: function () { return searchByOrder_1.searchByOrder; } });
18
20
  const verifyToken4reservation_1 = require("./reserve/verifyToken4reservation");
@@ -196,13 +196,14 @@ function checkUsedReservationExists(params) {
196
196
  }, 'acceptedOffers.itemOffered.reservationNumber');
197
197
  if (reservationNumbers.length > 0) {
198
198
  // 使用済の予約がひとつでもあれば不可
199
- const existingUsedReservations = await repos.reservation.projectFields({
199
+ const existingUsedReservations = await repos.reservation.findReservations({
200
200
  limit: 1,
201
201
  page: 1,
202
202
  typeOf: factory.reservationType.EventReservation,
203
203
  reservationNumber: { $in: reservationNumbers },
204
204
  attended: true
205
- }, { id: 1 });
205
+ }, { id: 1 } // 廃止属性の影響なし(2026-03-25~)
206
+ );
206
207
  if (existingUsedReservations.length > 0) {
207
208
  usedReservationExists = true;
208
209
  }
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "dependencies": {
12
12
  "@aws-sdk/client-cognito-identity-provider": "3.600.0",
13
13
  "@aws-sdk/credential-providers": "3.600.0",
14
- "@chevre/factory": "6.0.0-alpha.8",
14
+ "@chevre/factory": "6.0.0-alpha.9",
15
15
  "@cinerino/sdk": "13.3.0",
16
16
  "@motionpicture/coa-service": "9.6.0",
17
17
  "@motionpicture/gmo-service": "5.4.0-alpha.1",
@@ -99,5 +99,5 @@
99
99
  "postversion": "git push origin --tags",
100
100
  "prepublishOnly": "npm run clean && npm run build"
101
101
  },
102
- "version": "24.0.0-alpha.45"
102
+ "version": "24.0.0-alpha.47"
103
103
  }