UNPKG

amis-model-design

Version:

amis模型设计器

321 lines (319 loc) 5.87 kB
/** * 条件 */ type FXString = string; type ConditonOP = 'in' | 'not in' | '=' | '<>' | '<' | '<=' | '>' | '>=' | '@>' | '<@' | '&&' | 'is distinct from' | 'is not distinct from' | 'like' | 'not like' | 'similar to' | 'not similar to' | 'ilike' | 'not ilike' | 'is null' | 'is not null' | 'is true' | 'is not true' | 'is fase' | 'is not fase' | 'between' | 'not exists' | 'exists' | 'regexp' | 'any' | 'some' | 'all' | 'starts with' | 'ends with'; interface Condition { /** * 条件的连接符 */ operator?: 'and' | 'or'; /** * 取否 */ not?: boolean; /** * 比较方法 */ op?: ConditonOP; /** * 比较的左值 */ left?: ExpressionOrValue; /** * 比较的右值 */ right?: ExpressionOrValue | JSONQL; /** * 比较子条件 */ children?: Condition[]; /** * 默认值 */ default?: string | number | number[] | string[]; } interface Value { /** * 常量 */ val?: string; /** * 变量 */ var?: string; } export interface OrderBy { /** * 列名 */ column?: string | Expression; /** * 名称,对应前面的 alias */ name?: string | number; /** * 排序方式 */ sort?: 'desc' | 'asc' | FXString; /** * null 值在前面还是后面 */ null?: 'first' | 'last'; } /** * case 语句的内容 */ interface Case { when: Condition; then: string | Value; } type JoinType = 'left join' | 'right join' | 'join' | 'full join' | 'left outer join' | 'right outer join' | 'full outer join'; /** * join 语句 */ interface Join { /** * 要 join 的表名 */ table: string; /** * join 类型 */ joinType: JoinType; /** * join 的条件 */ on?: Condition; /** * using 语句,不推荐使用 */ using?: Expression[]; } interface Over { /** * 窗口函数的 partition by */ partitionBy?: Expression[]; /** * 窗口函数的的 order by */ orderBy?: OrderBy[]; } interface Column { /** * 查询列 */ column?: string | '*'; /** * 所属表 */ table?: string; /** * 级联名称 */ cascadeName?: string; /** * 级联字段 */ cascadeColumn?: string; } /** * 表达式 */ interface Expression extends Column { /** * 表达式字符串写法 */ exp?: string; /** * alias 名称 */ name?: string; /** * 常量 */ val?: string | number; /** * 变量 */ var?: string | number; /** * 是否加上 distinct */ distinct?: boolean; /** * 两位计算 */ binary?: string; /** * 两位计算的左值 */ left?: Expression; /** * 两位计算的右值 */ right?: Expression; /** * 单符号计算 */ sign?: '-' | '+' | '~' | '!'; /** * 单符号计算的内容 */ body?: Expression; /** * case 语句 */ case?: Case[]; /** * case 语句的 else */ else?: Expression | string; /** * alias * */ as?: string; /** * 调用函数 * */ func?: string; /** * 结果过滤函数 * */ filter?: string; /** * 函数参数 */ arg?: number | string; /** * 函数多个参数 */ args?: ExpressionOrValue[]; /** * 窗口函数 */ over?: Over; /** * 关系查询 */ relation?: string; /** * 关系查询的 select */ select?: Expression[]; /** * 关系查询的 join 类型 */ joinType?: JoinType; } type ExpressionOrValue = Expression | string | number | string[] | number[]; /** * JSONQL 定义 */ export interface JSONQL { /** * sql 字符串写法 * */ sql?: string; /** * 语句,不填就是 select */ statement?: 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE' | 'select' | 'insert' | 'update' | 'delete'; /** * 是否返回多条结果 */ many?: boolean; /** * 查询哪个表 * */ from?: string; /** * 写入或删除哪个表 */ table?: string; /** * 写入的数据 */ values?: object | FXString; /** * 更新数据 */ set?: object | FXString; /** * 更新表达式 */ setExp?: { [key: string]: Expression; }; /** * 查询字段 */ select?: Expression[] | String[]; /** * 是否返回所有结果计数,也就是去掉 where 过滤条件的结果 */ count?: boolean; /** * 查询条件 */ where?: Condition | object; /** * 对聚合的过滤 */ having?: Condition; /** * 排序方式 */ orderBy?: Array<OrderBy | number>; /** * groupBy */ groupBy?: Array<ExpressionOrValue>; /** * 限制返回结果数量 * * @minimum 0 */ limit?: number | FXString; /** * 结果偏移量 * * @minimum 0 */ offset?: number | FXString; page?: number | FXString; perPage?: number | FXString; /** * 查询结果是否加上 with ties,只有 oracle、sql server 等支持 */ withTies?: boolean; /** * join 其它表 */ join?: Join[]; /** * 合并多表 */ union?: JSONQL[]; /** * 不去重合并多表 */ unionAll?: JSONQL[]; /** * 二次查询 */ secondQuery?: JSONQL[]; /** * 是否强制返回主键 */ primaryKeyRequired?: boolean; } export type JSONQLWhereCondition = Condition; export type JSONQLWhereConditionOP = ConditonOP; export {};