typecql
Version:
ORM for CQL databases.
62 lines • 2.23 kB
JavaScript
;
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