@chevre/domain
Version:
Chevre Domain Library for Node.js
82 lines (81 loc) • 3.95 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.call = call;
const factory = require("../../factory");
const acceptedOffer_1 = require("../../repo/acceptedOffer");
const action_1 = require("../../repo/action");
const assetTransaction_1 = require("../../repo/assetTransaction");
const event_1 = require("../../repo/event");
const order_1 = require("../../repo/order");
const setting_1 = require("../../repo/setting");
const stockHolder_1 = require("../../repo/stockHolder");
const task_1 = require("../../repo/task");
const validateEvent_1 = require("../validation/validateEvent");
const validateOrder_1 = require("../validation/validateOrder");
/**
* タスク実行関数
*/
function call(data) {
return (_a) => __awaiter(this, [_a], void 0, function* ({ connection, redisClient }) {
if (redisClient === undefined) {
throw new factory.errors.Argument('settings', 'redisClient required');
}
const actionRepo = new action_1.ActionRepo(connection);
const actionAttributes = {
agent: { id: data.project.id, typeOf: factory.organizationType.Project },
object: data.object,
project: { id: data.project.id, typeOf: factory.organizationType.Project },
typeOf: factory.actionType.CheckAction
};
const action = yield actionRepo.start(actionAttributes);
const objectTypeOf = data.object.typeOf;
try {
switch (objectTypeOf) {
case factory.order.OrderType.Order:
yield (0, validateOrder_1.validateOrder)({
orderNumber: data.object.orderNumber,
project: { id: data.project.id }
})({
acceptedOffer: new acceptedOffer_1.AcceptedOfferRepo(connection),
assetTransaction: new assetTransaction_1.AssetTransactionRepo(connection),
order: new order_1.OrderRepo(connection),
setting: new setting_1.SettingRepo(connection),
task: new task_1.TaskRepo(connection)
});
break;
// support ScreeningEvent(2025-05-01~)
case factory.eventType.ScreeningEvent:
yield (0, validateEvent_1.validateEvent)({
id: data.object.id,
project: { id: data.project.id }
})({
event: new event_1.EventRepo(connection),
stockHolder: new stockHolder_1.StockHolderRepo(redisClient, connection)
});
break;
default:
throw new factory.errors.NotImplemented(`${objectTypeOf} not implemented`);
}
}
catch (error) {
try {
yield actionRepo.giveUp({ typeOf: action.typeOf, id: action.id, error });
}
catch (__) {
// 失敗したら仕方ない
}
throw error;
}
const actionResult = {};
yield actionRepo.completeWithVoid({ typeOf: action.typeOf, id: action.id, result: actionResult });
});
}
;