UNPKG

@joktec/arango

Version:
55 lines 2.64 kB
"use strict"; var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; Object.defineProperty(exports, "__esModule", { value: true }); exports.ArangoService = void 0; const core_1 = require("@joktec/core"); const arangojs_1 = require("arangojs"); const lodash_1 = require("lodash"); const arango_config_1 = require("./arango.config"); let ArangoService = class ArangoService extends core_1.AbstractClientService { constructor() { super('arango', arango_config_1.ArangoConfig); } async init(config) { return new arangojs_1.Database(config); } async start(client, conId = core_1.DEFAULT_CON_ID) { } async stop(client, conId = core_1.DEFAULT_CON_ID) { client.close(); await client.shutdown(); } getCollection(col, conId = core_1.DEFAULT_CON_ID) { return this.getClient(conId).collection(col); } getUpsertKey(doc, upsertFields) { return doc?._key ? doc._key : (0, lodash_1.values)((0, lodash_1.pick)(doc, upsertFields)).join('_'); } async bulkUpsert(col, data, opts = { onDuplicate: 'update' }, conId = core_1.DEFAULT_CON_ID) { const { docs, upsertFields } = data; if (upsertFields?.length) { docs?.map(doc => ({ ...doc, _key: this.getUpsertKey(doc, upsertFields) })); } const result = await this.getCollection(col, conId).import(docs, opts); this.logService.debug(result, 'import to `%s` collection success with data:\n %j', col, docs); } async query(q, opts, conId = core_1.DEFAULT_CON_ID) { const result = await this.getClient(conId).query(q, opts); this.logService.debug(result, 'query success with aql:\n %j', q); return result; } }; exports.ArangoService = ArangoService; exports.ArangoService = ArangoService = __decorate([ (0, core_1.Injectable)(), __metadata("design:paramtypes", []) ], ArangoService); //# sourceMappingURL=arango.service.js.map