knex/lib/schema/builder.js

47 lines
1.3 KiB
JavaScript
Raw Normal View History

'use strict';
var _ = require('lodash');
var inherits = require('inherits');
var EventEmitter = require('events').EventEmitter;
// Constructor for the builder instance, typically called from
// `knex.builder`, accepting the current `knex` instance,
// and pulling out the `client` and `grammar` from the current
// knex instance.
function SchemaBuilder() {
2014-04-09 10:11:41 -04:00
this._sequence = [];
this._errors = [];
}
inherits(SchemaBuilder, EventEmitter);
// Each of the schema builder methods just add to the
// "_sequence" array for consistency.
2014-04-16 01:23:50 -04:00
_.each([
'createTable', 'createTableIfNotExists', 'createSchema',
'createSchemaIfNotExists', 'dropSchema', 'dropSchemaIfExists',
'table', 'alterTable', 'hasTable', 'hasColumn',
2014-06-09 19:58:01 -04:00
'dropTable', 'renameTable', 'dropTableIfExists', 'raw', 'debug'
2014-04-16 01:23:50 -04:00
], function(method) {
SchemaBuilder.prototype[method] = function() {
if (method === 'table') method = 'alterTable';
this._sequence.push({
method: method,
args: _.toArray(arguments)
});
return this;
};
});
SchemaBuilder.prototype.toString = function() {
return this.toQuery();
};
2014-04-09 10:11:41 -04:00
SchemaBuilder.prototype.toSQL = function() {
var SchemaCompiler = this.client.SchemaCompiler;
return new SchemaCompiler(this).toSQL();
};
require('../interface')(SchemaBuilder);
module.exports = SchemaBuilder;