adba
Version:
Any DataBase to API
39 lines (38 loc) • 2.11 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
import { generateSQLiteModels } from './generate-sqlite-models';
import { generatePostgreSQLModels } from './generate-postgresql-models';
import { generateMySQLModels } from './generate-mysql-models';
import { generateMSSQLModels } from './generate-mssql-models';
/**
* Generates models based on the structure of the database specified in the Knex instance.
* @param {Knex} knexInstance - The Knex instance connected to the database.
* @param {IGenerateModelsOptions} [opts={}] - Options including parse and format functions.
* @returns {Promise<Record<string, typeof Model>>} - A promise that resolves to an object containing all generated models.
*/
export function generateModels(knexInstance_1) {
return __awaiter(this, arguments, void 0, function* (knexInstance, opts = {}) {
const client = knexInstance.client.config.client;
switch (client) {
case 'sqlite':
case 'sqlite3':
return yield generateSQLiteModels(knexInstance, opts);
case 'pg':
return yield generatePostgreSQLModels(knexInstance, opts);
case 'mysql':
case 'mysql2':
return yield generateMySQLModels(knexInstance, opts);
case 'mssql':
return yield generateMSSQLModels(knexInstance, opts);
default:
throw new Error(`Unsupported database client: ${client}`);
}
});
}