import { emitDataWithError, emitDataWithTimeout } from '../core/events'; import { Provider } from "../providers/provider"; import uuid from "../core/uuid"; const uuidGenerator = new uuid(); export class NimkatDB { private socket: any; private permissions: string[] = []; constructor() { this.socket = Provider.CurrentConnection; } create(type: string, value: any) { let id = uuidGenerator.uuid(); if (value['id']) { id = value['id']; } return emitDataWithTimeout(this.socket, { key: "nimkat_store_create", response_key: "nimkat_store_created_" + id, value: { id, value, type }, }); } update(type: string, value: object, id: string) { return emitDataWithTimeout(this.socket, { key: "nimkat_store_update", response_key: "nimkat_store_updated_" + id, value: { id, value, type }, }); } async find(type: string, id?: string) { // find one object by type :) if (!id) { const document: any = await this.findAll(type); if (document.length > 0) { return document[0] } else { return {} } } return emitDataWithTimeout(this.socket, { key: "nimkat_store_find", response_key: "nimkat_store_finded_" + id, value: { id, type }, }); } findByQuery(type: string, query: any) { const query_id = uuidGenerator.uuid(); return emitDataWithTimeout(this.socket, { key: "nimkat_store_find_query", response_key: "nimkat_store_find_query_DONE_" + query_id, value: { query_id, type, query }, }); } findAll(type: string) { return emitDataWithTimeout(this.socket, { key: "nimkat_store_findall", response_key: "nimkat_store_findall_" + type, value: { type }, }); } delete(type: string, id: string) { return emitDataWithTimeout(this.socket, { key: "nimkat_store_delete", response_key: "nimkat_store_deleted_" + id, value: { id, type }, }); } changePermissionAccess(action: string, type: string, uid: string) { return emitDataWithTimeout(this.socket, { key: "nimkat_permission_change_" + uid, response_key: "nimkat_permission_changed_" + uid, value: { uid, type, action }, }); } hasPermission(action: string) { const result = this.permissions.find((item) => { return item == action }) if (result) { return true; } else { return false; } } async loadPermission() { const data: any = await emitDataWithTimeout(this.socket, { key: "nimkat_permission_get", response_key: "nimkat_permission_got", value: { }, }); this.permissions = data; } }