knex/lib/raw.js

49 lines
1.1 KiB
JavaScript
Raw Normal View History

2013-09-13 16:58:38 -04:00
// Raw
// -------
2014-04-15 13:10:32 -04:00
var _ = require('lodash');
var inherits = require('inherits');
var EventEmitter = require('events').EventEmitter;
function Raw(sql, bindings) {
2014-04-15 13:10:32 -04:00
if (sql.toSQL) {
return this._processQuery(sql);
}
this.sql = sql;
2014-04-15 13:10:32 -04:00
this.bindings = _.isArray(bindings) ? bindings :
bindings ? [bindings] : [];
this._debug = void 0;
this._transacting = void 0;
}
inherits(Raw, EventEmitter);
// Wraps the current sql with `before` and `after`.
Raw.prototype.wrap = function(before, after) {
this.sql = before + this.sql + after;
return this;
};
// Calls `toString` on the Knex object.
Raw.prototype.toString = function() {
return this.toQuery();
};
// Returns the raw sql for the query.
2014-04-09 10:11:41 -04:00
Raw.prototype.toSQL = function() {
return {
sql: this.sql,
2014-04-09 10:11:41 -04:00
method: 'raw',
bindings: this.bindings
};
};
2014-04-15 13:10:32 -04:00
// Convert the query toSQL.
Raw.prototype._processQuery = function(sql) {
var processed = sql.toSQL();
return new this.constructor(processed.sql, processed.bindings);
};
// Allow the `Raw` object to be utilized with full access to the relevant
// promise API.
require('./interface')(Raw);
module.exports = Raw;