mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-04-26 07:36:00 +00:00
filter behaviour WIP
This commit is contained in:
17
packages/tools/src/detectSqlFilterBehaviour.ts
Normal file
17
packages/tools/src/detectSqlFilterBehaviour.ts
Normal file
@@ -0,0 +1,17 @@
|
||||
import { FilterBehaviour } from 'dbgate-types';
|
||||
import {
|
||||
datetimeFilterBehaviour,
|
||||
logicalFilterBehaviour,
|
||||
numberFilterBehaviour,
|
||||
stringFilterBehaviour,
|
||||
} from './filterBehaviours';
|
||||
import { isTypeDateTime, isTypeLogical, isTypeNumber, isTypeString } from './commonTypeParser';
|
||||
|
||||
export function detectSqlFilterBehaviour(dataType: string): FilterBehaviour {
|
||||
if (!dataType) return stringFilterBehaviour;
|
||||
if (isTypeNumber(dataType)) return numberFilterBehaviour;
|
||||
if (isTypeString(dataType)) return stringFilterBehaviour;
|
||||
if (isTypeLogical(dataType)) return logicalFilterBehaviour;
|
||||
if (isTypeDateTime(dataType)) return datetimeFilterBehaviour;
|
||||
return stringFilterBehaviour;
|
||||
}
|
||||
@@ -3,6 +3,7 @@ import { SqlDumper } from './SqlDumper';
|
||||
import { splitQuery } from 'dbgate-query-splitter';
|
||||
import { dumpSqlSelect } from 'dbgate-sqltree';
|
||||
import { EngineDriver, QueryResult, RunScriptOptions } from 'dbgate-types';
|
||||
import { detectSqlFilterBehaviour } from './detectSqlFilterBehaviour';
|
||||
|
||||
const dialect = {
|
||||
limitSelect: true,
|
||||
@@ -150,4 +151,7 @@ export const driverBase = {
|
||||
showConnectionField: (field, values) => false,
|
||||
showConnectionTab: field => true,
|
||||
getAccessTokenFromAuth: async (connection, req) => null,
|
||||
getFilterBehaviour(dataType: string, standardFilterBehaviours) {
|
||||
return detectSqlFilterBehaviour(dataType);
|
||||
},
|
||||
};
|
||||
|
||||
69
packages/tools/src/filterBehaviours.ts
Normal file
69
packages/tools/src/filterBehaviours.ts
Normal file
@@ -0,0 +1,69 @@
|
||||
import { FilterBehaviour } from 'dbgate-types';
|
||||
|
||||
export const numberFilterBehaviour: FilterBehaviour = {
|
||||
compilerType: 'sqlTree',
|
||||
supportEquals: true,
|
||||
supportNumberLikeComparison: true,
|
||||
supportNullTesting: true,
|
||||
supportSqlCondition: true,
|
||||
|
||||
allowNumberToken: true,
|
||||
};
|
||||
|
||||
export const stringFilterBehaviour: FilterBehaviour = {
|
||||
compilerType: 'sqlTree',
|
||||
supportEquals: true,
|
||||
supportStringInclusion: true,
|
||||
supportEmpty: true,
|
||||
supportNumberLikeComparison: true,
|
||||
supportNullTesting: true,
|
||||
supportSqlCondition: true,
|
||||
|
||||
allowStringToken: true,
|
||||
allowHexString: true,
|
||||
};
|
||||
|
||||
export const logicalFilterBehaviour: FilterBehaviour = {
|
||||
compilerType: 'sqlTree',
|
||||
supportBooleanValues: true,
|
||||
supportNullTesting: true,
|
||||
supportSqlCondition: true,
|
||||
};
|
||||
|
||||
export const datetimeFilterBehaviour: FilterBehaviour = {
|
||||
compilerType: 'sqlTree',
|
||||
supportNullTesting: true,
|
||||
supportSqlCondition: true,
|
||||
supportDatetimeSymbols: true,
|
||||
supportDatetimeComparison: true,
|
||||
};
|
||||
|
||||
export const mongoFilterBehaviour: FilterBehaviour = {
|
||||
compilerType: 'mongoCondition',
|
||||
supportEquals: true,
|
||||
supportArrayTesting: true,
|
||||
supportNumberLikeComparison: true,
|
||||
supportStringInclusion: true,
|
||||
supportBooleanValues: true,
|
||||
supportExistsTesting: true,
|
||||
};
|
||||
|
||||
export const evalFilterBehaviour: FilterBehaviour = {
|
||||
compilerType: 'sqlTree',
|
||||
supportEquals: true,
|
||||
supportStringInclusion: true,
|
||||
supportEmpty: true,
|
||||
supportNumberLikeComparison: true,
|
||||
supportNullTesting: true,
|
||||
|
||||
allowStringToken: true,
|
||||
};
|
||||
|
||||
export const standardFilterBehaviours = {
|
||||
numberFilterBehaviour,
|
||||
stringFilterBehaviour,
|
||||
logicalFilterBehaviour,
|
||||
datetimeFilterBehaviour,
|
||||
mongoFilterBehaviour,
|
||||
evalFilterBehaviour,
|
||||
};
|
||||
@@ -21,3 +21,5 @@ export * from './preloadedRowsTools';
|
||||
export * from './ScriptWriter';
|
||||
export * from './getLogger';
|
||||
export * from './getConnectionLabel';
|
||||
export * from './detectSqlFilterBehaviour';
|
||||
export * from './filterBehaviours';
|
||||
|
||||
Reference in New Issue
Block a user