mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-18 06:46:00 +00:00
107 lines
2.0 KiB
TypeScript
107 lines
2.0 KiB
TypeScript
export interface RangeDefinition {
|
|
offset: number;
|
|
limit: number;
|
|
}
|
|
|
|
export interface QueryResultColumn {
|
|
columnName: string;
|
|
notNull: boolean;
|
|
autoIncrement?: boolean;
|
|
dataType?: string;
|
|
}
|
|
|
|
export interface QueryResult {
|
|
rows?: any[];
|
|
columns?: QueryResultColumn[];
|
|
rowsAffected?: number;
|
|
}
|
|
|
|
export type LeftOperand = {
|
|
exprType: 'placeholder' | 'column';
|
|
columnName?: string;
|
|
};
|
|
|
|
export type RightOperand = {
|
|
exprType: 'value';
|
|
value: any;
|
|
};
|
|
|
|
export type BinaryCondition = {
|
|
conditionType: 'binary';
|
|
operator: '=' | '!=' | '<>' | '<' | '<=' | '>' | '>=';
|
|
left: LeftOperand;
|
|
right: RightOperand;
|
|
};
|
|
|
|
export type AndCondition = {
|
|
conditionType: 'and';
|
|
conditions: FilterCondition[];
|
|
};
|
|
|
|
export type OrCondition = {
|
|
conditionType: 'or';
|
|
conditions: FilterCondition[];
|
|
};
|
|
|
|
export type NullCondition = {
|
|
conditionType: 'isNull' | 'isNotNull';
|
|
expr: LeftOperand;
|
|
};
|
|
|
|
export type NotCondition = {
|
|
conditionType: 'not';
|
|
condition: FilterCondition;
|
|
};
|
|
|
|
export type LikeCondition = {
|
|
conditionType: 'like';
|
|
left: LeftOperand;
|
|
right: RightOperand;
|
|
};
|
|
|
|
export type PredicateCondition = {
|
|
conditionType: 'specificPredicate';
|
|
predicate: 'exists' | 'notExists' | 'emptyArray' | 'notEmptyArray';
|
|
expr: LeftOperand;
|
|
};
|
|
|
|
export type InCondition = {
|
|
conditionType: 'in';
|
|
expr: LeftOperand;
|
|
values: any[];
|
|
};
|
|
|
|
export type FilterCondition =
|
|
| BinaryCondition
|
|
| AndCondition
|
|
| OrCondition
|
|
| NullCondition
|
|
| NotCondition
|
|
| LikeCondition
|
|
| PredicateCondition
|
|
| InCondition;
|
|
|
|
export type SortItem = {
|
|
columnName: string;
|
|
direction?: 'ASC' | 'DESC';
|
|
};
|
|
|
|
export type AggregateColumn = {
|
|
aggregateFunction: 'count' | 'sum' | 'avg' | 'min' | 'max';
|
|
columnArgument?: string;
|
|
alias: string;
|
|
};
|
|
|
|
export type CollectionAggregate = {
|
|
condition?: FilterCondition;
|
|
groupByColumns: string[];
|
|
aggregateColumns: AggregateColumn[];
|
|
};
|
|
|
|
export type FullQueryOptions = {
|
|
condition?: FilterCondition;
|
|
sort?: SortItem[];
|
|
limit?: number;
|
|
skip?: number;
|
|
};
|