@chevre/domain 21.4.0-alpha.9 → 21.5.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.
Files changed (94) hide show
  1. package/example/src/chevre/cleanEventsByMovieTheater.ts +32 -0
  2. package/example/src/chevre/createDeleteTransactionTasksOfDeletedPeople.ts +126 -0
  3. package/example/src/chevre/iam/searchMemberOfIdsByMemberId.ts +31 -0
  4. package/example/src/chevre/iam/searchProjectIdsByMemberId.ts +32 -0
  5. package/example/src/chevre/importEventsFromCOA.ts +5 -4
  6. package/example/src/chevre/migrateEventOrganizer.ts +18 -5
  7. package/example/src/chevre/migrateIAMMemberMemberOf.ts +59 -0
  8. package/example/src/chevre/migrateReservationProvider.ts +119 -0
  9. package/example/src/chevre/migrateScreeningRoomOrganizer.ts +91 -0
  10. package/example/src/chevre/processReserve.ts +0 -1
  11. package/example/src/chevre/searchActions.ts +1 -1
  12. package/example/src/chevre/searchPermissions.ts +7 -15
  13. package/lib/chevre/factory/event.d.ts +1 -1
  14. package/lib/chevre/repo/assetTransaction.d.ts +4 -1
  15. package/lib/chevre/repo/assetTransaction.js +6 -12
  16. package/lib/chevre/repo/event.d.ts +24 -0
  17. package/lib/chevre/repo/event.js +43 -1
  18. package/lib/chevre/repo/member.d.ts +92 -5
  19. package/lib/chevre/repo/member.js +125 -97
  20. package/lib/chevre/repo/mongoose/schemas/event.d.ts +3 -3
  21. package/lib/chevre/repo/mongoose/schemas/member.d.ts +7 -7
  22. package/lib/chevre/repo/mongoose/schemas/member.js +22 -8
  23. package/lib/chevre/repo/mongoose/schemas/place.d.ts +6 -6
  24. package/lib/chevre/repo/mongoose/schemas/place.js +9 -2
  25. package/lib/chevre/repo/mongoose/schemas/product.d.ts +3 -3
  26. package/lib/chevre/repo/mongoose/schemas/reservation.d.ts +6 -3
  27. package/lib/chevre/repo/mongoose/schemas/reservation.js +10 -4
  28. package/lib/chevre/repo/order.d.ts +21 -0
  29. package/lib/chevre/repo/order.js +54 -62
  30. package/lib/chevre/repo/paymentServiceProvider.d.ts +5 -0
  31. package/lib/chevre/repo/paymentServiceProvider.js +11 -0
  32. package/lib/chevre/repo/place.d.ts +68 -16
  33. package/lib/chevre/repo/place.js +121 -167
  34. package/lib/chevre/repo/product.d.ts +2 -4
  35. package/lib/chevre/repo/product.js +52 -7
  36. package/lib/chevre/repo/productOffer.d.ts +5 -0
  37. package/lib/chevre/repo/productOffer.js +16 -0
  38. package/lib/chevre/repo/project.d.ts +5 -3
  39. package/lib/chevre/repo/project.js +48 -8
  40. package/lib/chevre/repo/reservation.d.ts +33 -21
  41. package/lib/chevre/repo/reservation.js +97 -79
  42. package/lib/chevre/repo/role.d.ts +0 -4
  43. package/lib/chevre/repo/role.js +0 -46
  44. package/lib/chevre/repo/seller.d.ts +14 -2
  45. package/lib/chevre/repo/seller.js +13 -8
  46. package/lib/chevre/repo/stockHolder.d.ts +2 -77
  47. package/lib/chevre/repo/stockHolder.js +200 -476
  48. package/lib/chevre/repo/task.d.ts +1 -1
  49. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +3 -2
  50. package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +1 -1
  51. package/lib/chevre/service/aggregation/project.js +5 -1
  52. package/lib/chevre/service/assetTransaction/cancelReservation.js +10 -2
  53. package/lib/chevre/service/assetTransaction/registerService.js +7 -3
  54. package/lib/chevre/service/assetTransaction/reserve/factory.d.ts +6 -1
  55. package/lib/chevre/service/assetTransaction/reserve/factory.js +15 -38
  56. package/lib/chevre/service/assetTransaction/reserve.d.ts +0 -1
  57. package/lib/chevre/service/assetTransaction/reserve.js +7 -22
  58. package/lib/chevre/service/event/createEvent.d.ts +11 -0
  59. package/lib/chevre/service/event/createEvent.js +112 -0
  60. package/lib/chevre/service/event.d.ts +2 -0
  61. package/lib/chevre/service/event.js +8 -4
  62. package/lib/chevre/service/iam.d.ts +5 -0
  63. package/lib/chevre/service/iam.js +7 -19
  64. package/lib/chevre/service/moneyTransfer.js +6 -2
  65. package/lib/chevre/service/notification.js +5 -1
  66. package/lib/chevre/service/offer/event/authorize.d.ts +0 -1
  67. package/lib/chevre/service/offer/event/authorize.js +6 -2
  68. package/lib/chevre/service/offer/event/searchEventTicketOffers.js +1 -1
  69. package/lib/chevre/service/offer/product/searchProductOffers.js +1 -1
  70. package/lib/chevre/service/order/returnOrder.js +8 -1
  71. package/lib/chevre/service/order/sendOrder.js +8 -1
  72. package/lib/chevre/service/payment/creditCard.js +5 -1
  73. package/lib/chevre/service/payment/paymentCard.js +6 -4
  74. package/lib/chevre/service/reserve/cancelReservation.js +15 -28
  75. package/lib/chevre/service/reserve/confirmReservation.js +14 -30
  76. package/lib/chevre/service/reserve/verifyToken4reservation.d.ts +3 -0
  77. package/lib/chevre/service/reserve/verifyToken4reservation.js +3 -1
  78. package/lib/chevre/service/task/{syncScreeningRooms.d.ts → createEvent.d.ts} +1 -1
  79. package/lib/chevre/service/task/{syncScreeningRooms.js → createEvent.js} +11 -3
  80. package/lib/chevre/service/task/onAuthorizationCreated.js +1 -0
  81. package/lib/chevre/service/task/onResourceUpdated.js +128 -39
  82. package/lib/chevre/service/task/returnPayTransaction.js +1 -0
  83. package/lib/chevre/service/transaction/orderProgramMembership/findCreditCard.js +6 -2
  84. package/lib/chevre/settings.d.ts +0 -2
  85. package/lib/chevre/settings.js +7 -7
  86. package/package.json +3 -3
  87. package/example/src/chevre/findByOrderNumberAndReservationId.ts +0 -20
  88. package/example/src/chevre/findScreeningRoomsByBranchCode.ts +0 -27
  89. package/example/src/chevre/searchHoldReservations.ts +0 -38
  90. package/example/src/chevre/searchScreeningRooms.ts +0 -33
  91. package/example/src/chevre/syncScreeningRooms.ts +0 -21
  92. package/example/src/chevre/syncScreeningRoomsAll.ts +0 -41
  93. package/lib/chevre/repo/mongoose/schemas/holdReservation.d.ts +0 -75
  94. package/lib/chevre/repo/mongoose/schemas/holdReservation.js +0 -93
@@ -319,23 +319,17 @@ class MongoRepository {
319
319
  });
320
320
  }
321
321
  addReservations(params) {
322
- var _a;
323
322
  return __awaiter(this, void 0, void 0, function* () {
324
323
  const doc = yield this.transactionModel.findOneAndUpdate({
325
324
  _id: { $eq: params.id },
326
325
  typeOf: { $eq: params.typeOf },
327
326
  status: { $eq: factory.transactionStatusType.InProgress }
328
- }, Object.assign({ 'object.acceptedOffer': params.object.acceptedOffer,
329
- // 念のため残す(2021/10/14)が、そのうち削除
330
- // 冗長なので削除(2021/10/19~)
331
- // 'object.event': params.object.reservationFor,
332
- 'object.reservationFor': params.object.reservationFor,
333
- // 念のため残す(2021/10/14)が、そのうち削除
334
- // 冗長なので削除(2021/10/19~)
335
- // 'object.reservations': params.object.subReservation,
336
- 'object.subReservation': params.object.subReservation }, (typeof ((_a = params.object.issuedThrough) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string')
337
- ? { 'object.issuedThrough': params.object.issuedThrough }
338
- : undefined), { new: true })
327
+ }, {
328
+ 'object.acceptedOffer': params.object.acceptedOffer,
329
+ 'object.issuedThrough': params.object.issuedThrough,
330
+ 'object.reservationFor': params.object.reservationFor,
331
+ 'object.subReservation': params.object.subReservation
332
+ }, { new: true })
339
333
  .exec();
340
334
  if (doc === null) {
341
335
  throw new factory.errors.NotFound(this.transactionModel.modelName);
@@ -169,6 +169,30 @@ export declare class MongoRepository {
169
169
  };
170
170
  id: string;
171
171
  }): Promise<void>;
172
+ deleteScreeningEventsByMovieTheaterBranchCode(params: {
173
+ project: {
174
+ id: string;
175
+ };
176
+ location: {
177
+ branchCode: string;
178
+ };
179
+ }): Promise<import("mongodb").DeleteResult>;
180
+ deleteScreeningEventSeriesByMovieTheaterBranchCode(params: {
181
+ project: {
182
+ id: string;
183
+ };
184
+ location: {
185
+ branchCode: string;
186
+ };
187
+ }): Promise<import("mongodb").DeleteResult>;
188
+ deleteManyByOrganizerId(params: {
189
+ project: {
190
+ id: string;
191
+ };
192
+ organizer: {
193
+ id: string;
194
+ };
195
+ }): Promise<import("mongodb").DeleteResult>;
172
196
  deleteByProject(params: {
173
197
  project: {
174
198
  id: string;
@@ -28,6 +28,7 @@ const errorHandler_1 = require("../errorHandler");
28
28
  const settings_1 = require("../settings");
29
29
  exports.PROJECTION_MINIMIZED_EVENT = {
30
30
  project: 1,
31
+ organizer: 1,
31
32
  _id: 1,
32
33
  typeOf: 1,
33
34
  additionalProperty: 1,
@@ -52,7 +53,19 @@ class MongoRepository {
52
53
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
53
54
  static CREATE_MONGO_CONDITIONS(conditions) {
54
55
  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, _5, _6, _7, _8, _9, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42;
55
- const andConditions = [{ typeOf: { $eq: conditions.typeOf } }];
56
+ const andConditions = [];
57
+ const typeOfEq = conditions.typeOf;
58
+ if (typeof typeOfEq === 'string') {
59
+ andConditions.push({ typeOf: { $eq: typeOfEq } });
60
+ }
61
+ const typeOfIn = conditions.typeOfIn;
62
+ if (Array.isArray(typeOfIn)) {
63
+ andConditions.push({ typeOf: { $in: typeOfIn } });
64
+ }
65
+ // typeOf条件必須検証(2023-07-13~)
66
+ if (typeof typeOfEq !== 'string' && !Array.isArray(typeOfIn)) {
67
+ throw new factory.errors.ArgumentNull('typeOf');
68
+ }
56
69
  const projectIdEq = (_b = (_a = conditions.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq;
57
70
  if (typeof projectIdEq === 'string') {
58
71
  andConditions.push({ 'project.id': { $eq: projectIdEq } });
@@ -838,6 +851,35 @@ class MongoRepository {
838
851
  .exec();
839
852
  });
840
853
  }
854
+ deleteScreeningEventsByMovieTheaterBranchCode(params) {
855
+ return __awaiter(this, void 0, void 0, function* () {
856
+ return this.eventModel.deleteMany({
857
+ typeOf: { $eq: factory.eventType.ScreeningEvent },
858
+ 'project.id': { $eq: params.project.id },
859
+ 'superEvent.location.branchCode': { $exists: true, $eq: params.location.branchCode }
860
+ })
861
+ .exec();
862
+ });
863
+ }
864
+ deleteScreeningEventSeriesByMovieTheaterBranchCode(params) {
865
+ return __awaiter(this, void 0, void 0, function* () {
866
+ return this.eventModel.deleteMany({
867
+ typeOf: { $eq: factory.eventType.ScreeningEventSeries },
868
+ 'project.id': { $eq: params.project.id },
869
+ 'location.branchCode': { $exists: true, $eq: params.location.branchCode }
870
+ })
871
+ .exec();
872
+ });
873
+ }
874
+ deleteManyByOrganizerId(params) {
875
+ return __awaiter(this, void 0, void 0, function* () {
876
+ return this.eventModel.deleteMany({
877
+ 'project.id': { $eq: params.project.id },
878
+ 'organizer.id': { $exists: true, $eq: params.organizer.id }
879
+ })
880
+ .exec();
881
+ });
882
+ }
841
883
  deleteByProject(params) {
842
884
  return __awaiter(this, void 0, void 0, function* () {
843
885
  yield this.eventModel.deleteMany({
@@ -1,3 +1,27 @@
1
+ /// <reference types="mongoose/types/aggregate" />
2
+ /// <reference types="mongoose/types/callback" />
3
+ /// <reference types="mongoose/types/collection" />
4
+ /// <reference types="mongoose/types/connection" />
5
+ /// <reference types="mongoose/types/cursor" />
6
+ /// <reference types="mongoose/types/document" />
7
+ /// <reference types="mongoose/types/error" />
8
+ /// <reference types="mongoose/types/expressions" />
9
+ /// <reference types="mongoose/types/helpers" />
10
+ /// <reference types="mongoose/types/middlewares" />
11
+ /// <reference types="mongoose/types/indexes" />
12
+ /// <reference types="mongoose/types/models" />
13
+ /// <reference types="mongoose/types/mongooseoptions" />
14
+ /// <reference types="mongoose/types/pipelinestage" />
15
+ /// <reference types="mongoose/types/populate" />
16
+ /// <reference types="mongoose/types/query" />
17
+ /// <reference types="mongoose/types/schemaoptions" />
18
+ /// <reference types="mongoose/types/schematypes" />
19
+ /// <reference types="mongoose/types/session" />
20
+ /// <reference types="mongoose/types/types" />
21
+ /// <reference types="mongoose/types/utility" />
22
+ /// <reference types="mongoose/types/validation" />
23
+ /// <reference types="mongoose/types/virtuals" />
24
+ /// <reference types="mongoose/types/inferschematype" />
1
25
  import { Connection } from 'mongoose';
2
26
  import * as factory from '../factory';
3
27
  /**
@@ -7,7 +31,6 @@ export declare class MongoRepository {
7
31
  private readonly memberModel;
8
32
  constructor(connection: Connection);
9
33
  static CREATE_MONGO_CONDITIONS(params: factory.iam.ISearchConditions): any[];
10
- count(params: factory.iam.ISearchConditions): Promise<number>;
11
34
  search(params: factory.iam.ISearchConditions): Promise<factory.iam.IMember[]>;
12
35
  aggregateRoleNames(params: {
13
36
  project: {
@@ -19,13 +42,18 @@ export declare class MongoRepository {
19
42
  id: {
20
43
  $eq: string;
21
44
  };
45
+ memberOf: {
46
+ id: {
47
+ $eq: string;
48
+ };
49
+ typeOf: {
50
+ $eq: factory.organizationType.Corporation | factory.organizationType.Project;
51
+ };
52
+ };
22
53
  };
23
54
  }): Promise<{
24
55
  roleName: string;
25
56
  }[]>;
26
- findById(params: {
27
- id: string;
28
- }): Promise<factory.iam.IMember>;
29
57
  deleteByProject(params: {
30
58
  project: {
31
59
  id: string;
@@ -43,12 +71,31 @@ export declare class MongoRepository {
43
71
  id: string;
44
72
  };
45
73
  member: {
46
- hasRole?: factory.iam.IMemberHasRole;
47
74
  id: string;
75
+ memberOf: {
76
+ id: string;
77
+ typeOf: factory.organizationType.Corporation | factory.organizationType.Project;
78
+ };
79
+ hasRole?: factory.iam.IMemberHasRole;
48
80
  image?: string;
49
81
  name?: string;
50
82
  };
51
83
  }): Promise<void>;
84
+ /**
85
+ * 互換性維持プログラム専用
86
+ */
87
+ updateByMemberMemberOf(params: {
88
+ project: {
89
+ id: string;
90
+ };
91
+ member: {
92
+ id: string;
93
+ memberOf: {
94
+ id: string;
95
+ typeOf: factory.organizationType.Project;
96
+ };
97
+ };
98
+ }): Promise<void>;
52
99
  /**
53
100
  * メンバー削除
54
101
  */
@@ -58,8 +105,31 @@ export declare class MongoRepository {
58
105
  };
59
106
  member: {
60
107
  id: string;
108
+ memberOf: {
109
+ id: {
110
+ $eq: string;
111
+ };
112
+ typeOf: {
113
+ $eq: factory.organizationType.Corporation | factory.organizationType.Project;
114
+ };
115
+ };
61
116
  };
62
117
  }): Promise<void>;
118
+ deleteManyByMemberOfId(params: {
119
+ project: {
120
+ id: string;
121
+ };
122
+ member: {
123
+ memberOf: {
124
+ id: {
125
+ $eq: string;
126
+ };
127
+ typeOf: {
128
+ $eq: factory.organizationType.Corporation | factory.organizationType.Project;
129
+ };
130
+ };
131
+ };
132
+ }): Promise<import("mongodb").DeleteResult>;
63
133
  /**
64
134
  * メンバーの権限を持つプロジェクト検索
65
135
  */
@@ -69,10 +139,27 @@ export declare class MongoRepository {
69
139
  };
70
140
  project?: {
71
141
  id?: {
142
+ $eq?: string;
72
143
  $regex?: string;
73
144
  };
74
145
  };
75
146
  limit: number;
76
147
  page: number;
77
148
  }): Promise<string[]>;
149
+ /**
150
+ * member.memberOf.typeOfからmember.memberOf.idのリストを検索する
151
+ * 権限を持つ販売者IDの検索など
152
+ */
153
+ searchMemberOfIdsByMemberId(params: {
154
+ member: {
155
+ id: string;
156
+ memberOf: {
157
+ typeOf: factory.organizationType.Corporation | factory.organizationType.Project;
158
+ };
159
+ };
160
+ project: {
161
+ id: string;
162
+ };
163
+ }): Promise<string[]>;
164
+ getCursor(conditions: any, projection: any): import("mongoose").Cursor<any, import("mongoose").QueryOptions<any>>;
78
165
  }
@@ -22,64 +22,37 @@ class MongoRepository {
22
22
  }
23
23
  // tslint:disable-next-line:cyclomatic-complexity max-func-body-length
24
24
  static CREATE_MONGO_CONDITIONS(params) {
25
- var _a, _b, _c, _d, _e, _f, _g;
25
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v;
26
26
  const andConditions = [];
27
- // tslint:disable-next-line:no-single-line-block-comment
28
- /* istanbul ignore else */
29
- if (params.id !== undefined && params.id !== null) {
30
- if (typeof params.id.$eq === 'string') {
31
- andConditions.push({
32
- _id: {
33
- $eq: params.id.$eq
34
- }
35
- });
36
- }
27
+ const idEq = (_a = params.id) === null || _a === void 0 ? void 0 : _a.$eq;
28
+ if (typeof idEq === 'string') {
29
+ andConditions.push({ _id: { $eq: idEq } });
37
30
  }
38
- // tslint:disable-next-line:no-single-line-block-comment
39
- /* istanbul ignore else */
40
- if (params.project !== undefined && params.project !== null) {
41
- if (params.project.id !== undefined && params.project.id !== null) {
42
- if (typeof params.project.id.$eq === 'string') {
43
- andConditions.push({
44
- 'project.id': {
45
- $eq: params.project.id.$eq
46
- }
47
- });
48
- }
49
- }
31
+ const projectIdEq = (_c = (_b = params.project) === null || _b === void 0 ? void 0 : _b.id) === null || _c === void 0 ? void 0 : _c.$eq;
32
+ if (typeof projectIdEq === 'string') {
33
+ andConditions.push({ 'project.id': { $eq: projectIdEq } });
50
34
  }
51
- // tslint:disable-next-line:no-single-line-block-comment
52
- /* istanbul ignore else */
53
- if (params.member !== undefined && params.member !== null) {
54
- if (params.member.typeOf !== undefined && params.member.typeOf !== null) {
55
- if (typeof params.member.typeOf.$eq === 'string') {
56
- andConditions.push({
57
- 'member.typeOf': {
58
- $exists: true,
59
- $eq: params.member.typeOf.$eq
60
- }
61
- });
62
- }
63
- }
64
- if (params.member.id !== undefined && params.member.id !== null) {
65
- if (typeof params.member.id.$eq === 'string') {
66
- andConditions.push({
67
- 'member.id': {
68
- $eq: params.member.id.$eq
69
- }
70
- });
71
- }
72
- }
35
+ const memberMemberOfTypeOfEq = (_f = (_e = (_d = params.member) === null || _d === void 0 ? void 0 : _d.memberOf) === null || _e === void 0 ? void 0 : _e.typeOf) === null || _f === void 0 ? void 0 : _f.$eq;
36
+ if (typeof memberMemberOfTypeOfEq === 'string') {
37
+ andConditions.push({ 'member.memberOf.typeOf': { $eq: memberMemberOfTypeOfEq } });
38
+ }
39
+ const memberMemberOfIdEq = (_j = (_h = (_g = params.member) === null || _g === void 0 ? void 0 : _g.memberOf) === null || _h === void 0 ? void 0 : _h.id) === null || _j === void 0 ? void 0 : _j.$eq;
40
+ if (typeof memberMemberOfIdEq === 'string') {
41
+ andConditions.push({ 'member.memberOf.id': { $eq: memberMemberOfIdEq } });
73
42
  }
74
- const memberIdIn = (_b = (_a = params.member) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$in;
43
+ const memberTypeOfEq = (_l = (_k = params.member) === null || _k === void 0 ? void 0 : _k.typeOf) === null || _l === void 0 ? void 0 : _l.$eq;
44
+ if (typeof memberTypeOfEq === 'string') {
45
+ andConditions.push({ 'member.typeOf': { $exists: true, $eq: memberTypeOfEq } });
46
+ }
47
+ const memberIdEq = (_o = (_m = params.member) === null || _m === void 0 ? void 0 : _m.id) === null || _o === void 0 ? void 0 : _o.$eq;
48
+ if (typeof memberIdEq === 'string') {
49
+ andConditions.push({ 'member.id': { $eq: memberIdEq } });
50
+ }
51
+ const memberIdIn = (_q = (_p = params.member) === null || _p === void 0 ? void 0 : _p.id) === null || _q === void 0 ? void 0 : _q.$in;
75
52
  if (Array.isArray(memberIdIn)) {
76
- andConditions.push({
77
- 'member.id': {
78
- $in: memberIdIn
79
- }
80
- });
53
+ andConditions.push({ 'member.id': { $in: memberIdIn } });
81
54
  }
82
- const memberNameRegex = (_d = (_c = params.member) === null || _c === void 0 ? void 0 : _c.name) === null || _d === void 0 ? void 0 : _d.$regex;
55
+ const memberNameRegex = (_s = (_r = params.member) === null || _r === void 0 ? void 0 : _r.name) === null || _s === void 0 ? void 0 : _s.$regex;
83
56
  if (typeof memberNameRegex === 'string' && memberNameRegex.length > 0) {
84
57
  andConditions.push({
85
58
  'member.name': {
@@ -88,7 +61,7 @@ class MongoRepository {
88
61
  }
89
62
  });
90
63
  }
91
- const memberHasRoleRoleNameEq = (_g = (_f = (_e = params.member) === null || _e === void 0 ? void 0 : _e.hasRole) === null || _f === void 0 ? void 0 : _f.roleName) === null || _g === void 0 ? void 0 : _g.$eq;
64
+ const memberHasRoleRoleNameEq = (_v = (_u = (_t = params.member) === null || _t === void 0 ? void 0 : _t.hasRole) === null || _u === void 0 ? void 0 : _u.roleName) === null || _v === void 0 ? void 0 : _v.$eq;
92
65
  if (typeof memberHasRoleRoleNameEq === 'string') {
93
66
  andConditions.push({
94
67
  'member.hasRole.roleName': {
@@ -99,14 +72,6 @@ class MongoRepository {
99
72
  }
100
73
  return andConditions;
101
74
  }
102
- count(params) {
103
- return __awaiter(this, void 0, void 0, function* () {
104
- const conditions = MongoRepository.CREATE_MONGO_CONDITIONS(params);
105
- return this.memberModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {})
106
- .setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
107
- .exec();
108
- });
109
- }
110
75
  search(params) {
111
76
  return __awaiter(this, void 0, void 0, function* () {
112
77
  const conditions = MongoRepository.CREATE_MONGO_CONDITIONS(params);
@@ -136,7 +101,9 @@ class MongoRepository {
136
101
  return __awaiter(this, void 0, void 0, function* () {
137
102
  const matchStages = [
138
103
  { $match: { 'project.id': { $eq: params.project.id.$eq } } },
139
- { $match: { 'member.id': { $eq: params.member.id.$eq } } }
104
+ { $match: { 'member.id': { $eq: params.member.id.$eq } } },
105
+ { $match: { 'member.memberOf.id': { $eq: params.member.memberOf.id.$eq } } },
106
+ { $match: { 'member.memberOf.typeOf': { $eq: params.member.memberOf.typeOf.$eq } } }
140
107
  ];
141
108
  const aggregate = this.memberModel.aggregate([
142
109
  // ...(typeof params.sort?.productID === 'number')
@@ -159,19 +126,21 @@ class MongoRepository {
159
126
  .exec();
160
127
  });
161
128
  }
162
- findById(params) {
163
- return __awaiter(this, void 0, void 0, function* () {
164
- const doc = yield this.memberModel.findOne({
165
- _id: params.id
166
- })
167
- .select({ __v: 0, createdAt: 0, updatedAt: 0 })
168
- .exec();
169
- if (doc === null) {
170
- throw new factory.errors.NotFound(this.memberModel.modelName);
171
- }
172
- return doc.toObject();
173
- });
174
- }
129
+ // public async findById2(params: {
130
+ // id: string;
131
+ // }): Promise<factory.iam.IMember> {
132
+ // const doc = await this.memberModel.findOne(
133
+ // {
134
+ // _id: params.id
135
+ // }
136
+ // )
137
+ // .select({ __v: 0, createdAt: 0, updatedAt: 0 })
138
+ // .exec();
139
+ // if (doc === null) {
140
+ // throw new factory.errors.NotFound(this.memberModel.modelName);
141
+ // }
142
+ // return doc.toObject();
143
+ // }
175
144
  deleteByProject(params) {
176
145
  return __awaiter(this, void 0, void 0, function* () {
177
146
  yield this.memberModel.deleteMany({
@@ -200,12 +169,6 @@ class MongoRepository {
200
169
  // no op
201
170
  }
202
171
  return members;
203
- // return this.memberModel.create({
204
- // project: params.project,
205
- // typeOf: params.typeOf,
206
- // member: params.member
207
- // })
208
- // .then((doc) => doc.toObject());
209
172
  });
210
173
  }
211
174
  /**
@@ -215,7 +178,9 @@ class MongoRepository {
215
178
  return __awaiter(this, void 0, void 0, function* () {
216
179
  const doc = yield this.memberModel.findOneAndUpdate({
217
180
  'project.id': { $eq: params.project.id },
218
- 'member.id': { $eq: params.member.id }
181
+ 'member.id': { $eq: params.member.id },
182
+ 'member.memberOf.id': { $eq: params.member.memberOf.id },
183
+ 'member.memberOf.typeOf': { $eq: params.member.memberOf.typeOf }
219
184
  }, Object.assign(Object.assign(Object.assign({ updatedAt: new Date() }, (Array.isArray(params.member.hasRole)) ? { 'member.hasRole': params.member.hasRole } : undefined), (typeof params.member.image === 'string') ? { 'member.image': params.member.image } : undefined), (typeof params.member.name === 'string') ? { 'member.name': params.member.name } : undefined))
220
185
  .exec();
221
186
  if (doc === null) {
@@ -223,6 +188,24 @@ class MongoRepository {
223
188
  }
224
189
  });
225
190
  }
191
+ /**
192
+ * 互換性維持プログラム専用
193
+ */
194
+ updateByMemberMemberOf(params) {
195
+ return __awaiter(this, void 0, void 0, function* () {
196
+ const doc = yield this.memberModel.findOneAndUpdate({
197
+ 'project.id': { $eq: params.project.id },
198
+ 'member.id': { $eq: params.member.id },
199
+ 'member.memberOf': { $exists: false }
200
+ }, {
201
+ 'member.memberOf': params.member.memberOf
202
+ })
203
+ .exec();
204
+ if (doc === null) {
205
+ throw new factory.errors.NotFound(this.memberModel.modelName);
206
+ }
207
+ });
208
+ }
226
209
  /**
227
210
  * メンバー削除
228
211
  */
@@ -230,7 +213,9 @@ class MongoRepository {
230
213
  return __awaiter(this, void 0, void 0, function* () {
231
214
  const doc = yield this.memberModel.findOneAndDelete({
232
215
  'project.id': { $eq: params.project.id },
233
- 'member.id': { $eq: params.member.id }
216
+ 'member.id': { $eq: params.member.id },
217
+ 'member.memberOf.id': { $eq: params.member.memberOf.id.$eq },
218
+ 'member.memberOf.typeOf': { $eq: params.member.memberOf.typeOf.$eq }
234
219
  })
235
220
  .exec();
236
221
  if (doc === null) {
@@ -238,28 +223,71 @@ class MongoRepository {
238
223
  }
239
224
  });
240
225
  }
226
+ deleteManyByMemberOfId(params) {
227
+ return __awaiter(this, void 0, void 0, function* () {
228
+ return this.memberModel.deleteMany({
229
+ 'project.id': { $eq: params.project.id },
230
+ 'member.memberOf.id': { $eq: params.member.memberOf.id.$eq },
231
+ 'member.memberOf.typeOf': { $eq: params.member.memberOf.typeOf.$eq }
232
+ })
233
+ .exec();
234
+ });
235
+ }
241
236
  /**
242
237
  * メンバーの権限を持つプロジェクト検索
243
238
  */
244
239
  searchProjectIdsByMemberId(params) {
245
- var _a, _b;
240
+ var _a, _b, _c, _d;
246
241
  return __awaiter(this, void 0, void 0, function* () {
247
- const searchConditions = Object.assign({ 'member.id': { $eq: params.member.id } }, (typeof ((_b = (_a = params.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$regex) === 'string' && params.project.id.$regex.length > 0)
248
- ? { 'project.id': { $regex: new RegExp(params.project.id.$regex) } }
249
- : undefined);
250
- const query = this.memberModel.find(searchConditions, { project: 1 })
251
- // sortを保証する
252
- .sort({ 'project.id': factory.sortType.Ascending });
253
- if (typeof params.limit === 'number' && params.limit > 0) {
254
- const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
255
- query.limit(params.limit)
256
- .skip(params.limit * (page - 1));
242
+ if (typeof params.limit !== 'number') {
243
+ throw new factory.errors.ArgumentNull('limit');
244
+ }
245
+ if (typeof params.page !== 'number') {
246
+ throw new factory.errors.ArgumentNull('page');
247
+ }
248
+ const matchStages = [{ $match: { 'member.id': { $eq: params.member.id } } }];
249
+ if (typeof ((_b = (_a = params.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq) === 'string') {
250
+ matchStages.push({ $match: { 'project.id': { $eq: params.project.id.$eq } } });
257
251
  }
258
- const projectMembers = yield query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
252
+ if (typeof ((_d = (_c = params.project) === null || _c === void 0 ? void 0 : _c.id) === null || _d === void 0 ? void 0 : _d.$regex) === 'string' && params.project.id.$regex.length > 0) {
253
+ matchStages.push({ $match: { 'project.id': { $regex: new RegExp(params.project.id.$regex) } } });
254
+ }
255
+ const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
256
+ const aggregate = this.memberModel.aggregate([
257
+ ...matchStages,
258
+ {
259
+ $group: {
260
+ _id: '$project.id'
261
+ }
262
+ },
263
+ { $sort: { _id: factory.sortType.Ascending } }
264
+ ])
265
+ .limit(params.limit * page)
266
+ .skip(params.limit * (page - 1));
267
+ return aggregate
259
268
  .exec()
260
- .then((docs) => docs.map((doc) => doc.toObject()));
261
- return projectMembers.map((m) => m.project.id);
269
+ .then((docs) => docs.map((doc) => doc._id));
262
270
  });
263
271
  }
272
+ /**
273
+ * member.memberOf.typeOfからmember.memberOf.idのリストを検索する
274
+ * 権限を持つ販売者IDの検索など
275
+ */
276
+ searchMemberOfIdsByMemberId(params) {
277
+ return __awaiter(this, void 0, void 0, function* () {
278
+ const query = this.memberModel.distinct('member.memberOf.id', {
279
+ 'project.id': { $eq: params.project.id },
280
+ 'member.id': { $eq: params.member.id },
281
+ 'member.memberOf.typeOf': { $eq: params.member.memberOf.typeOf }
282
+ });
283
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
284
+ .exec();
285
+ });
286
+ }
287
+ getCursor(conditions, projection) {
288
+ return this.memberModel.find(conditions, projection)
289
+ .sort({ 'member.id': factory.sortType.Ascending })
290
+ .cursor();
291
+ }
264
292
  }
265
293
  exports.MongoRepository = MongoRepository;
@@ -54,9 +54,9 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
54
54
  }, {
55
55
  typeOf: string;
56
56
  project: any;
57
+ organizer: any;
57
58
  checkInCount: number;
58
59
  attendeeCount: number;
59
- organizer: any;
60
60
  _id?: string | undefined;
61
61
  name?: any;
62
62
  alternateName?: any;
@@ -88,9 +88,9 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
88
88
  }, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
89
89
  typeOf: string;
90
90
  project: any;
91
+ organizer: any;
91
92
  checkInCount: number;
92
93
  attendeeCount: number;
93
- organizer: any;
94
94
  _id?: string | undefined;
95
95
  name?: any;
96
96
  alternateName?: any;
@@ -122,9 +122,9 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
122
122
  }>> & Omit<import("mongoose").FlatRecord<{
123
123
  typeOf: string;
124
124
  project: any;
125
+ organizer: any;
125
126
  checkInCount: number;
126
127
  attendeeCount: number;
127
- organizer: any;
128
128
  _id?: string | undefined;
129
129
  name?: any;
130
130
  alternateName?: any;
@@ -25,7 +25,7 @@
25
25
  import { Schema } from 'mongoose';
26
26
  declare const modelName = "Member";
27
27
  /**
28
- * プロジェクトメンバースキーマ
28
+ * IAMメンバースキーマ
29
29
  */
30
30
  declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, any, any>, {}, {}, {}, {}, {
31
31
  collection: string;
@@ -53,16 +53,16 @@ declare const schema: Schema<any, import("mongoose").Model<any, any, any, any, a
53
53
  };
54
54
  }, {
55
55
  typeOf: string;
56
- project?: any;
57
- member?: any;
56
+ project: any;
57
+ member: any;
58
58
  }, import("mongoose").Document<unknown, {}, import("mongoose").FlatRecord<{
59
59
  typeOf: string;
60
- project?: any;
61
- member?: any;
60
+ project: any;
61
+ member: any;
62
62
  }>> & Omit<import("mongoose").FlatRecord<{
63
63
  typeOf: string;
64
- project?: any;
65
- member?: any;
64
+ project: any;
65
+ member: any;
66
66
  }> & {
67
67
  _id: import("mongoose").Types.ObjectId;
68
68
  }, never>>;