@chevre/domain 21.0.0-alpha.13 → 21.0.0-alpha.15
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/lib/chevre/repo/event.d.ts +6 -0
- package/lib/chevre/repo/event.js +99 -26
- package/package.json +2 -2
|
@@ -105,6 +105,12 @@ export declare class MongoRepository {
|
|
|
105
105
|
name: string;
|
|
106
106
|
};
|
|
107
107
|
}[]): Promise<BulkWriteOpResultObject | void>;
|
|
108
|
+
/**
|
|
109
|
+
* コンテンツ+バージョンをキーにして、なければ作成する(複数対応)
|
|
110
|
+
*/
|
|
111
|
+
createScreeningEventSeriesIfNotExistByWorkPerformed(params: {
|
|
112
|
+
attributes: factory.event.IAttributes<factory.eventType.ScreeningEventSeries>;
|
|
113
|
+
}[]): Promise<BulkWriteOpResultObject | void>;
|
|
108
114
|
/**
|
|
109
115
|
* イベント部分更新
|
|
110
116
|
*/
|
package/lib/chevre/repo/event.js
CHANGED
|
@@ -25,6 +25,7 @@ const uniqid = require("uniqid");
|
|
|
25
25
|
const factory = require("../factory");
|
|
26
26
|
const onIndexCreated_1 = require("./mongoose/onIndexCreated");
|
|
27
27
|
const event_1 = require("./mongoose/schemas/event");
|
|
28
|
+
const errorHandler_1 = require("../errorHandler");
|
|
28
29
|
exports.PROJECTION_MINIMIZED_EVENT = {
|
|
29
30
|
project: 1,
|
|
30
31
|
_id: 1,
|
|
@@ -53,7 +54,7 @@ class MongoRepository {
|
|
|
53
54
|
}
|
|
54
55
|
// tslint:disable-next-line:cyclomatic-complexity max-func-body-length
|
|
55
56
|
static CREATE_MONGO_CONDITIONS(conditions) {
|
|
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, _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;
|
|
57
|
+
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;
|
|
57
58
|
const andConditions = [{ typeOf: { $eq: conditions.typeOf } }];
|
|
58
59
|
const projectIdEq = (_b = (_a = conditions.project) === null || _a === void 0 ? void 0 : _a.id) === null || _b === void 0 ? void 0 : _b.$eq;
|
|
59
60
|
if (typeof projectIdEq === 'string') {
|
|
@@ -400,13 +401,16 @@ class MongoRepository {
|
|
|
400
401
|
/* istanbul ignore else */
|
|
401
402
|
if (Array.isArray(workPerformedIdentifierIn)) {
|
|
402
403
|
andConditions.push({
|
|
403
|
-
'workPerformed.identifier': {
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
|
|
404
|
+
'workPerformed.identifier': { $exists: true, $in: workPerformedIdentifierIn }
|
|
405
|
+
});
|
|
406
|
+
}
|
|
407
|
+
const workPerformedVersionEq = (_29 = (_28 = params.workPerformed) === null || _28 === void 0 ? void 0 : _28.version) === null || _29 === void 0 ? void 0 : _29.$eq;
|
|
408
|
+
if (typeof workPerformedVersionEq === 'string') {
|
|
409
|
+
andConditions.push({
|
|
410
|
+
'workPerformed.version': { $exists: true, $eq: workPerformedVersionEq }
|
|
407
411
|
});
|
|
408
412
|
}
|
|
409
|
-
const videoFormatTypeOfEq = (
|
|
413
|
+
const videoFormatTypeOfEq = (_31 = (_30 = params.videoFormat) === null || _30 === void 0 ? void 0 : _30.typeOf) === null || _31 === void 0 ? void 0 : _31.$eq;
|
|
410
414
|
if (typeof videoFormatTypeOfEq === 'string') {
|
|
411
415
|
andConditions.push({
|
|
412
416
|
'videoFormat.typeOf': {
|
|
@@ -415,7 +419,7 @@ class MongoRepository {
|
|
|
415
419
|
}
|
|
416
420
|
});
|
|
417
421
|
}
|
|
418
|
-
const videoFormatTypeOfIn = (
|
|
422
|
+
const videoFormatTypeOfIn = (_33 = (_32 = params.videoFormat) === null || _32 === void 0 ? void 0 : _32.typeOf) === null || _33 === void 0 ? void 0 : _33.$in;
|
|
419
423
|
if (Array.isArray(videoFormatTypeOfIn)) {
|
|
420
424
|
andConditions.push({
|
|
421
425
|
'videoFormat.typeOf': {
|
|
@@ -424,7 +428,7 @@ class MongoRepository {
|
|
|
424
428
|
}
|
|
425
429
|
});
|
|
426
430
|
}
|
|
427
|
-
const soundFormatTypeOfEq = (
|
|
431
|
+
const soundFormatTypeOfEq = (_35 = (_34 = params.soundFormat) === null || _34 === void 0 ? void 0 : _34.typeOf) === null || _35 === void 0 ? void 0 : _35.$eq;
|
|
428
432
|
if (typeof soundFormatTypeOfEq === 'string') {
|
|
429
433
|
andConditions.push({
|
|
430
434
|
'soundFormat.typeOf': {
|
|
@@ -433,7 +437,7 @@ class MongoRepository {
|
|
|
433
437
|
}
|
|
434
438
|
});
|
|
435
439
|
}
|
|
436
|
-
const soundFormatTypeOfIn = (
|
|
440
|
+
const soundFormatTypeOfIn = (_37 = (_36 = params.soundFormat) === null || _36 === void 0 ? void 0 : _36.typeOf) === null || _37 === void 0 ? void 0 : _37.$in;
|
|
437
441
|
if (Array.isArray(soundFormatTypeOfIn)) {
|
|
438
442
|
andConditions.push({
|
|
439
443
|
'soundFormat.typeOf': {
|
|
@@ -452,9 +456,20 @@ class MongoRepository {
|
|
|
452
456
|
*/
|
|
453
457
|
createMany(params) {
|
|
454
458
|
return __awaiter(this, void 0, void 0, function* () {
|
|
455
|
-
|
|
456
|
-
|
|
457
|
-
|
|
459
|
+
let docs;
|
|
460
|
+
try {
|
|
461
|
+
docs = yield this.eventModel.insertMany(params.attributes.map((p) => {
|
|
462
|
+
return Object.assign({ _id: uniqid() }, p);
|
|
463
|
+
}));
|
|
464
|
+
}
|
|
465
|
+
catch (error) {
|
|
466
|
+
if ((0, errorHandler_1.isMongoError)(error)) {
|
|
467
|
+
if (error.code === errorHandler_1.MongoErrorCode.DuplicateKey) {
|
|
468
|
+
throw new factory.errors.AlreadyInUse(factory.eventType.ScreeningEventSeries, ['workPerformed.version']);
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
throw error;
|
|
472
|
+
}
|
|
458
473
|
if (params.expectsNoContent) {
|
|
459
474
|
return;
|
|
460
475
|
}
|
|
@@ -482,6 +497,8 @@ class MongoRepository {
|
|
|
482
497
|
updateOne: {
|
|
483
498
|
filter: {
|
|
484
499
|
typeOf: creatingEventParams.attributes.typeOf,
|
|
500
|
+
// 追加特性をキーにした冪等イベント作成時のfilterにproject.idを追加(2023-04-06~)
|
|
501
|
+
'project.id': { $eq: creatingEventParams.attributes.project.id },
|
|
485
502
|
// 追加特性をキーに更新
|
|
486
503
|
additionalProperty: {
|
|
487
504
|
$exists: true,
|
|
@@ -503,6 +520,52 @@ class MongoRepository {
|
|
|
503
520
|
}
|
|
504
521
|
});
|
|
505
522
|
}
|
|
523
|
+
/**
|
|
524
|
+
* コンテンツ+バージョンをキーにして、なければ作成する(複数対応)
|
|
525
|
+
*/
|
|
526
|
+
createScreeningEventSeriesIfNotExistByWorkPerformed(params) {
|
|
527
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
528
|
+
const bulkWriteOps = [];
|
|
529
|
+
if (Array.isArray(params)) {
|
|
530
|
+
params.forEach((creatingEventParams) => {
|
|
531
|
+
const version = creatingEventParams.attributes.workPerformed.version;
|
|
532
|
+
if (typeof version !== 'string') {
|
|
533
|
+
throw new factory.errors.ArgumentNull('workPerformed.version');
|
|
534
|
+
}
|
|
535
|
+
const setOnInsertFields = creatingEventParams.attributes;
|
|
536
|
+
bulkWriteOps.push({
|
|
537
|
+
updateOne: {
|
|
538
|
+
filter: {
|
|
539
|
+
typeOf: creatingEventParams.attributes.typeOf,
|
|
540
|
+
'project.id': { $eq: creatingEventParams.attributes.project.id },
|
|
541
|
+
'location.branchCode': {
|
|
542
|
+
$exists: true,
|
|
543
|
+
$eq: creatingEventParams.attributes.location.branchCode
|
|
544
|
+
},
|
|
545
|
+
'workPerformed.identifier': {
|
|
546
|
+
$exists: true,
|
|
547
|
+
$eq: creatingEventParams.attributes.workPerformed.identifier
|
|
548
|
+
},
|
|
549
|
+
'workPerformed.version': {
|
|
550
|
+
$exists: true,
|
|
551
|
+
$eq: version
|
|
552
|
+
}
|
|
553
|
+
},
|
|
554
|
+
update: {
|
|
555
|
+
$setOnInsert: Object.assign(Object.assign({}, setOnInsertFields), { _id: uniqid() })
|
|
556
|
+
// 変更可能な属性のみ上書き
|
|
557
|
+
// $set: {}
|
|
558
|
+
},
|
|
559
|
+
upsert: true
|
|
560
|
+
}
|
|
561
|
+
});
|
|
562
|
+
});
|
|
563
|
+
}
|
|
564
|
+
if (bulkWriteOps.length > 0) {
|
|
565
|
+
return this.eventModel.bulkWrite(bulkWriteOps, { ordered: false });
|
|
566
|
+
}
|
|
567
|
+
});
|
|
568
|
+
}
|
|
506
569
|
/**
|
|
507
570
|
* イベント部分更新
|
|
508
571
|
*/
|
|
@@ -529,21 +592,31 @@ class MongoRepository {
|
|
|
529
592
|
save(params) {
|
|
530
593
|
return __awaiter(this, void 0, void 0, function* () {
|
|
531
594
|
let doc;
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
595
|
+
try {
|
|
596
|
+
if (params.id === undefined) {
|
|
597
|
+
const id = uniqid();
|
|
598
|
+
doc = yield this.eventModel.create(Object.assign(Object.assign({}, params.attributes), { _id: id }));
|
|
599
|
+
}
|
|
600
|
+
else {
|
|
601
|
+
const upsert = params.upsert === true;
|
|
602
|
+
// 上書き禁止属性を除外(2022-08-24~)
|
|
603
|
+
const _a = params.attributes, { identifier, project, typeOf } = _a, updateFields = __rest(_a, ["identifier", "project", "typeOf"]);
|
|
604
|
+
doc = yield this.eventModel.findOneAndUpdate({
|
|
605
|
+
_id: params.id,
|
|
606
|
+
typeOf: params.attributes.typeOf
|
|
607
|
+
}, Object.assign({ $setOnInsert: Object.assign(Object.assign({ typeOf: params.attributes.typeOf }, (params.attributes.project !== undefined)
|
|
608
|
+
? { project: params.attributes.project } : undefined), (params.attributes.identifier !== undefined)
|
|
609
|
+
? { identifier: params.attributes.identifier } : undefined), $set: updateFields }, (params.$unset !== undefined) ? { $unset: params.$unset } : undefined), { upsert, new: true })
|
|
610
|
+
.exec();
|
|
611
|
+
}
|
|
535
612
|
}
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
}, Object.assign({ $setOnInsert: Object.assign(Object.assign({ typeOf: params.attributes.typeOf }, (params.attributes.project !== undefined)
|
|
544
|
-
? { project: params.attributes.project } : undefined), (params.attributes.identifier !== undefined)
|
|
545
|
-
? { identifier: params.attributes.identifier } : undefined), $set: updateFields }, (params.$unset !== undefined) ? { $unset: params.$unset } : undefined), { upsert, new: true })
|
|
546
|
-
.exec();
|
|
613
|
+
catch (error) {
|
|
614
|
+
if ((0, errorHandler_1.isMongoError)(error)) {
|
|
615
|
+
if (error.code === errorHandler_1.MongoErrorCode.DuplicateKey) {
|
|
616
|
+
throw new factory.errors.AlreadyInUse(factory.eventType.ScreeningEventSeries, ['workPerformed.version']);
|
|
617
|
+
}
|
|
618
|
+
}
|
|
619
|
+
throw error;
|
|
547
620
|
}
|
|
548
621
|
if (doc === null) {
|
|
549
622
|
throw new factory.errors.NotFound(this.eventModel.modelName);
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
}
|
|
10
10
|
],
|
|
11
11
|
"dependencies": {
|
|
12
|
-
"@chevre/factory": "4.310.0-alpha.
|
|
12
|
+
"@chevre/factory": "4.310.0-alpha.1",
|
|
13
13
|
"@cinerino/sdk": "3.153.0",
|
|
14
14
|
"@motionpicture/coa-service": "9.2.0",
|
|
15
15
|
"@motionpicture/gmo-service": "5.2.0",
|
|
@@ -120,5 +120,5 @@
|
|
|
120
120
|
"postversion": "git push origin --tags",
|
|
121
121
|
"prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
|
|
122
122
|
},
|
|
123
|
-
"version": "21.0.0-alpha.
|
|
123
|
+
"version": "21.0.0-alpha.15"
|
|
124
124
|
}
|