You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
71 lines
2.2 KiB
JavaScript
71 lines
2.2 KiB
JavaScript
'use strict';
|
|
|
|
var assign = require('lodash/object/assign');
|
|
var inherits = require('inherits');
|
|
|
|
// Ensure the client has fresh objects so we can tack onto
|
|
// the prototypes without mutating them globally.
|
|
module.exports = function makeClient(ParentClient) {
|
|
|
|
if (typeof ParentClient.prototype === 'undefined') {
|
|
throw new Error('A valid parent client must be passed to makeClient');
|
|
}
|
|
|
|
function Client(config) {
|
|
ParentClient.call(this, config);
|
|
}
|
|
inherits(Client, ParentClient);
|
|
|
|
function Formatter(client) {
|
|
Formatter.super_.call(this, client);
|
|
}
|
|
inherits(Formatter, ParentClient.prototype.Formatter);
|
|
|
|
function QueryBuilder(client) {
|
|
QueryBuilder.super_.call(this, client);
|
|
}
|
|
inherits(QueryBuilder, ParentClient.prototype.QueryBuilder);
|
|
|
|
function SchemaBuilder(client) {
|
|
SchemaBuilder.super_.call(this, client);
|
|
}
|
|
inherits(SchemaBuilder, ParentClient.prototype.SchemaBuilder);
|
|
|
|
function SchemaCompiler(client, builder) {
|
|
SchemaCompiler.super_.call(this, client, builder);
|
|
}
|
|
inherits(SchemaCompiler, ParentClient.prototype.SchemaCompiler);
|
|
|
|
function TableBuilder(client, method, tableName, fn) {
|
|
TableBuilder.super_.call(this, client, method, tableName, fn);
|
|
}
|
|
inherits(TableBuilder, ParentClient.prototype.TableBuilder);
|
|
|
|
function TableCompiler(client, tableBuilder) {
|
|
TableCompiler.super_.call(this, client, tableBuilder);
|
|
}
|
|
inherits(TableCompiler, ParentClient.prototype.TableCompiler);
|
|
|
|
function ColumnBuilder(client, tableBuilder, type, args) {
|
|
ColumnBuilder.super_.call(this, client, tableBuilder, type, args);
|
|
}
|
|
inherits(ColumnBuilder, ParentClient.prototype.ColumnBuilder);
|
|
|
|
function ColumnCompiler(client, tableCompiler, columnBuilder) {
|
|
ColumnCompiler.super_.call(this, client, tableCompiler, columnBuilder);
|
|
}
|
|
inherits(ColumnCompiler, ParentClient.prototype.ColumnCompiler);
|
|
|
|
assign(Client.prototype, {
|
|
Formatter: Formatter,
|
|
QueryBuilder: QueryBuilder,
|
|
SchemaBuilder: SchemaBuilder,
|
|
SchemaCompiler: SchemaCompiler,
|
|
TableBuilder: TableBuilder,
|
|
TableCompiler: TableCompiler,
|
|
ColumnBuilder: ColumnBuilder,
|
|
ColumnCompiler: ColumnCompiler
|
|
});
|
|
|
|
return Client;
|
|
}; |