// Type definitions for db-migrate-base // Project: https://github.com/db-migrate/db-migrate-base // Definitions by: nickiannone // Definitions: https://github.com/nickiannone/DefinitelyTyped // TypeScript Version: 3.2 /// import * as Promise from "bluebird"; export interface CallbackFunction { (err: any, response: any): void; } export interface InternalModule { log: any; type: any; } export interface InternalOptions { mod: InternalModule; } export interface ColumnSpec { length?: number; type: string; unsigned?: boolean; primaryKey?: boolean; autoIncrement?: boolean; notNull?: boolean; unique?: boolean; defaultValue?: any; foreignKey?: ForeignKeySpec; } export interface ForeignKeySpec { name: string; table: string; rules?: ForeignKeyRules; mapping: string | any; } export interface ForeignKeyRules { onDelete: string; onUpdate: string; } export interface RemoveForeignKeyOptions { dropIndex?: boolean; } export interface ColumnDef { foreignKey?: any; // TODO Figure this out! constraints: string; } export interface CreateTableOptions { columns?: Array; ifNotExists?: boolean; } export interface DropTableOptions { ifExists?: boolean; } export class Base { constructor(intern: InternalOptions); close(callback?: CallbackFunction): void; mapDataType(str: string): string; truncate(tableName: string, callback: CallbackFunction): void; checkDBMS(dbms: any, callback: CallbackFunction): void; createDatabase(...options: any[]): void; switchDatabase(...options: any[]): void; dropDatabase(...options: any[]): void; recurseCallbackArray(foreignKeys: Array, callback: CallbackFunction): void; bindForeignKey(tableName: string, columnName: string, fkOptions: ForeignKeySpec): (callback: CallbackFunction) => void; createColumnDef(name: string, spec: ColumnSpec, options?: any): ColumnDef; // TODO Figure out a type for `options`! //createColumnConstraint(spec: ColumnSpec, options?: any, ...implementationDefinedOptions: any[]): string; createMigrationsTable(callback: CallbackFunction): void; createSeedsTable(callback: CallbackFunction): void; createTable(tableName: string, options: any | CreateTableOptions, callback: CallbackFunction): void; dropTable(tableName: string, optionsOrCb?: DropTableOptions | CallbackFunction, callback?: CallbackFunction): void; renameTable(tableName: string, newTableName: string, callback: CallbackFunction): void; addColumn(tableName: string, columnName: string, columnSpec: ColumnSpec, callback: CallbackFunction): void; removeColumn(tableName: string, columnName: string, callback: CallbackFunction): void; renameColumn(tableName: string, oldColumnName: string, newColumnName: string, callback: CallbackFunction): void; changeColumn(tableName: string, columnName: string, columnSpec: ColumnSpec, callback: CallbackFunction): void; quoteDDLArr(arr: Array): Array; quoteArr(arr: Array): Array; addIndex(tableName: string, indexName: string, columns: string | Array, uniqueOrCb?: boolean | CallbackFunction, callback?: CallbackFunction): void; insert(tableName: string, columnNameOrValueArray: any, valueArrayOrCb?: any | CallbackFunction, callback?: CallbackFunction): void; update(tableName: string, columnNameOrValueArray: any, valueArrayOrIds?: any, idsOrCb?: any | CallbackFunction, callback?: CallbackFunction): void; lookup(tableName: string, column: string, id?: any, callback?: CallbackFunction): void; removeIndex(tableNameOrIndexName: string, indexNameOrCb?: string | CallbackFunction, callback?: CallbackFunction): void; addForeignKey(tableName: string, referencedTableName: string, keyName: string, fieldMapping: any, rules: ForeignKeyRules, callback: CallbackFunction): void; removeForeignKey(tableName: string, keyName: string, optionsOrCb?: RemoveForeignKeyOptions | CallbackFunction, callback?: CallbackFunction): void; normalizeColumnSpec(spec: string | ColumnSpec): ColumnSpec; addMigrationRecord(name: string, callback: CallbackFunction): void; addSeedRecord(name: string, callback: CallbackFunction): void; startMigration(callback: CallbackFunction): void; endMigration(callback: CallbackFunction): void; runSql(sql?: string, paramsOrCb?: Array | CallbackFunction, callback?: CallbackFunction): void; allLoadedMigrations(callback: CallbackFunction): void; allLoadedSeeds(callback: CallbackFunction): void; deleteMigration(migrationName: string, callback: CallbackFunction): void; remove(table: string, ids: any, callback: CallbackFunction): void; // TODO Make ids match the type of ids in buildWhereClause(ids); buildWhereClause(ids: any): string; deleteSeed(seedName: string, callback: CallbackFunction): void; all(sql: string, paramsOrCb?: Array | CallbackFunction, callback?: CallbackFunction): void; escape(str: string): string; escapeString(str: string): string; escapeDDL(str: string): string; // Promisified methods closeAsync(): Promise; truncateAsync(tableName: string): Promise; checkDBMSAsync(dbms: any): Promise; createDatabaseAsync(...options: any[]): Promise; switchDatabaseAsync(...options: any[]): Promise; dropDatabaseAsync(...options: any[]): Promise; recurseCallbackArrayAsync(foreignKeys: Array): Promise; createMigrationsTableAsync(): Promise; createSeedsTableAsync(): Promise; createTableAsync(tableName: string, options: any | CreateTableOptions): Promise; dropTableAsync(tableName: string, options?: DropTableOptions): Promise; renameTableAsync(tableName: string, newTableName: string): Promise; addColumnAsync(tableName: string, columnName: string, columnSpec: ColumnSpec): Promise; removeColumnAsync(tableName: string, columnName: string): Promise; renameColumnAsync(tableName: string, oldColumnName: string, newColumnName: string): Promise; changeColumnAsync(tableName: string, columnName: string, columnSpec: ColumnSpec): Promise; addIndexAsync(tableName: string, indexName: string, columns: string | Array, unique?: boolean): Promise; insertAsync(tableName: string, columnNameOrValueArray: any, valueArrayOrCb?: any | CallbackFunction, callback?: CallbackFunction): Promise; updateAsync(tableName: string, columnNameOrValueArray: any, valueArrayOrIds?: any, idsOrCb?: any | CallbackFunction, callback?: CallbackFunction): Promise; lookupAsync(tableName: string, column: string, id?: any, callback?: CallbackFunction): Promise; removeIndexAsync(tableNameOrIndexName: string, indexName?: string): Promise; addForeignKeyAsync(tableName: string, referencedTableName: string, keyName: string, fieldMapping: any, rules: ForeignKeyRules): Promise; removeForeignKeyAsync(tableName: string, keyName: string, options?: RemoveForeignKeyOptions): Promise; addMigrationRecordAsync(name: string): Promise; addSeedRecordAsync(name: string): Promise; startMigrationAsync(): Promise; endMigrationAsync(callback: CallbackFunction): Promise; runSqlAsync(sql?: string, params?: Array): Promise; allLoadedMigrationsAsync(): Promise; allLoadedSeedsAsync(): Promise; deleteMigrationAsync(migrationName: string): Promise; removeAsync(table: string, ids: any): Promise; deleteSeedAsync(seedName: string): Promise; allAsync(sql: string, params?: Array): Promise; }