UNPKG

cnpmcore

Version:
159 lines 13.3 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.TaskRepository = void 0; const node_assert_1 = require("node:assert"); const tegg_1 = require("@eggjs/tegg"); const ModelConvertor_1 = require("./util/ModelConvertor"); const Task_1 = require("../core/entity/Task"); const AbstractRepository_1 = require("./AbstractRepository"); const lodash_1 = require("lodash"); let TaskRepository = class TaskRepository extends AbstractRepository_1.AbstractRepository { async saveTask(task) { if (task.id) { const model = await this.Task.findOne({ id: task.id }); if (!model) return; await ModelConvertor_1.ModelConvertor.saveEntityToModel(task, model); } else { try { await ModelConvertor_1.ModelConvertor.convertEntityToModel(task, this.Task); } catch (e) { e.message = '[TaskRepository] insert Task failed: ' + e.message; if (e.code === 'ER_DUP_ENTRY') { this.logger.warn(e); const taskModel = await this.Task.findOne({ bizId: task.bizId }); // 覆盖 bizId 相同的 id 和 taskId if (taskModel) { task.id = taskModel.id; task.taskId = taskModel.taskId; return; } // taskModel 可能不存在,遇到数据错误 // 重新将错误抛出。 throw e; } throw e; } } } async idempotentSaveTask(task, condition) { (0, node_assert_1.strict)(task.id, 'task have no save'); const changes = ModelConvertor_1.ModelConvertor.convertEntityToChanges(task, this.Task); const updateRows = await this.Task.update({ taskId: condition.taskId, attempts: condition.attempts, }, changes); return updateRows === 1; } async saveTaskToHistory(task) { const model = await this.Task.findOne({ id: task.id }); if (!model) return; const history = await this.HistoryTask.findOne({ taskId: task.taskId }); if (history) { await ModelConvertor_1.ModelConvertor.saveEntityToModel(task, history); } else { await ModelConvertor_1.ModelConvertor.convertEntityToModel(task, this.HistoryTask); } await model.remove(); } async updateSpecificVersionsOfWaitingTask(task, specificVersions) { const model = await this.Task.findOne({ id: task.id }); if (!model || !model.data.specificVersions) return; if (specificVersions) { const data = model.data; const combinedVersions = (0, lodash_1.uniq)(data.specificVersions.concat(specificVersions)); data.specificVersions = combinedVersions; await model.update({ data }); } else { const data = model.data; Reflect.deleteProperty(data, 'specificVersions'); await model.update({ data }); } } async findTask(taskId) { const task = await this.Task.findOne({ taskId }); if (task) { return ModelConvertor_1.ModelConvertor.convertModelToEntity(task, Task_1.Task); } // try to read from history const history = await this.HistoryTask.findOne({ taskId }); if (history) { return ModelConvertor_1.ModelConvertor.convertModelToEntity(history, Task_1.Task); } return null; } async findTaskByBizId(bizId) { const task = await this.Task.findOne({ bizId }); if (task) { return ModelConvertor_1.ModelConvertor.convertModelToEntity(task, Task_1.Task); } return null; } async findTasks(taskIds) { const tasks = await this.HistoryTask.find({ taskId: { $in: taskIds } }); return tasks.map(task => ModelConvertor_1.ModelConvertor.convertModelToEntity(task, Task_1.Task)); } async findTasksByCondition(where) { const tasks = await this.Task.find(where); return tasks.map(task => ModelConvertor_1.ModelConvertor.convertModelToEntity(task, Task_1.Task)); } async findTaskByTargetName(targetName, type, state) { const where = { targetName, type }; if (state) { where.state = state; } const task = await this.Task.findOne(where); if (task) { return ModelConvertor_1.ModelConvertor.convertModelToEntity(task, Task_1.Task); } return null; } async findTimeoutTasks(taskState, timeout) { const timeoutDate = new Date(); timeoutDate.setTime(timeoutDate.getTime() - timeout); const models = await this.Task.find({ state: taskState, updatedAt: { $lt: timeoutDate, }, }).limit(1000); return models.map(model => ModelConvertor_1.ModelConvertor.convertModelToEntity(model, Task_1.Task)); } async findTaskByAuthorIpAndType(authorIp, type) { const models = await this.Task.find({ type, authorIp, }).limit(1000); return models.map(model => ModelConvertor_1.ModelConvertor.convertModelToEntity(model, Task_1.Task)); } }; exports.TaskRepository = TaskRepository; __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], TaskRepository.prototype, "Task", void 0); __decorate([ (0, tegg_1.Inject)(), __metadata("design:type", Object) ], TaskRepository.prototype, "HistoryTask", void 0); exports.TaskRepository = TaskRepository = __decorate([ (0, tegg_1.SingletonProto)({ accessLevel: tegg_1.AccessLevel.PUBLIC, }) ], TaskRepository); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVGFza1JlcG9zaXRvcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9hcHAvcmVwb3NpdG9yeS9UYXNrUmVwb3NpdG9yeS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7QUFBQSw2Q0FBK0M7QUFDL0Msc0NBQWtFO0FBQ2xFLDBEQUF1RDtBQUd2RCw4Q0FBOEU7QUFDOUUsNkRBQTBEO0FBRTFELG1DQUE4QjtBQUt2QixJQUFNLGNBQWMsR0FBcEIsTUFBTSxjQUFlLFNBQVEsdUNBQWtCO0lBT3BELEtBQUssQ0FBQyxRQUFRLENBQUMsSUFBZ0I7UUFDN0IsSUFBSSxJQUFJLENBQUMsRUFBRSxFQUFFO1lBQ1gsTUFBTSxLQUFLLEdBQUcsTUFBTSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxJQUFJLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUN2RCxJQUFJLENBQUMsS0FBSztnQkFBRSxPQUFPO1lBQ25CLE1BQU0sK0JBQWMsQ0FBQyxpQkFBaUIsQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUM7U0FDckQ7YUFBTTtZQUNMLElBQUk7Z0JBQ0YsTUFBTSwrQkFBYyxDQUFDLG9CQUFvQixDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDNUQ7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDVixDQUFDLENBQUMsT0FBTyxHQUFHLHVDQUF1QyxHQUFHLENBQUMsQ0FBQyxPQUFPLENBQUM7Z0JBQ2hFLElBQUksQ0FBQyxDQUFDLElBQUksS0FBSyxjQUFjLEVBQUU7b0JBQzdCLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNwQixNQUFNLFNBQVMsR0FBRyxNQUFNLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDO29CQUNqRSwy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