fix: 优化了查询逻辑,如果提供origin则不需要再去查询数据库

This commit is contained in:
Pan Qiancheng 2025-10-24 14:09:07 +08:00
parent f4c80b052c
commit 859d09cf13
1 changed files with 37 additions and 23 deletions

View File

@ -7,6 +7,7 @@ import { RemoveTrigger } from 'oak-domain/lib/types/Trigger';
import { BRC } from '../types/RuntimeCxt';
import { applicationProjection } from '../types/Projection';
import assert from 'assert';
import { CosOrigin } from '../types/Config';
const triggers: Trigger<EntityDict, 'extraFile', BRC<EntityDict>>[] = [
{
@ -17,41 +18,54 @@ const triggers: Trigger<EntityDict, 'extraFile', BRC<EntityDict>>[] = [
fn: async ({ operation }, context) => {
const { data } = operation;
const [application] = await context.select("application", {
data: {
config: {
cos: {
defaultOrigin: 1,
}
},
system: {
let cachedOrigin: CosOrigin | undefined = undefined;
const getCosOrigin = async (): Promise<CosOrigin | undefined> => {
if (cachedOrigin) {
return cachedOrigin;
}
const [application] = await context.select("application", {
data: {
config: {
Cos: {
cos: {
defaultOrigin: 1,
}
},
platform: {
system: {
config: {
Cos: {
defaultOrigin: 1,
}
},
platform: {
config: {
Cos: {
defaultOrigin: 1,
}
}
}
}
}
},
filter: {
id: context.getApplicationId()!,
},
}, {});
},
filter: {
id: context.getApplicationId()!,
},
}, {});
assert(application, `找不到 当前应用程序`);
cachedOrigin = application.config?.cos?.defaultOrigin ||
application.system?.config?.Cos?.defaultOrigin ||
application.system?.platform?.config?.Cos?.defaultOrigin;
return cachedOrigin;
}
assert(application, `找不到 当前应用程序`);
const formMeta = async (data: EntityDict['extraFile']['OpSchema']): Promise<void> => {
const configOrigin = data.origin ||
application!.config?.cos?.defaultOrigin ||
application!.system?.config?.Cos?.defaultOrigin ||
application!.system?.platform?.config?.Cos?.defaultOrigin;
// 如果提供了就用提供的origin否则尝试从应用程序、系统配置、平台配置中获取默认的Cos源
const configOrigin = data.origin || await getCosOrigin();
assert(configOrigin, `extraFile的origin未指定且应用程序、系统配置、平台配置中也没有默认的Cos源请检查`);
@ -115,8 +129,8 @@ const triggers: Trigger<EntityDict, 'extraFile', BRC<EntityDict>>[] = [
},
}, {});
if (count === 0) {
const uploader = getCosBackend(origin!);
const application2 = context.getApplication(true) || application;
const uploader = getCosBackend(origin!);
const application2 = context.getApplication(true) || application;
await uploader.removeFile(
application2 as EntityDict['application']['Schema'],
extraFile as EntityDict['extraFile']['OpSchema']