amis-model-design
Version:
amis模型设计器
76 lines (75 loc) • 2.64 kB
TypeScript
/**
* 用于构建模型数据的接口
*/
import { JSONQLWhereCondition, OrderBy } from '../jsonql';
import { type ConditionValue } from 'amis';
import type { Strategy } from './ApiStrategyInterface';
import type { ModelEntityApiSchema, ExtraField, FeatType } from '../type';
type ApiScene = 'list' | 'form' | 'option';
export declare class ApiBuilder {
/** 标识符 */
idParam: string;
/** 构建方式 */
strategy: Strategy;
/** 使用场景 */
scene: ApiScene;
/** 字段集合 */
selects: Array<{
column: string;
alias?: string;
}>;
/** JSONQL查询条件 */
wheres: Array<JSONQLWhereCondition>;
/** JSONQL排序条件 */
orders: OrderBy[];
/** JSONQL需要后端解析的变量,在构建其他语句的时候需要添加进去 */
vars: string[];
/** 追加的查询条件, */
query: Record<string, string>;
constructor(idParam?: string, strategy?: Strategy, scene?: ApiScene);
get hasQuery(): boolean;
setIdParam(value: string): void;
addVar(name: string): string[];
addQuery(key: string, value: string): void;
select(column?: string | Array<{
column: string;
alias?: string;
}>, alias?: string): void;
addSelect(column: string | Array<{
column: string;
alias?: string;
}>, alias?: string): void;
/** 解析select子句 */
resolveSelectFields(fields: ExtraField[], options?: {
feat?: FeatType;
method?: 'GET' | 'POST' | 'PUT' | 'DELETE';
}): {
column: string;
alias?: string | undefined;
}[];
where(condition?: JSONQLWhereCondition): void;
addWhere(condition: JSONQLWhereCondition): void;
/** 解析ConditionBuilder,构建where子句 和 query */
setWhereAndQueryByConditionBuilder(filters?: ConditionValue): void;
orderBy(condition?: OrderBy | OrderBy[]): void;
addOrderBy(condition: OrderBy | OrderBy[]): void;
/**
* 解析ConditionBuilder中的where子句
* @desc 排序只支持主表字段,不支持根据子表字段排序
*
* @param orders 排序字段集
* @param many 是否为多数据
* @returns
*/
resolveOrderByFields(orders?: ModelEntityApiSchema['orders'], many?: boolean): OrderBy[];
/**
* 构建JsonQL中可用的变量
* @desc 形如{{xxx}}的值会被认为是后端变量,取不到的时候不会有where子句,除非设置了default默认值
*
* @param name 变量名称
* @param defaultValue 默认值
* @returns
*/
buildVariable(name: string, defaultValue?: any): string;
}
export {};