UNPKG

typecql

Version:

ORM for CQL databases.

62 lines 2.23 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.WriteQueryFactory = void 0; const formatKeysWithSettings_1 = require("../misc/functions/formating/formatKeysWithSettings"); class WriteQueryFactory { constructor(tableName, settings) { this.tableName = tableName; this.settings = settings; } CreateKeys(input) { return `(${Object.keys(input) .map((item) => (0, formatKeysWithSettings_1.formatKeysWithSettings)({ key: item, forQuery: true, tableName: this.tableName, connSettings: this.settings, })) .join(', ')})`; } CreateValues(input) { return `(${new Array(Object.keys(input).length).fill('?').join(', ')})`; } CreateInsert(input, options) { const { timestamp, ttl, replace } = options; let query = ''; query += `INSERT INTO "${this.tableName}" `; query += `${this.CreateKeys(input)} VALUES `; query += `${this.CreateValues(input)}`; if (replace === false) { query += ' IF NOT EXISTS '; } if (typeof ttl !== 'undefined' || typeof timestamp !== 'undefined') { const usingValues = [ { value: ttl, text: ' TTL ' }, { value: timestamp, text: ' TIMESTAMP ' }, ]; let newQuery = ' USING '; usingValues.forEach((item, index) => { if (typeof item.value === 'undefined') return; if (index > 0) { newQuery += ` AND `; } newQuery += `${item.text} ${item.value}`; }); query += newQuery; } return query + ';'; } InsertQuery(insert, options = {}) { if (Array.isArray(insert)) { const queries = []; insert.forEach((input) => queries.push(this.CreateInsert(input, options))); return queries; } const query = this.CreateInsert(insert, options); // console.log(query); return query; } } exports.WriteQueryFactory = WriteQueryFactory; //# sourceMappingURL=write-query.factory.js.map