UNPKG

@citrineos/base

Version:

The base module for OCPP v2.0.1 including all interfaces. This module is not intended to be used directly, but rather as a dependency for other modules.

54 lines (53 loc) 2.84 kB
import { EventEmitter } from 'events'; export interface CrudEvent<T> { created: [T[]]; updated: [T[]]; deleted: [T[]]; } /** * Represents a generic CRUD repository. * * @template T - The type of the values stored in the repository. */ export declare abstract class CrudRepository<T> extends EventEmitter { constructor(); /** * Creates a new entry in the database with the specified value. */ create(tenantId: number, value: T, namespace?: string): Promise<T>; /** * Attempts to read a value from storage based on the given query, or throws if more than one value is found. */ readOnlyOneByQuery(tenantId: number, query: object, namespace?: string): Promise<T | undefined>; /** * Reads a value from storage or creates it if none exists. */ readOrCreateByQuery(tenantId: number, query: object, namespace?: string): Promise<[T, boolean]>; /** * Updates the value associated with the given key. */ updateByKey(tenantId: number, value: Partial<T>, key: string, namespace?: string): Promise<T | undefined>; /** * Updates all values matching the given query. */ updateAllByQuery(tenantId: number, value: Partial<T>, query: object, namespace?: string): Promise<T[]>; /** * Deletes the entry with the given key. */ deleteByKey(tenantId: number, key: string, namespace?: string): Promise<T | undefined>; /** * Deletes all values associated with a query from the specified namespace. */ deleteAllByQuery(tenantId: number, query: object, namespace?: string): Promise<T[]>; abstract readByKey(tenantId: number, key: string | number, namespace?: string): Promise<T | undefined>; abstract readAllByQuery(tenantId: number, query: object, namespace?: string): Promise<T[]>; abstract readNextValue(tenantId: number, columnName: string, query?: object, startValue?: number, namespace?: string): Promise<number>; abstract existsByKey(tenantId: number, key: string, namespace?: string): Promise<boolean>; abstract existByQuery(tenantId: number, query: object, namespace?: string): Promise<number>; protected abstract _create(tenantId: number, value: T, namespace?: string): Promise<T>; protected abstract _readOrCreateByQuery(tenantId: number, query: object, namespace?: string): Promise<[T, boolean]>; protected abstract _updateByKey(tenantId: number, value: Partial<T>, key: string, namespace?: string): Promise<T | undefined>; protected abstract _updateAllByQuery(tenantId: number, value: Partial<T>, query: object, namespace?: string): Promise<T[]>; protected abstract _deleteByKey(tenantId: number, key: string, namespace?: string): Promise<T | undefined>; protected abstract _deleteAllByQuery(tenantId: number, query: object, namespace?: string): Promise<T[]>; }