filter behaviour refactor

This commit is contained in:
Jan Prochazka
2024-08-19 12:57:50 +02:00
parent 17cf9d5007
commit 64e770f51e
4 changed files with 16 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
import type { DatabaseInfo, ForeignKeyInfo, NamedObjectInfo, TableInfo } from 'dbgate-types'; import type { DatabaseInfo, FilterBehaviour, ForeignKeyInfo, NamedObjectInfo, TableInfo } from 'dbgate-types';
import uuidv1 from 'uuid/v1'; import uuidv1 from 'uuid/v1';
// export interface PerspectiveConfigColumns { // export interface PerspectiveConfigColumns {
@@ -31,7 +31,7 @@ export interface PerspectiveCustomJoinConfig {
export interface PerspectiveFilterColumnInfo { export interface PerspectiveFilterColumnInfo {
columnName: string; columnName: string;
filterType: string; filterBehaviour: FilterBehaviour;
pureName: string; pureName: string;
schemaName: string; schemaName: string;
foreignKey: ForeignKeyInfo; foreignKey: ForeignKeyInfo;

View File

@@ -2,13 +2,14 @@ import type {
CollectionInfo, CollectionInfo,
ColumnInfo, ColumnInfo,
DatabaseInfo, DatabaseInfo,
FilterBehaviour,
ForeignKeyInfo, ForeignKeyInfo,
NamedObjectInfo, NamedObjectInfo,
RangeDefinition, RangeDefinition,
TableInfo, TableInfo,
ViewInfo, ViewInfo,
} from 'dbgate-types'; } from 'dbgate-types';
import { equalFullName, isCollectionInfo, isTableInfo, isViewInfo } from 'dbgate-tools'; import { detectSqlFilterBehaviour, equalFullName, isCollectionInfo, isTableInfo, isViewInfo, stringFilterBehaviour } from 'dbgate-tools';
import { import {
ChangePerspectiveConfigFunc, ChangePerspectiveConfigFunc,
createPerspectiveNodeConfig, createPerspectiveNodeConfig,
@@ -33,8 +34,7 @@ import _cloneDeepWith from 'lodash/cloneDeepWith';
import _findIndex from 'lodash/findIndex'; import _findIndex from 'lodash/findIndex';
import { PerspectiveDataLoadProps, PerspectiveDataProvider } from './PerspectiveDataProvider'; import { PerspectiveDataLoadProps, PerspectiveDataProvider } from './PerspectiveDataProvider';
import stableStringify from 'json-stable-stringify'; import stableStringify from 'json-stable-stringify';
import { getFilterType, parseFilter } from 'dbgate-filterparser'; import { parseFilter } from 'dbgate-filterparser';
import { FilterType } from 'dbgate-filterparser/lib/types';
import { CompoudCondition, Condition, Expression, Select } from 'dbgate-sqltree'; import { CompoudCondition, Condition, Expression, Select } from 'dbgate-sqltree';
// import { getPerspectiveDefaultColumns } from './getPerspectiveDefaultColumns'; // import { getPerspectiveDefaultColumns } from './getPerspectiveDefaultColumns';
import uuidv1 from 'uuid/v1'; import uuidv1 from 'uuid/v1';
@@ -197,8 +197,8 @@ export abstract class PerspectiveTreeNode {
get columnTitle() { get columnTitle() {
return this.title; return this.title;
} }
get filterType(): FilterType { get filterBehaviour(): FilterBehaviour {
return 'string'; return stringFilterBehaviour;
} }
get columnName() { get columnName() {
return null; return null;
@@ -714,8 +714,8 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
return true; return true;
} }
get filterType(): FilterType { get filterBehaviour(): FilterBehaviour {
return getFilterType(this.column.dataType); return detectSqlFilterBehaviour(this.column.dataType);
} }
get isCircular() { get isCircular() {
@@ -767,7 +767,7 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
get filterInfo(): PerspectiveFilterColumnInfo { get filterInfo(): PerspectiveFilterColumnInfo {
return { return {
columnName: this.columnName, columnName: this.columnName,
filterType: this.filterType, filterBehaviour: this.filterBehaviour,
pureName: this.column.pureName, pureName: this.column.pureName,
schemaName: this.column.schemaName, schemaName: this.column.schemaName,
foreignKey: this.foreignKey, foreignKey: this.foreignKey,
@@ -777,7 +777,7 @@ export class PerspectiveTableColumnNode extends PerspectiveTreeNode {
parseFilterCondition(source = null): Condition { parseFilterCondition(source = null): Condition {
const filter = this.getFilter(); const filter = this.getFilter();
if (!filter) return null; if (!filter) return null;
const condition = parseFilter(filter, this.filterType); const condition = parseFilter(filter, this.filterBehaviour);
if (!condition) return null; if (!condition) return null;
return _cloneDeepWith(condition, (expr: Expression) => { return _cloneDeepWith(condition, (expr: Expression) => {
if (expr.exprType == 'placeholder') { if (expr.exprType == 'placeholder') {
@@ -949,8 +949,8 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
return !this.isChildColumn; return !this.isChildColumn;
} }
get filterType(): FilterType { get filterBehaviour(): FilterBehaviour {
if (this.tableColumn) return getFilterType(this.tableColumn.dataType); if (this.tableColumn) return detectSqlFilterBehaviour(this.tableColumn.dataType);
return 'mongo'; return 'mongo';
} }
@@ -1083,7 +1083,7 @@ export class PerspectivePatternColumnNode extends PerspectiveTreeNode {
return { return {
columnName: this.columnName, columnName: this.columnName,
filterType: this.filterType, filterBehaviour: this.filterBehaviour,
pureName: this.table.pureName, pureName: this.table.pureName,
schemaName: this.table.schemaName, schemaName: this.table.schemaName,
foreignKey: this.foreignKey, foreignKey: this.foreignKey,

View File

@@ -57,7 +57,7 @@
</InlineButton> </InlineButton>
</div> </div>
<DataFilterControl <DataFilterControl
filterType={filterInfo.filterType} filterBehaviour={filterInfo.filterBehaviour}
{filter} {filter}
setFilter={onSetFilter} setFilter={onSetFilter}
{conid} {conid}

View File

@@ -557,7 +557,7 @@
filter={column.dataNode.getFilter()} filter={column.dataNode.getFilter()}
setFilter={value => column.dataNode.setFilter(value)} setFilter={value => column.dataNode.setFilter(value)}
columnName={column.dataNode.uniqueName} columnName={column.dataNode.uniqueName}
filterType={column.dataNode.filterType} filterBehaviour={column.dataNode.filterBehaviour}
/> />
</th> </th>
{/each} {/each}