UNPKG

@lambda-group/charydbis

Version:

๐Ÿš€ NodeJS ScyllaDB ORM. ๐Ÿงช๐Ÿ”ง

125 lines (114 loc) โ€ข 5.13 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); var _chunkHC6RU6YGjs = require('./chunk-HC6RU6YG.js'); var _chunkZIY2LTNAjs = require('./chunk-ZIY2LTNA.js'); var _chunkKI3NM7CIjs = require('./chunk-KI3NM7CI.js'); // src/repository/base.ts var _Repository = class _Repository { constructor(dataSource, modelClass) { _chunkKI3NM7CIjs.__publicField.call(void 0, this, "dataSource"); _chunkKI3NM7CIjs.__publicField.call(void 0, this, "tableName"); _chunkKI3NM7CIjs.__publicField.call(void 0, this, "columns"); _chunkKI3NM7CIjs.__publicField.call(void 0, this, "modelClass"); _chunkKI3NM7CIjs.__publicField.call(void 0, this, "logger", new (0, _chunkHC6RU6YGjs.Logger)(_Repository.name)); var _a; this.dataSource = dataSource; this.tableName = modelClass.prototype.tableName; this.columns = (_a = modelClass.columns) != null ? _a : []; this.modelClass = modelClass; } columnToValue(column, row) { switch (column.columnType) { case _chunkZIY2LTNAjs.ColumnType.TEXT: case _chunkZIY2LTNAjs.ColumnType.ASCII: return row[column.columnName]; case _chunkZIY2LTNAjs.ColumnType.FLOAT: return row[column.columnName]; case _chunkZIY2LTNAjs.ColumnType.TIMESTAMP: case _chunkZIY2LTNAjs.ColumnType.DATE: return new Date(row[column.columnName]); case _chunkZIY2LTNAjs.ColumnType.UUID: { if (typeof row[column.columnName] !== "string") throw new Error("UUID must be a string"); return row[column.columnName]; } default: return row[column.columnName]; } } findAll() { return _chunkKI3NM7CIjs.__async.call(void 0, this, null, function* () { const session = this.dataSource.getSession(); const columnNames = this.columns.map((col) => col.columnName).join(", "); const query = `SELECT ${columnNames} FROM ${this.tableName}`; this.logger.log(`Executing query: ${query}`); return (yield session.execute(query, [])).map((row) => { const model = new this.modelClass(); for (const col of this.columns) { model[col.key] = this.columnToValue(col, row); } return model; }); }); } findBy(query) { return _chunkKI3NM7CIjs.__async.call(void 0, this, null, function* () { const session = this.dataSource.getSession(); const columnNames = this.columns.map((col) => col.columnName).join(", "); const whereClause = Object.keys(query).filter((key) => key !== "allowFiltering").map((key) => { const column = this.columns.find((col) => col.key === key); if (!column) { this.logger.error(`Column ${key} not found`); throw new Error(`Column ${key} not found`); } return `${column.columnName} = ?`; }).join(" AND "); const values = Object.keys(query).filter((key) => key !== "allowFiltering").map((key) => query[key]); const allowFiltering = query.allowFiltering ? " ALLOW FILTERING" : ""; const queryStr = `SELECT ${columnNames} FROM ${this.tableName} WHERE ${whereClause} ${allowFiltering}`; this.logger.log(`Executing query: ${queryStr} with values: [${values}]`); return (yield session.execute(queryStr, values)).map((row) => { const model = new this.modelClass(); for (const col of this.columns) { model[col.key] = this.columnToValue(col, row); } return model; }); }); } findByPartitionKey(id) { return _chunkKI3NM7CIjs.__async.call(void 0, this, null, function* () { const session = this.dataSource.getSession(); const columnNames = this.columns.map((col) => col.columnName).join(", "); const partitionKey = this.columns.find((col) => col.partitionKey); if (!partitionKey) { this.logger.error("Primary key not found"); throw new Error("Primary key not found"); } const query = `SELECT ${columnNames} FROM ${this.tableName} WHERE ${partitionKey.columnName} = ?`; this.logger.log(`Executing query: ${query} with values: [${id}]`); return (yield session.execute(query, [ id ])).map((row) => { const model = new this.modelClass(); for (const col of this.columns) { model[col.key] = this.columnToValue(col, row); } return model; }); }); } save(model) { return _chunkKI3NM7CIjs.__async.call(void 0, this, null, function* () { const session = this.dataSource.getSession(); const columnNames = this.columns.map((col) => col.columnName).join(", "); const values = this.columns.map((col) => model[col.key]); const placeholders = this.columns.map(() => "?").join(", "); const query = `INSERT INTO ${this.tableName} (${columnNames}) VALUES (${placeholders})`; this.logger.log(`Executing query: ${query} with values: ${values}`); yield session.execute(query, values); }); } }; _chunkKI3NM7CIjs.__name.call(void 0, _Repository, "Repository"); var Repository = _Repository; exports.Repository = Repository; //# sourceMappingURL=chunk-T6N7BDB6.js.map