oak-general-business/lib/triggers/extraFile.js

72 lines
2.4 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const cos_1 = require("../utils/cos");
const Exception_1 = require("oak-domain/lib/types/Exception");
const triggers = [
{
name: '生成extraFile需要的上传meta',
when: 'before',
entity: 'extraFile',
action: 'create',
fn: async ({ operation }, context) => {
const { data } = operation;
const formMeta = async (data) => {
const { origin } = data;
if (origin === 'unknown') {
Object.assign(data, {
uploadState: 'success',
});
return;
}
const cos = (0, cos_1.getCos)(origin);
if (!cos) {
throw new Exception_1.OakException(`origin为${origin}的extraFile没有定义Cos类请调用registerCos注入`);
}
await cos.formUploadMeta(data, context);
Object.assign(data, {
uploadState: 'uploading',
});
};
if (data instanceof Array) {
await Promise.all(data.map(ele => formMeta(ele)));
return data.length;
}
await formMeta(data);
return 1;
}
},
{
name: '删除extraFile时远端也进行删除',
when: 'commit',
strict: 'makeSure',
entity: 'extraFile',
action: 'remove',
fn: async ({ ids }, context) => {
const rows = await context.select('extraFile', {
data: {
id: 1,
origin: 1,
objectId: 1,
},
filter: {
id: { $in: ids },
},
}, {});
for (const extraFile of rows) {
const { origin, objectId } = extraFile;
// 用objectId来去重只有当没有还有效的objectId方可删除
const count = await context.count('extraFile', {
filter: {
objectId: objectId,
},
}, {});
if (count === 0) {
const uploader = (0, cos_1.getCos)(origin);
await uploader.removeFile(extraFile, context);
}
}
}
},
];
exports.default = triggers;