@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
TypeScript
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[]>;
}