mirror of
https://github.com/DeNNiiInc/dbgate.git
synced 2026-05-02 12:33:58 +00:00
fixes
This commit is contained in:
@@ -9,7 +9,15 @@ import type {
|
|||||||
TableInfo,
|
TableInfo,
|
||||||
ViewInfo,
|
ViewInfo,
|
||||||
} from 'dbgate-types';
|
} from 'dbgate-types';
|
||||||
import { detectSqlFilterBehaviour, equalFullName, isCollectionInfo, isTableInfo, isViewInfo, stringFilterBehaviour } from 'dbgate-tools';
|
import {
|
||||||
|
detectSqlFilterBehaviour,
|
||||||
|
equalFullName,
|
||||||
|
isCollectionInfo,
|
||||||
|
isTableInfo,
|
||||||
|
isViewInfo,
|
||||||
|
mongoFilterBehaviour,
|
||||||
|
stringFilterBehaviour,
|
||||||
|
} from 'dbgate-tools';
|
||||||
import {
|
import {
|
||||||
ChangePerspectiveConfigFunc,
|
ChangePerspectiveConfigFunc,
|
||||||
createPerspectiveNodeConfig,
|
createPerspectiveNodeConfig,
|
||||||
@@ -346,7 +354,7 @@ export abstract class PerspectiveTreeNode {
|
|||||||
const base = this.getBaseTableFromThis() as TableInfo | ViewInfo;
|
const base = this.getBaseTableFromThis() as TableInfo | ViewInfo;
|
||||||
if (!base) return null;
|
if (!base) return null;
|
||||||
try {
|
try {
|
||||||
const condition = parseFilter(this.nodeConfig?.multiColumnFilter, 'string');
|
const condition = parseFilter(this.nodeConfig?.multiColumnFilter, stringFilterBehaviour);
|
||||||
if (condition) {
|
if (condition) {
|
||||||
const orCondition: CompoudCondition = {
|
const orCondition: CompoudCondition = {
|
||||||
conditionType: 'or',
|
conditionType: 'or',
|
||||||
@@ -380,7 +388,7 @@ export abstract class PerspectiveTreeNode {
|
|||||||
const pattern = this.dataProvider?.dataPatterns?.[this.designerId];
|
const pattern = this.dataProvider?.dataPatterns?.[this.designerId];
|
||||||
if (!pattern) return null;
|
if (!pattern) return null;
|
||||||
|
|
||||||
const condition = parseFilter(this.nodeConfig?.multiColumnFilter, 'mongo');
|
const condition = parseFilter(this.nodeConfig?.multiColumnFilter, mongoFilterBehaviour);
|
||||||
if (!condition) return null;
|
if (!condition) return null;
|
||||||
const res = pattern.columns.map(col => {
|
const res = pattern.columns.map(col => {
|
||||||
return _cloneDeepWith(condition, expr => {
|
return _cloneDeepWith(condition, expr => {
|
||||||
@@ -951,7 +959,7 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
|
|||||||
|
|
||||||
get filterBehaviour(): FilterBehaviour {
|
get filterBehaviour(): FilterBehaviour {
|
||||||
if (this.tableColumn) return detectSqlFilterBehaviour(this.tableColumn.dataType);
|
if (this.tableColumn) return detectSqlFilterBehaviour(this.tableColumn.dataType);
|
||||||
return 'mongo';
|
return mongoFilterBehaviour;
|
||||||
}
|
}
|
||||||
|
|
||||||
get preloadedLevelData() {
|
get preloadedLevelData() {
|
||||||
@@ -1093,7 +1101,7 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
|
|||||||
parseFilterCondition(source = null): {} {
|
parseFilterCondition(source = null): {} {
|
||||||
const filter = this.getFilter();
|
const filter = this.getFilter();
|
||||||
if (!filter) return null;
|
if (!filter) return null;
|
||||||
const condition = parseFilter(filter, 'mongo');
|
const condition = parseFilter(filter, mongoFilterBehaviour);
|
||||||
if (!condition) return null;
|
if (!condition) return null;
|
||||||
return _cloneDeepWith(condition, expr => {
|
return _cloneDeepWith(condition, expr => {
|
||||||
if (expr.__placeholder__) {
|
if (expr.__placeholder__) {
|
||||||
|
|||||||
@@ -227,7 +227,9 @@ function getParser(filterBehaviour: FilterBehaviour) {
|
|||||||
|
|
||||||
export function parseFilter(value: string, filterBehaviour: FilterBehaviour): Condition {
|
export function parseFilter(value: string, filterBehaviour: FilterBehaviour): Condition {
|
||||||
const parser = getParser(filterBehaviour);
|
const parser = getParser(filterBehaviour);
|
||||||
|
console.log('value', value);
|
||||||
|
console.log('filterBehaviour', filterBehaviour);
|
||||||
const ast = parser.list.tryParse(value);
|
const ast = parser.list.tryParse(value);
|
||||||
// console.log('AST', ast);
|
console.log('AST', ast);
|
||||||
return ast;
|
return ast;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ export const logicalFilterBehaviour: FilterBehaviour = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
export const datetimeFilterBehaviour: FilterBehaviour = {
|
export const datetimeFilterBehaviour: FilterBehaviour = {
|
||||||
compilerType: 'sqlTree',
|
compilerType: 'datetime',
|
||||||
supportNullTesting: true,
|
supportNullTesting: true,
|
||||||
supportSqlCondition: true,
|
supportSqlCondition: true,
|
||||||
supportDatetimeSymbols: true,
|
supportDatetimeSymbols: true,
|
||||||
@@ -59,7 +59,7 @@ export const evalFilterBehaviour: FilterBehaviour = {
|
|||||||
allowStringToken: true,
|
allowStringToken: true,
|
||||||
};
|
};
|
||||||
|
|
||||||
export const standardFilterBehaviours = {
|
export const standardFilterBehaviours: { [id: string]: FilterBehaviour } = {
|
||||||
numberFilterBehaviour,
|
numberFilterBehaviour,
|
||||||
stringFilterBehaviour,
|
stringFilterBehaviour,
|
||||||
logicalFilterBehaviour,
|
logicalFilterBehaviour,
|
||||||
|
|||||||
2
packages/types/engines.d.ts
vendored
2
packages/types/engines.d.ts
vendored
@@ -73,7 +73,7 @@ export interface ServerSummary {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export interface FilterBehaviourProvider {
|
export interface FilterBehaviourProvider {
|
||||||
getFilterBehaviour(dataType: string, standardFilterBehaviours: { string: FilterBehaviour }): FilterBehaviour;
|
getFilterBehaviour(dataType: string, standardFilterBehaviours: { [id: string]: FilterBehaviour }): FilterBehaviour;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface EngineDriver extends FilterBehaviourProvider {
|
export interface EngineDriver extends FilterBehaviourProvider {
|
||||||
|
|||||||
@@ -26,7 +26,7 @@
|
|||||||
for (const uniqueName in filters || {}) {
|
for (const uniqueName in filters || {}) {
|
||||||
if (!filters[uniqueName]) continue;
|
if (!filters[uniqueName]) continue;
|
||||||
try {
|
try {
|
||||||
const ast = parseFilter(filters[uniqueName], 'mongo');
|
const ast = parseFilter(filters[uniqueName], mongoFilterBehaviour);
|
||||||
// console.log('AST', ast);
|
// console.log('AST', ast);
|
||||||
const cond = _.cloneDeepWith(ast, expr => {
|
const cond = _.cloneDeepWith(ast, expr => {
|
||||||
if (expr.__placeholder__) {
|
if (expr.__placeholder__) {
|
||||||
@@ -123,6 +123,7 @@
|
|||||||
import ChangeSetGrider from './ChangeSetGrider';
|
import ChangeSetGrider from './ChangeSetGrider';
|
||||||
|
|
||||||
import LoadingDataGridCore from './LoadingDataGridCore.svelte';
|
import LoadingDataGridCore from './LoadingDataGridCore.svelte';
|
||||||
|
import { mongoFilterBehaviour } from 'dbgate-tools';
|
||||||
|
|
||||||
export let conid;
|
export let conid;
|
||||||
export let display;
|
export let display;
|
||||||
|
|||||||
Reference in New Issue
Block a user