Skip to content

Commit

Permalink
move the transform function to sdk transform
Browse files Browse the repository at this point in the history
  • Loading branch information
invisal committed Feb 4, 2025
1 parent 3acf7fc commit 2bf0b1d
Show file tree
Hide file tree
Showing 12 changed files with 173 additions and 476 deletions.
7 changes: 7 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 3 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
"author": "Outerbase",
"license": "MIT",
"dependencies": {
"@outerbase/sdk-transform": "^1.0.2",
"handlebars": "^4.7.8"
},
"devDependencies": {
Expand All @@ -53,11 +54,11 @@
"mysql2": "^3.11.3",
"pg": "^8.13.0",
"prettier": "^3.2.5",
"snowflake-sdk": "^1.15.0",
"ts-jest": "^29.1.3",
"ts-node": "^10.9.2",
"tsconfig-paths": "^4.2.0",
"typescript": "^5.4.5",
"ws": "^8.17.1",
"snowflake-sdk": "^1.15.0"
"ws": "^8.17.1"
}
}
12 changes: 3 additions & 9 deletions src/connections/index.ts
Original file line number Diff line number Diff line change
@@ -1,23 +1,17 @@
import { ColumnHeader, ResultSet } from '@outerbase/sdk-transform';
import {
Database,
TableColumn,
TableColumnDefinition,
} from '../models/database';

export interface QueryResultHeader {
name: string;
displayName: string;
type?: string;
tableName?: string;
}
export interface QueryResult<T = Record<string, unknown>> {
export interface QueryResult<T = Record<string, unknown>>
extends Omit<ResultSet, 'rows'> {
data: T[];
count?: number;
headers: QueryResultHeader[];
error: Error | null;
query: string;
}

export interface ConnectionSelectOptions {
where?: { name: string; value: unknown; operator: string }[];
orderBy?: (string | [string, 'ASC' | 'DESC'])[];
Expand Down
64 changes: 26 additions & 38 deletions src/connections/mysql.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,15 @@ import {
import { SqlConnection } from './sql-base';
import { Query } from '../query';
import { QueryType } from '../query-params';
import {
Constraint,
Database,
Table,
TableColumn,
TableColumnDefinition,
} from './../models/database';
import { Constraint, Database, Table, TableColumn } from './../models/database';
import { MySQLDialect } from './../query-builder/dialects/mysql';
import {
createErrorResult,
transformArrayBasedResult,
transformFromSdkTransform,
} from './../utils/transformer';
import { QueryResult } from '.';
import { ColumnDataType } from '../query-builder';
import { transformMySQLResult } from '@outerbase/sdk-transform';

interface MySQLSchemaResult {
SCHEMA_NAME: string;
Expand Down Expand Up @@ -127,10 +122,10 @@ export function buildMySQLDatabaseSchmea({

columnLookup[
column.TABLE_SCHEMA +
'.' +
column.TABLE_NAME +
'.' +
column.COLUMN_NAME
'.' +
column.TABLE_NAME +
'.' +
column.COLUMN_NAME
] = columnObject;

table.columns.push(columnObject);
Expand All @@ -156,10 +151,10 @@ export function buildMySQLDatabaseSchmea({

constraintLookup[
constraint.TABLE_SCHEMA +
'.' +
constraint.TABLE_NAME +
'.' +
constraint.CONSTRAINT_NAME
'.' +
constraint.TABLE_NAME +
'.' +
constraint.CONSTRAINT_NAME
] = constraintObject;

table.constraints.push(constraintObject);
Expand All @@ -169,22 +164,22 @@ export function buildMySQLDatabaseSchmea({
for (const constraintColumn of constraintColumnsList) {
const constraint =
constraintLookup[
constraintColumn.TABLE_SCHEMA +
'.' +
constraintColumn.TABLE_NAME +
'.' +
constraintColumn.CONSTRAINT_NAME
constraintColumn.TABLE_SCHEMA +
'.' +
constraintColumn.TABLE_NAME +
'.' +
constraintColumn.CONSTRAINT_NAME
];

if (!constraint) continue;

const currentColumn =
columnLookup[
constraintColumn.TABLE_SCHEMA +
'.' +
constraintColumn.TABLE_NAME +
'.' +
constraintColumn.COLUMN_NAME
constraintColumn.TABLE_SCHEMA +
'.' +
constraintColumn.TABLE_NAME +
'.' +
constraintColumn.COLUMN_NAME
];
if (currentColumn && constraintColumn.REFERENCED_COLUMN_NAME) {
currentColumn.definition.references = {
Expand Down Expand Up @@ -254,18 +249,11 @@ export class MySQLConnection extends SqlConnection {
);

if (error) {
return createErrorResult(error.message) as QueryResult<T>;
return createErrorResult<T>(error.message);
} else {
return transformArrayBasedResult(
fields,
(header) => {
return {
name: header.name,
tableName: header.table,
};
},
rows as unknown[][]
) as QueryResult<T>;
return transformFromSdkTransform(
transformMySQLResult([rows, fields])
);
}
} catch {
return createErrorResult('Unknown error') as QueryResult<T>;
Expand Down Expand Up @@ -377,7 +365,7 @@ export class MySQLConnection extends SqlConnection {
);
}

async connect(): Promise<any> { }
async connect(): Promise<any> {}
async disconnect(): Promise<any> {
this.conn.destroy();
}
Expand Down
139 changes: 0 additions & 139 deletions src/connections/outerbase.bk.txt

This file was deleted.

27 changes: 8 additions & 19 deletions src/connections/postgre/postgresql.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
import { Client, types } from 'pg';
import { Client } from 'pg';
import { QueryResult } from '..';
import { Query } from '../../query';
import { AbstractDialect } from './../../query-builder';
import { PostgresDialect } from './../../query-builder/dialects/postgres';
import {
createErrorResult,
transformArrayBasedResult,
transformFromSdkTransform,
} from './../../utils/transformer';
import { PostgreBaseConnection } from './base';
import { setPgParser, transformPgResult } from '@outerbase/sdk-transform';

export class PostgreSQLConnection extends PostgreBaseConnection {
client: Client;
Expand All @@ -17,13 +18,7 @@ export class PostgreSQLConnection extends PostgreBaseConnection {
constructor(pgClient: any) {
super();
this.client = pgClient;

this.client.setTypeParser(types.builtins.TIMESTAMP, str => str)
this.client.setTypeParser(types.builtins.DATE, str => str)
this.client.setTypeParser(types.builtins.TIMESTAMPTZ, str => str)
this.client.setTypeParser(types.builtins.TIME, str => str)
this.client.setTypeParser(types.builtins.TIMETZ, str => str)
this.client.setTypeParser(types.builtins.JSON, str => str);
setPgParser(this.client);
}

async connect() {
Expand All @@ -38,24 +33,18 @@ export class PostgreSQLConnection extends PostgreBaseConnection {
query: Query
): Promise<QueryResult<T>> {
try {
const { rows, fields } = await this.client.query({
const result = await this.client.query({
text: query.query,
rowMode: 'array',
values: query.parameters as unknown[],
});

return transformArrayBasedResult(
fields,
(field) => ({
name: field.name,
}),
rows
) as QueryResult<T>;
return transformFromSdkTransform(transformPgResult(result));
} catch (e) {
if (e instanceof Error) {
return createErrorResult(e.message) as QueryResult<T>;
return createErrorResult<T>(e.message);
}
return createErrorResult('Unknown error') as QueryResult<T>;
return createErrorResult<T>('Unknown error');
}
}
}
Loading

0 comments on commit 2bf0b1d

Please sign in to comment.