Extending
To extend knex's builders, we have the following methods
knex.SchemaBuilder.extend('functionName', function () {
console.log('Custom Schema Builder Function');
return this;
});
knex.TableBuilder.extend('functionName', function () {
console.log('Custom Table Builder Function');
return this;
});
knex.ViewBuilder.extend('functionName', function () {
console.log('Custom View Builder Function');
return this;
});
knex.ColumnBuilder.extend('functionName', function () {
console.log('Custom Column Builder Function');
return this;
});
To add typescript support you can add the following (.d.ts):
import 'knex';
declare module 'knex' {
namespace Knex {
interface SchemaBuilder {
functionName(): Knex.SchemaBuilder;
}
interface TableBuilder {
functionName(): Knex.TableBuilder;
}
interface ViewBuilder {
functionName(): Knex.ViewBuilder;
}
interface ColumnBuilder {
functionName(): Knex.ColumnBuilder;
}
}
}