automated_api/src/modules/flow/service/config.ts

81 lines
1.8 KiB
TypeScript
Raw Normal View History

import { Init, Inject, Provide } from '@midwayjs/decorator';
import { BaseService } from '@cool-midway/core';
import { InjectEntityModel } from '@midwayjs/typeorm';
import { Equal, Repository } from 'typeorm';
import { FlowConfigEntity } from '../entity/config';
import { AllConfig, NodeConfig, NodeTypeKey } from '../nodes';
import { KnowDataTypeService } from '../../know/service/data/type';
/**
*
*/
@Provide()
export class FlowConfigService extends BaseService {
@InjectEntityModel(FlowConfigEntity)
flowConfigEntity: Repository<FlowConfigEntity>;
@Inject()
knowDataTypeService: KnowDataTypeService;
@Inject()
ctx;
@Init()
async init() {
await super.init();
this.setEntity(this.flowConfigEntity);
}
/**
*
* @param node
* @param type
*/
async config(node: NodeTypeKey, type?: string) {
// 知识库
if (node == 'know') {
return {
knows: await this.knowDataTypeService.getKnows(),
};
}
return type ? NodeConfig[node][type] : NodeConfig[node];
}
/**
*
* @returns
*/
async all() {
return AllConfig;
}
/**
*
* @param configId
* @returns
*/
async getOptions(configId: number) {
const config = await this.flowConfigEntity.findOneBy({
id: Equal(configId),
});
return config?.options;
}
/**
*
* @param node
* @param type
* @returns
*/
async getByNode(node: string, type?: string): Promise<FlowConfigEntity[]> {
const find = await this.flowConfigEntity.createQueryBuilder('a');
if (type) {
find.where('a.type = :type', { type });
}
if (node) {
find.andWhere('a.node = :node', { node });
}
return await find.getMany();
}
}