Files
directus/packages/schema/src/index.ts
2022-01-25 15:08:20 -05:00

38 lines
1000 B
TypeScript

import { Knex } from 'knex';
import { SchemaInspector } from './types/schema';
interface SchemaInspectorConstructor {
new (knex: Knex): SchemaInspector;
}
export default function Schema(knex: Knex): SchemaInspector {
let constructor: SchemaInspectorConstructor;
switch (knex.client.constructor.name) {
case 'Client_MySQL':
constructor = require('./dialects/mysql').default;
break;
case 'Client_PG':
constructor = require('./dialects/postgres').default;
break;
case 'Client_CockroachDB':
constructor = require('./dialects/cockroachdb').default;
break;
case 'Client_SQLite3':
constructor = require('./dialects/sqlite').default;
break;
case 'Client_Oracledb':
case 'Client_Oracle':
constructor = require('./dialects/oracledb').default;
break;
case 'Client_MSSQL':
constructor = require('./dialects/mssql').default;
break;
default:
throw Error('Unsupported driver used: ' + knex.client.constructor.name);
}
return new constructor(knex);
}