UNPKG

nano-queries

Version:

Simple and powerful database-agnostic query builder (SQL & NoSQL)

46 lines (44 loc) 8.35 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.ConfigurableSQLBuilder = void 0; const PreparedValue_1 = require("../core/PreparedValue"); const QueryBuilder_1 = require("../QueryBuilder"); const TemplateStringQueryBuilder_1 = require("../TemplateStringQueryBuilder"); const ConditionClause_1 = require("./ConditionClause"); const GroupExpression_1 = require("./GroupExpression"); const LimitClause_1 = require("./LimitClause"); const SelectStatement_1 = require("./SelectStatement"); const SetExpression_1 = require("./SetExpression"); const WhereClause_1 = require("./WhereClause"); class ConfigurableSQLBuilder { compiler; constructor(compiler) { this.compiler = compiler; } raw = (...segments) => new QueryBuilder_1.QueryBuilder().raw(...segments); line = (...segments) => new QueryBuilder_1.QueryBuilder({ join: ' ' }).raw(...segments); group = (...segments) => new GroupExpression_1.GroupExpression(...segments); set = (segments) => new SetExpression_1.SetExpression(...segments); value = (value) => new PreparedValue_1.PreparedValue(value); values = (values) => { if (Array.isArray(values)) { return new SetExpression_1.SetExpression(...values.map((value) => new PreparedValue_1.PreparedValue(value))); } return new SetExpression_1.SetExpression(...Object.entries(values).map(([key, value]) => new QueryBuilder_1.QueryBuilder().raw(key, '=').value(value))); }; where = (...segments) => new WhereClause_1.WhereClause().and(...segments); condition = (...segments) => new ConditionClause_1.ConditionClause().and(...segments); limit = (limit) => new LimitClause_1.LimitClause({ limit }); offset = (offset) => new LimitClause_1.LimitClause({ offset }); select = (...params) => new SelectStatement_1.SelectStatement(...params); /** * Compile query to SQL string and bindings */ toSQL = (query) => { return this.compiler.toSQL(query); }; templateStringBuilder = new TemplateStringQueryBuilder_1.TemplateStringQueryBuilder(); sql = (strings, ...params) => this.templateStringBuilder.build(strings, ...params); } exports.ConfigurableSQLBuilder = ConfigurableSQLBuilder; //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNxbC9Db25maWd1cmFibGVTUUxCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHlEQUFzRDtBQUV0RCxrREFBK0M7QUFDL0MsOEVBQTJFO0FBRTNFLHVEQUFvRDtBQUNwRCx1REFBb0Q7QUFDcEQsK0NBQTRDO0FBQzVDLHVEQUE0RTtBQUM1RSxtREFBZ0Q7QUFDaEQsK0NBQTRDO0FBRTVDLE1BQWEsc0JBQXNCO0lBQ2pCLFFBQVEsQ0FBQztJQUMxQixZQUFZLFFBQXFCO1FBQ2hDLElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO0lBQzFCLENBQUM7SUFFTSxHQUFHLEdBQUcsQ0FBQyxHQUFHLFFBQTZCLEVBQUUsRUFBRSxDQUNqRCxJQUFJLDJCQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUM5QixJQUFJLEdBQUcsQ0FBQyxHQUFHLFFBQTZCLEVBQUUsRUFBRSxDQUNsRCxJQUFJLDJCQUFZLENBQUMsRUFBRSxJQUFJLEVBQUUsR0FBRyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsR0FBRyxRQUFRLENBQUMsQ0FBQztJQUMzQyxLQUFLLEdBQUcsQ0FBQyxHQUFHLFFBQTZCLEVBQUUsRUFBRSxDQUFDLElBQUksaUNBQWUsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQy9FLEdBQUcsR0FBRyxDQUFDLFFBQTZCLEVBQUUsRUFBRSxDQUFDLElBQUksNkJBQWEsQ0FBQyxHQUFHLFFBQVEsQ0FBQyxDQUFDO0lBQ3hFLEtBQUssR0FBRyxDQUFDLEtBQW9CLEVBQUUsRUFBRSxDQUFDLElBQUksNkJBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUMzRCxNQUFNLEdBQUcsQ0FBQyxNQUE0RCxFQUFFLEVBQUU7UUFDaEYsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxFQUFFO1lBQzFCLE9BQU8sSUFBSSw2QkFBYSxDQUFDLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSw2QkFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUM3RTtRQUVELE9BQU8sSUFBSSw2QkFBYSxDQUN2QixHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUM5QyxJQUFJLDJCQUFZLEVBQUUsQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FDN0MsQ0FDRCxDQUFDO0lBQ0gsQ0FBQyxDQUFDO0lBQ0ssS0FBSyxHQUFHLENBQUMsR0FBRyxRQUE2QixFQUFFLEVBQUUsQ0FDbkQsSUFBSSx5QkFBVyxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDN0IsU0FBUyxHQUFHLENBQUMsR0FBRyxRQUE2QixFQUFFLEVBQUUsQ0FDdkQsSUFBSSxpQ0FBZSxFQUFFLENBQUMsR0FBRyxDQUFDLEdBQUcsUUFBUSxDQUFDLENBQUM7SUFDakMsS0FBSyxHQUFHLENBQUMsS0FBYyxFQUFFLEVBQUUsQ0FBQyxJQUFJLHlCQUFXLENBQUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQ3ZELE1BQU0sR0FBRyxDQUFDLE1BQWUsRUFBRSxFQUFFLENBQUMsSUFBSSx5QkFBVyxDQUFDLEVBQUUsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUMxRCxNQUFNLEdBQUcsQ0FBQyxHQUFHLE1BQThCLEVBQUUsRUFBRSxDQUFDLElBQUksaUNBQWUsQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0lBRXRGOztPQUVHO0lBQ0ksS0FBSyxHQUFHLENBQUMsS0FBWSxFQUE4QyxFQUFFO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkMsQ0FBQyxDQUFDO0lBRWUscUJBQXFCLEdBQUcsSUFBSSx1REFBMEIsRUFBRSxDQUFDO0lBQ25FLEdBQUcsR0FBRyxDQUNaLE9BQTZCLEVBQzdCLEdBQUcsTUFBcUMsRUFDdkMsRUFBRSxDQUFDLElBQUksQ0FBQyxxQkFBcUIsQ0FBQyxLQUFLLENBQUMsT0FBTyxFQUFFLEdBQUcsTUFBTSxDQUFDLENBQUM7Q0FDMUQ7QUE1Q0Qsd0RBNENDIiwiZmlsZSI6InNxbC9Db25maWd1cmFibGVTUUxCdWlsZGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU1FMQ29tcGlsZXIgfSBmcm9tICcuLi9jb21waWxlcnMvU1FMQ29tcGlsZXInO1xuaW1wb3J0IHsgUHJlcGFyZWRWYWx1ZSB9IGZyb20gJy4uL2NvcmUvUHJlcGFyZWRWYWx1ZSc7XG5pbXBvcnQgeyBRdWVyeSB9IGZyb20gJy4uL2NvcmUvUXVlcnknO1xuaW1wb3J0IHsgUXVlcnlCdWlsZGVyIH0gZnJvbSAnLi4vUXVlcnlCdWlsZGVyJztcbmltcG9ydCB7IFRlbXBsYXRlU3RyaW5nUXVlcnlCdWlsZGVyIH0gZnJvbSAnLi4vVGVtcGxhdGVTdHJpbmdRdWVyeUJ1aWxkZXInO1xuaW1wb3J0IHsgUHJpbWl0aXZlVmFsdWUsIFF1ZXJ5QmluZGluZ3MsIFJhd1F1ZXJ5UGFyYW1ldGVyIH0gZnJvbSAnLi4vdHlwZXMnO1xuaW1wb3J0IHsgQ29uZGl0aW9uQ2xhdXNlIH0gZnJvbSAnLi9Db25kaXRpb25DbGF1c2UnO1xuaW1wb3J0IHsgR3JvdXBFeHByZXNzaW9uIH0gZnJvbSAnLi9Hcm91cEV4cHJlc3Npb24nO1xuaW1wb3J0IHsgTGltaXRDbGF1c2UgfSBmcm9tICcuL0xpbWl0Q2xhdXNlJztcbmltcG9ydCB7IFNlbGVjdFN0YXRlbWVudCwgU2VsZWN0U3RhdGVtZW50T3B0aW9ucyB9IGZyb20gJy4vU2VsZWN0U3RhdGVtZW50JztcbmltcG9ydCB7IFNldEV4cHJlc3Npb24gfSBmcm9tICcuL1NldEV4cHJlc3Npb24nO1xuaW1wb3J0IHsgV2hlcmVDbGF1c2UgfSBmcm9tICcuL1doZXJlQ2xhdXNlJztcblxuZXhwb3J0IGNsYXNzIENvbmZpZ3VyYWJsZVNRTEJ1aWxkZXIge1xuXHRwcml2YXRlIHJlYWRvbmx5IGNvbXBpbGVyO1xuXHRjb25zdHJ1Y3Rvcihjb21waWxlcjogU1FMQ29tcGlsZXIpIHtcblx0XHR0aGlzLmNvbXBpbGVyID0gY29tcGlsZXI7XG5cdH1cblxuXHRwdWJsaWMgcmF3ID0gKC4uLnNlZ21lbnRzOiBSYXdRdWVyeVBhcmFtZXRlcltdKSA9PlxuXHRcdG5ldyBRdWVyeUJ1aWxkZXIoKS5yYXcoLi4uc2VnbWVudHMpO1xuXHRwdWJsaWMgbGluZSA9ICguLi5zZWdtZW50czogUmF3UXVlcnlQYXJhbWV0ZXJbXSkgPT5cblx0XHRuZXcgUXVlcnlCdWlsZGVyKHsgam9pbjogJyAnIH0pLnJhdyguLi5zZWdtZW50cyk7XG5cdHB1YmxpYyBncm91cCA9ICguLi5zZWdtZW50czogUmF3UXVlcnlQYXJhbWV0ZXJbXSkgPT4gbmV3IEdyb3VwRXhwcmVzc2lvbiguLi5zZWdtZW50cyk7XG5cdHB1YmxpYyBzZXQgPSAoc2VnbWVudHM6IFJhd1F1ZXJ5UGFyYW1ldGVyW10pID0+IG5ldyBTZXRFeHByZXNzaW9uKC4uLnNlZ21lbnRzKTtcblx0cHVibGljIHZhbHVlID0gKHZhbHVlOiBRdWVyeUJpbmRpbmdzKSA9PiBuZXcgUHJlcGFyZWRWYWx1ZSh2YWx1ZSk7XG5cdHB1YmxpYyB2YWx1ZXMgPSAodmFsdWVzOiBBcnJheTxRdWVyeUJpbmRpbmdzPiB8IFJlY29yZDxzdHJpbmcsIFF1ZXJ5QmluZGluZ3M+KSA9PiB7XG5cdFx0aWYgKEFycmF5LmlzQXJyYXkodmFsdWVzKSkge1xuXHRcdFx0cmV0dXJuIG5ldyBTZXRFeHByZXNzaW9uKC4uLnZhbHVlcy5tYXAoKHZhbHVlKSA9PiBuZXcgUHJlcGFyZWRWYWx1ZSh2YWx1ZSkpKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gbmV3IFNldEV4cHJlc3Npb24oXG5cdFx0XHQuLi5PYmplY3QuZW50cmllcyh2YWx1ZXMpLm1hcCgoW2tleSwgdmFsdWVdKSA9PlxuXHRcdFx0XHRuZXcgUXVlcnlCdWlsZGVyKCkucmF3KGtleSwgJz0nKS52YWx1ZSh2YWx1ZSksXG5cdFx0XHQpLFxuXHRcdCk7XG5cdH07XG5cdHB1YmxpYyB3aGVyZSA9ICguLi5zZWdtZW50czogUmF3UXVlcnlQYXJhbWV0ZXJbXSkgPT5cblx0XHRuZXcgV2hlcmVDbGF1c2UoKS5hbmQoLi4uc2VnbWVudHMpO1xuXHRwdWJsaWMgY29uZGl0aW9uID0gKC4uLnNlZ21lbnRzOiBSYXdRdWVyeVBhcmFtZXRlcltdKSA9PlxuXHRcdG5ldyBDb25kaXRpb25DbGF1c2UoKS5hbmQoLi4uc2VnbWVudHMpO1xuXHRwdWJsaWMgbGltaXQgPSAobGltaXQ/OiBudW1iZXIpID0+IG5ldyBMaW1pdENsYXVzZSh7IGxpbWl0IH0pO1xuXHRwdWJsaWMgb2Zmc2V0ID0gKG9mZnNldD86IG51bWJlcikgPT4gbmV3IExpbWl0Q2xhdXNlKHsgb2Zmc2V0IH0pO1xuXHRwdWJsaWMgc2VsZWN0ID0gKC4uLnBhcmFtczogU2VsZWN0U3RhdGVtZW50T3B0aW9ucykgPT4gbmV3IFNlbGVjdFN0YXRlbWVudCguLi5wYXJhbXMpO1xuXG5cdC8qKlxuXHQgKiBDb21waWxlIHF1ZXJ5IHRvIFNRTCBzdHJpbmcgYW5kIGJpbmRpbmdzXG5cdCAqL1xuXHRwdWJsaWMgdG9TUUwgPSAocXVlcnk6IFF1ZXJ5KTogeyBzcWw6IHN0cmluZzsgYmluZGluZ3M6IFF1ZXJ5QmluZGluZ3NbXSB9ID0+IHtcblx0XHRyZXR1cm4gdGhpcy5jb21waWxlci50b1NRTChxdWVyeSk7XG5cdH07XG5cblx0cHJpdmF0ZSByZWFkb25seSB0ZW1wbGF0ZVN0cmluZ0J1aWxkZXIgPSBuZXcgVGVtcGxhdGVTdHJpbmdRdWVyeUJ1aWxkZXIoKTtcblx0cHVibGljIHNxbCA9IChcblx0XHRzdHJpbmdzOiBUZW1wbGF0ZVN0cmluZ3NBcnJheSxcblx0XHQuLi5wYXJhbXM6IEFycmF5PFByaW1pdGl2ZVZhbHVlIHwgUXVlcnk+XG5cdCkgPT4gdGhpcy50ZW1wbGF0ZVN0cmluZ0J1aWxkZXIuYnVpbGQoc3RyaW5ncywgLi4ucGFyYW1zKTtcbn1cbiJdfQ==