clickhouse-orm
Version:
Clickhouse orm for Nodejs
43 lines (42 loc) • 1.63 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const transformer_1 = require("./transformer");
const log_1 = require("./log");
const utils_1 = require("./utils");
class DataInstance {
constructor(model, initData) {
this.model = model;
this.proxyApply();
initData && utils_1.isObject(initData) && this.setInitData(initData);
}
setInitData(initData) {
Object.keys(initData).forEach((column) => {
if (this.checkColumnExist(column))
this[column] = initData[column];
});
}
checkColumnExist(column) {
if (this.model.schemaInstance.columns.indexOf(column) === -1) {
log_1.ErrorLog(`'${column}' is not a column of '${this.model.dbTableName}'. It should include ${this.model.schemaInstance.columns.join("、")}`);
return false;
}
return true;
}
proxyApply() {
const schemaInstance = this.model.schemaInstance;
schemaInstance.columns.forEach((column) => {
schemaInstance.proxyAttr(schemaInstance.schemaConfig, this, column);
});
}
save() {
const schemaInstance = this.model.schemaInstance;
const data = transformer_1.getPureData(schemaInstance, this);
const insertHeaders = transformer_1.insertSQL(this.model.dbTableName, schemaInstance);
if (this.model.debug)
log_1.DebugLog(`execute save> ${insertHeaders} ${JSON.stringify([data])}`);
return this.model.client
.insert(insertHeaders, [data])
.toPromise();
}
}
exports.default = DataInstance;