json-sql-isme2n
Version:
node.js json to sql queries mapper
45 lines (32 loc) • 1.13 kB
JavaScript
;
var BaseDialect = require('../base');
var _ = require('underscore');
var util = require('util');
var templatesInit = require('./templates');
var blocksInit = require('./blocks');
var operatorsInit = require('./operators');
var Dialect = module.exports = function(builder) {
BaseDialect.call(this, builder);
// init templates
templatesInit(this);
// init blocks
blocksInit(this);
// init operators
operatorsInit(this);
};
util.inherits(Dialect, BaseDialect);
Dialect.prototype.config = _({
jsonSeparatorRegexp: /->>?/g
}).extend(BaseDialect.prototype.config);
Dialect.prototype._wrapIdentifier = function(name) {
// split by json separator
var nameParts = name.split(this.config.jsonSeparatorRegexp);
var separators = name.match(this.config.jsonSeparatorRegexp);
// wrap base identifier
var identifier = BaseDialect.prototype._wrapIdentifier.call(this, nameParts[0]);
// wrap all json identifier and join them with separators
identifier += _(separators).reduce(function(memo, separator, index) {
return memo + separator + '\'' + nameParts[index + 1] + '\'';
}, '');
return identifier;
};