Skip to content

Commit

Permalink
Merge pull request #226 from imanpalsingh/fix/transformer-priority
Browse files Browse the repository at this point in the history
Fix pirority of transformers is not followed
  • Loading branch information
imanpalsingh committed Apr 2, 2023
2 parents fff8a38 + 39ff74c commit 5f3b90a
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 8 deletions.
56 changes: 52 additions & 4 deletions src/cli/__tests__/engine.spec.ts
@@ -1,5 +1,6 @@
import {CreateTable} from '../../pg/queries/create-table';
import {SetQ} from '../../pg/queries/set-q';
import {Copy} from '../../pg/queries/copy';
import {Logger} from '../../utils/logger';
import {Engine} from '../engine';

Expand Down Expand Up @@ -112,14 +113,14 @@ describe('Engine', () => {
tables: {},
};

engine.cache ={
engine.cache = {
tableName: 'users',
columns: ['name', 'description', 'id'],
};

const operators = {
name: ()=>{},
description: ()=>{},
name: () => {},
description: () => {},
};

const result = engine.requiredTransformers(operators);
Expand All @@ -136,7 +137,7 @@ describe('Engine', () => {
tables: {},
};

engine.cache ={
engine.cache = {
tableName: 'users',
columns: ['name', 'description', 'id'],
};
Expand All @@ -147,4 +148,51 @@ describe('Engine', () => {

expect(result).toBeNull();
});

it('gives table transformers more priority than column transformers', () => {
const engine = new Engine();
const queryObj = new Copy();
engine.logger = new Logger('info');

engine.aoo = {
tables: {
users: {
name: () => {},
},
},
columns: {
name: () => {},
},
};
queryObj.query = 'COPY public.users (name, email) FROM stdin;';

engine.apply(queryObj);

const selectedTransformers = engine.cache?.transformers;
expect(selectedTransformers).toEqual(engine.aoo.tables!.users);
});

describe('when using middleware', () => {
it('gives table transformers more priority than column transformers', () => {
const engine = new Engine();
const queryObj = new Copy();
const middleware = () => [];
engine.logger = new Logger('info');

engine.aoo = {
tables: {
users: [middleware, {name: () => {}}],
},
columns: {
name: () => {},
},
};
queryObj.query = 'COPY public.users (name, email) FROM stdin;';

engine.apply(queryObj);

const selectedTransformers = engine.cache?.transformers;
expect(selectedTransformers![-1]).toEqual(engine.aoo.tables!.users[-1]);
});
});
});
8 changes: 4 additions & 4 deletions src/cli/engine.ts
Expand Up @@ -99,7 +99,7 @@ class Engine {
}
}

#apply(query: Query) {
apply(query: Query) {
this.cache = {tableName: query.tableName};

if (!this.canExecute(query)) return false;
Expand All @@ -112,12 +112,12 @@ class Engine {
if (Array.isArray(tableOperations)) {
const [middleware, transforms] = tableOperations;
const identifiedTransformers = this.requiredTransformers({
...transforms,
...this.aoo.columns,
...transforms,
});
this.cache.transformers = [middleware, identifiedTransformers || {}];
} else {
tableOperations = {...(tableOperations as ColumnTypes), ...this.aoo.columns};
tableOperations = {...this.aoo.columns, ...(tableOperations as ColumnTypes)};
this.cache.transformers = this.requiredTransformers(tableOperations);
}

Expand Down Expand Up @@ -210,7 +210,7 @@ class Engine {
const query = this.parseLine(line);

if (query) {
canWriteToFile = this.#apply(query);
canWriteToFile = this.apply(query);
} else if (this.cache?.columns) {
/*
Query data in progress
Expand Down

0 comments on commit 5f3b90a

Please sign in to comment.