@chevre/domain 23.0.0-alpha.12 → 23.0.0-alpha.14

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.
@@ -0,0 +1,29 @@
1
+ // tslint:disable:no-console
2
+ import * as mongoose from 'mongoose';
3
+
4
+ import { chevre } from '../../../../lib/index';
5
+
6
+ const project = { id: String(process.env.PROJECT_ID) };
7
+
8
+ async function main() {
9
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
10
+
11
+ const categoryCodeRepo = await chevre.repository.CategoryCode.createInstance(mongoose.connection);
12
+
13
+ const categoryCodes = await categoryCodeRepo.projectFields(
14
+ {
15
+ limit: 100,
16
+ page: 1,
17
+ project: { id: { $eq: project.id } },
18
+ inCodeSet: { identifier: { $eq: chevre.factory.categoryCode.CategorySetIdentifier.MovieTicketType } }
19
+ },
20
+ [],
21
+ { excludeMovieTicketType: false }
22
+ );
23
+ // tslint:disable-next-line:no-null-keyword
24
+ console.dir(categoryCodes.map(({ inCodeSet }) => inCodeSet.identifier), { depth: null });
25
+ }
26
+
27
+ main()
28
+ .then()
29
+ .catch(console.error);
@@ -15,7 +15,7 @@ async function main() {
15
15
  chevre.factory.role.organizationRole.RoleName.TicketClerk
16
16
  ];
17
17
  const permissions = [
18
- 'admin.products.read'
18
+ 'admin.paymentServices.read'
19
19
  ];
20
20
  for (const roleName of roleNames) {
21
21
  for (const permission of permissions) {
@@ -0,0 +1,12 @@
1
+
2
+ // tslint:disable:no-console no-magic-numbers no-null-keyword
3
+ import * as mongoose from 'mongoose';
4
+
5
+ // const MONGOLAB_URI = String(process.env.MONGOLAB_URI);
6
+
7
+ async function main() {
8
+ console.log(new mongoose.Types.ObjectId());
9
+ }
10
+
11
+ main()
12
+ .catch(console.error);
@@ -10,7 +10,9 @@ type IUnset = {
10
10
  export declare class CategoryCodeRepo {
11
11
  private readonly categoryCodeModel;
12
12
  constructor(connection: Connection);
13
- static CREATE_MONGO_CONDITIONS(params: factory.categoryCode.ISearchConditions): FilterQuery<factory.categoryCode.ICategoryCode>[];
13
+ static CREATE_MONGO_CONDITIONS(params: factory.categoryCode.ISearchConditions, options?: {
14
+ excludeMovieTicketType?: boolean;
15
+ }): FilterQuery<factory.categoryCode.ICategoryCode>[];
14
16
  static CREATE_AGGREGATE_PROJECTION(inclusion: IKeyOfProjection[]): {
15
17
  [field: string]: AnyExpression;
16
18
  };
@@ -25,7 +27,9 @@ export declare class CategoryCodeRepo {
25
27
  /**
26
28
  * 空の場合無効
27
29
  */
28
- inclusion: IKeyOfProjection[]): Promise<(factory.categoryCode.ICategoryCode & {
30
+ inclusion: IKeyOfProjection[], options?: {
31
+ excludeMovieTicketType?: boolean;
32
+ }): Promise<(factory.categoryCode.ICategoryCode & {
29
33
  id: string;
30
34
  })[]>;
31
35
  save(params: {
@@ -36,9 +36,29 @@ class CategoryCodeRepo {
36
36
  this.categoryCodeModel = connection.model(categoryCode_1.modelName, (0, categoryCode_1.createSchema)());
37
37
  }
38
38
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
39
- static CREATE_MONGO_CONDITIONS(params) {
39
+ static CREATE_MONGO_CONDITIONS(params, options) {
40
40
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
41
+ const excludeMovieTicketType = (options === null || options === void 0 ? void 0 : options.excludeMovieTicketType) === true;
41
42
  const andConditions = [];
43
+ if (excludeMovieTicketType) {
44
+ andConditions.push({
45
+ 'inCodeSet.identifier': {
46
+ $in: [
47
+ factory.categoryCode.CategorySetIdentifier.ContentRatingType,
48
+ factory.categoryCode.CategorySetIdentifier.CurrencyType,
49
+ factory.categoryCode.CategorySetIdentifier.CustomerType,
50
+ factory.categoryCode.CategorySetIdentifier.DistributorType,
51
+ factory.categoryCode.CategorySetIdentifier.MembershipType,
52
+ factory.categoryCode.CategorySetIdentifier.OfferCategoryType,
53
+ factory.categoryCode.CategorySetIdentifier.PaymentMethodType,
54
+ factory.categoryCode.CategorySetIdentifier.SeatingType,
55
+ factory.categoryCode.CategorySetIdentifier.ServiceType,
56
+ factory.categoryCode.CategorySetIdentifier.SoundFormatType,
57
+ factory.categoryCode.CategorySetIdentifier.VideoFormatType
58
+ ]
59
+ }
60
+ });
61
+ }
42
62
  // tslint:disable-next-line:no-single-line-block-comment
43
63
  /* istanbul ignore else */
44
64
  if (params.project !== undefined && params.project !== null) {
@@ -99,7 +119,6 @@ class CategoryCodeRepo {
99
119
  if (typeof params.inCodeSet.identifier.$eq === 'string') {
100
120
  andConditions.push({
101
121
  'inCodeSet.identifier': {
102
- $exists: true,
103
122
  $eq: params.inCodeSet.identifier.$eq
104
123
  }
105
124
  });
@@ -110,7 +129,6 @@ class CategoryCodeRepo {
110
129
  if (Array.isArray(inCodeSetIdentifierIn)) {
111
130
  andConditions.push({
112
131
  'inCodeSet.identifier': {
113
- $exists: true,
114
132
  $in: inCodeSetIdentifierIn
115
133
  }
116
134
  });
@@ -207,18 +225,13 @@ class CategoryCodeRepo {
207
225
  /**
208
226
  * 空の場合無効
209
227
  */
210
- inclusion) {
228
+ inclusion, options) {
211
229
  return __awaiter(this, void 0, void 0, function* () {
212
- const conditions = CategoryCodeRepo.CREATE_MONGO_CONDITIONS(params);
230
+ const conditions = CategoryCodeRepo.CREATE_MONGO_CONDITIONS(params, options);
213
231
  let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
214
232
  if (Array.isArray(inclusion) && inclusion.length > 0) {
215
233
  positiveProjectionFields = inclusion.filter((key) => AVAILABLE_PROJECT_FIELDS.includes(key));
216
234
  }
217
- else {
218
- // if (Array.isArray(exclusion) && exclusion.length > 0) {
219
- // positiveProjectionFields = positiveProjectionFields.filter((key) => !exclusion.includes(key));
220
- // }
221
- }
222
235
  const projection = Object.assign({ _id: 0, id: { $toString: '$_id' } }, Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1]))));
223
236
  const query = this.categoryCodeModel.find((conditions.length > 0) ? { $and: conditions } : {}, projection);
224
237
  if (typeof params.limit === 'number' && params.limit > 0) {
@@ -280,7 +293,6 @@ class CategoryCodeRepo {
280
293
  'project.id': { $eq: p.attributes.project.id },
281
294
  codeValue: { $eq: p.attributes.codeValue },
282
295
  'inCodeSet.identifier': {
283
- $exists: true,
284
296
  $eq: p.attributes.inCodeSet.identifier
285
297
  }
286
298
  },
@@ -1,5 +1,5 @@
1
1
  import type { BulkWriteResult } from 'mongodb';
2
- import type { Connection, Document, FilterQuery } from 'mongoose';
2
+ import { Connection, Document, FilterQuery } from 'mongoose';
3
3
  import * as factory from '../factory';
4
4
  import * as EventFactory from '../factory/event';
5
5
  export interface IAttributes4patchUpdate {
@@ -63,6 +63,10 @@ export type ICreatingEvent4ttts = Pick<factory.event.screeningEvent.IAttributes,
63
63
  export declare class EventRepo {
64
64
  private readonly eventModel;
65
65
  constructor(connection: Connection);
66
+ /**
67
+ * イベントIDを生成する
68
+ */
69
+ static CREATE_ID(): string;
66
70
  static CREATE_MONGO_CONDITIONS(conditions: ISearchConditions): FilterQuery<factory.event.screeningEvent.IEvent>[];
67
71
  /**
68
72
  * 複数イベントを作成する
@@ -21,11 +21,14 @@ var __rest = (this && this.__rest) || function (s, e) {
21
21
  };
22
22
  Object.defineProperty(exports, "__esModule", { value: true });
23
23
  exports.EventRepo = void 0;
24
+ const mongoose_1 = require("mongoose");
25
+ const uniqid = require("uniqid");
26
+ const errorHandler_1 = require("../errorHandler");
24
27
  const factory = require("../factory");
25
28
  const EventFactory = require("../factory/event");
26
- const event_1 = require("./mongoose/schemas/event");
27
- const errorHandler_1 = require("../errorHandler");
28
29
  const settings_1 = require("../settings");
30
+ const event_1 = require("./mongoose/schemas/event");
31
+ const USE_OBJECT_ID_AS_EVENT_ID = process.env.USE_OBJECT_ID_AS_EVENT_ID === '1';
29
32
  const AVAILABLE_PUBLIC_PROJECT_FIELDS = [
30
33
  'additionalProperty', 'aggregateReservation', 'attendeeCount', 'checkInCount', 'coaInfo',
31
34
  // 'description',
@@ -41,6 +44,13 @@ class EventRepo {
41
44
  constructor(connection) {
42
45
  this.eventModel = connection.model(event_1.modelName, (0, event_1.createSchema)());
43
46
  }
47
+ /**
48
+ * イベントIDを生成する
49
+ */
50
+ static CREATE_ID() {
51
+ // implement using ObjectId(2025-10-17~)
52
+ return (USE_OBJECT_ID_AS_EVENT_ID) ? new mongoose_1.Types.ObjectId().toHexString() : uniqid();
53
+ }
44
54
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
45
55
  static CREATE_MONGO_CONDITIONS(conditions) {
46
56
  var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w, _x, _y, _z, _0, _1, _2, _3, _4;
@@ -260,9 +270,8 @@ class EventRepo {
260
270
  */
261
271
  createManyEvents(params) {
262
272
  return __awaiter(this, void 0, void 0, function* () {
263
- const uniqid = yield Promise.resolve().then(() => require('uniqid'));
264
273
  const insertingDocs = params.attributes.map((p) => {
265
- return Object.assign({ _id: uniqid() }, p);
274
+ return Object.assign({ _id: EventRepo.CREATE_ID() }, p);
266
275
  });
267
276
  try {
268
277
  yield this.eventModel.insertMany(insertingDocs, { rawResult: true } // rawResult(2024-08-02~)
@@ -292,7 +301,6 @@ class EventRepo {
292
301
  upsertManyByAdditionalProperty(params, options) {
293
302
  return __awaiter(this, void 0, void 0, function* () {
294
303
  const { update } = options;
295
- const uniqid = yield Promise.resolve().then(() => require('uniqid'));
296
304
  const bulkWriteOps = [];
297
305
  const additionalProperties = [];
298
306
  const { events, additionalPropertyFilter, eventSeries, screeningRoom } = params;
@@ -347,7 +355,7 @@ class EventRepo {
347
355
  maximumAttendeeCapacity, remainingAttendeeCapacity, checkInCount, attendeeCount, aggregateReservation, // ←適用しない
348
356
  eventStatus, superEvent } = creatingEventParams, // <-上書き可能な属性を限定的に
349
357
  setOnInsertFields = __rest(creatingEventParams, ["coaInfo", "maximumAttendeeCapacity", "remainingAttendeeCapacity", "checkInCount", "attendeeCount", "aggregateReservation", "eventStatus", "superEvent"]);
350
- const setOnInsert = Object.assign(Object.assign({}, setOnInsertFields), { _id: uniqid() });
358
+ const setOnInsert = Object.assign(Object.assign({}, setOnInsertFields), { _id: EventRepo.CREATE_ID() });
351
359
  bulkWriteOps.push({
352
360
  updateOne: {
353
361
  filter,
@@ -389,7 +397,6 @@ class EventRepo {
389
397
  upsertManyScreeningEventByIdentifier(params, options) {
390
398
  return __awaiter(this, void 0, void 0, function* () {
391
399
  const { update } = options;
392
- const uniqid = yield Promise.resolve().then(() => require('uniqid'));
393
400
  const bulkWriteOps = [];
394
401
  const queryFilters = [];
395
402
  if (Array.isArray(params)) {
@@ -423,7 +430,7 @@ class EventRepo {
423
430
  }
424
431
  else {
425
432
  const { id, coaInfo, description, maximumAttendeeCapacity, remainingAttendeeCapacity, checkInCount, attendeeCount, aggregateReservation } = $set, setOnInsertFields = __rest($set, ["id", "coaInfo", "description", "maximumAttendeeCapacity", "remainingAttendeeCapacity", "checkInCount", "attendeeCount", "aggregateReservation"]);
426
- const setOnInsert = Object.assign(Object.assign({}, setOnInsertFields), { identifier, _id: uniqid() });
433
+ const setOnInsert = Object.assign(Object.assign({}, setOnInsertFields), { identifier, _id: EventRepo.CREATE_ID() });
427
434
  const updateOne = {
428
435
  filter,
429
436
  update: {
@@ -485,8 +492,7 @@ class EventRepo {
485
492
  }
486
493
  try {
487
494
  if (params.id === undefined) {
488
- const uniqid = yield Promise.resolve().then(() => require('uniqid'));
489
- const id = uniqid();
495
+ const id = EventRepo.CREATE_ID();
490
496
  doc = yield this.eventModel.create(Object.assign(Object.assign({}, params.attributes), { _id: id }));
491
497
  savedEventId = id;
492
498
  }
@@ -566,8 +572,7 @@ class EventRepo {
566
572
  if (typeof identifier !== 'string' || identifier.length === 0) {
567
573
  throw new factory.errors.ArgumentNull('identifier');
568
574
  }
569
- const uniqid = yield Promise.resolve().then(() => require('uniqid'));
570
- const id = uniqid();
575
+ const id = EventRepo.CREATE_ID();
571
576
  const doc = yield this.eventModel.findOneAndUpdate(
572
577
  // 全イベントにidentifierを保証したので、additionalPropertyによるフィルターからidentifierによるフィルターへ変更(2025-09-05~)
573
578
  // {
package/package.json CHANGED
@@ -115,5 +115,5 @@
115
115
  "postversion": "git push origin --tags",
116
116
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
117
117
  },
118
- "version": "23.0.0-alpha.12"
118
+ "version": "23.0.0-alpha.14"
119
119
  }