import { WithLengthColumnType, WithPrecisionColumnType, WithWidthColumnType } from "typeorm/driver/types/ColumnTypes"; import { DataTypeDefaults } from "typeorm/driver/types/DataTypeDefaults"; import IConnectionOptions from "../options/connection-options.interface"; import { Entity } from "../models/entity"; import { RelationInternal } from "../models/relation-internal"; import IGenerationOptions from "../options/generation-options.interface"; export default abstract class AbstractDriver { abstract standardPort: number; abstract standardSchema: string; abstract standardUser: string; abstract defaultValues: DataTypeDefaults; ColumnTypesWithWidth: WithWidthColumnType[]; ColumnTypesWithPrecision: WithPrecisionColumnType[]; ColumnTypesWithLength: WithLengthColumnType[]; abstract GetAllTablesQuery: (schema: string, dbNames: string, tableNames: string[]) => Promise<{ TABLE_SCHEMA: string; TABLE_NAME: string; DB_NAME: string; }[]>; static FindManyToManyRelations(dbModel: Entity[]): Entity[]; GetDataFromServer(connectionOptions: IConnectionOptions, generationOptions: IGenerationOptions): Promise; abstract ConnectToServer(connectionOptons: IConnectionOptions): Promise; GetAllTables(schema: string, dbNames: string, tableNames: string[]): Promise; static GetRelationsFromRelationTempInfo(relationsTemp: RelationInternal[], entities: Entity[], generationOptions: IGenerationOptions): Entity[]; abstract GetCoulmnsFromEntity(entities: Entity[], schema: string, dbNames: string): Promise; abstract GetIndexesFromEntity(entities: Entity[], schema: string, dbNames: string): Promise; abstract GetRelations(entities: Entity[], schema: string, dbNames: string, generationOptions: IGenerationOptions): Promise; static FindPrimaryColumnsFromIndexes(dbModel: Entity[]): void; abstract DisconnectFromServer(): Promise; abstract CreateDB(dbName: string): Promise; abstract DropDB(dbName: string): Promise; abstract UseDB(dbName: string): Promise; abstract CheckIfDBExists(dbName: string): Promise; protected static escapeCommaSeparatedList(commaSeparatedList: string): string; }