@berish/orm-web-file-adapter
Version:
Адаптер файловой базы данных по сети для @berish/orm
76 lines • 3.18 kB
JavaScript
"use strict";
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WebDBReceiver = void 0;
const orm_1 = require("@berish/orm");
class WebDBReceiver {
constructor(manager, params) {
this._manager = null;
this._params = null;
this._manager = manager;
this._params = params;
}
get manager() {
return this._manager;
}
get params() {
return this._params || {};
}
call(name, ...args) {
return __awaiter(this, void 0, void 0, function* () {
if (orm_1.baseDBMethods.indexOf(name) === -1)
throw new Error('orm db method not found');
if (name === 'get') {
const [query] = args;
const queryWithBy = yield this.withBy(query);
return this.manager.db.get(queryWithBy);
}
if (name === 'create') {
const [table, items] = args;
return this.manager.db.create(table, items);
}
if (name === 'update') {
const [table, items] = args;
return this.manager.db.update(table, items);
}
if (name === 'delete') {
const [queryData] = args;
const queryWithBy = yield this.withBy(queryData);
return this.manager.db.delete(queryWithBy);
}
if (name === 'index') {
const [table, indexName, keys] = args;
return this.manager.db.index(table, indexName, keys);
}
if (name === 'find') {
const [queryData] = args;
const queryWithBy = yield this.withBy(queryData);
return this.manager.db.find(queryWithBy);
}
if (name === 'subscribe') {
const [queryData, cb] = args;
const queryWithBy = yield this.withBy(queryData);
return this.manager.db.subscribe(queryWithBy, cb);
}
});
}
withBy(queryData) {
return __awaiter(this, void 0, void 0, function* () {
if (!queryData)
throw new Error('FP-ORM: queryData is undefined');
const query = orm_1.Query.fromJSON(queryData);
const withByQuery = (yield (this.params.by && this.params.by(query))) || query;
return withByQuery.json;
});
}
}
exports.WebDBReceiver = WebDBReceiver;
//# sourceMappingURL=webDBReceiver.js.map