@thatcompany/ts-tool
Version:
基于TypeScript编写的工具库
51 lines • 1.89 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.TaskManager = void 0;
const IAutoManager_1 = require("../IAutoManager");
const annotation_1 = require("../../annotation");
const logger_1 = require("../../../logger");
const logger = logger_1.LoggerContext.getSubLogger('CronTaskRegister', true);
/**
* 任务注解管理器
*/
class TaskManager extends IAutoManager_1.IAutoManager {
clazz = annotation_1.IRegister;
keys = [annotation_1.METADATA.TASK.REGISTER];
services = new Map();
async execute() {
if (this.entities.size === 0) {
return this.services;
}
for (const key of this.keys) {
const entities = this.entities.get(key);
if (entities?.size === 0)
continue;
switch (key) {
case annotation_1.METADATA.TASK.REGISTER:
for (const entity of entities) {
const register = new entity();
if (this.services.has(register.IDENTIFIER_CHILD)) {
this.services.get(register.IDENTIFIER_CHILD)?.set(register.NAME, register);
}
else {
this.services.set(register.IDENTIFIER_CHILD, new Map([[register.NAME, register]]));
}
}
break;
default:
break;
}
}
for (const key of this.services.keys()) {
const services = this.services.get(key);
if (services?.size === 0)
continue;
for (const [name, service] of services) {
await service.register();
}
}
return this.services;
}
}
exports.TaskManager = TaskManager;
//# sourceMappingURL=TaskManager.js.map