vulcain-corejs
Version:
Vulcain micro-service framework
109 lines (108 loc) • 2.46 kB
TypeScript
import { Schema } from "../schemas/schema";
export interface ListOptions {
/**
* Max
*
* @type {number}
* @memberOf ListOptions
*/
maxByPage?: number;
/**
* Page to returns
*
* @type {number}
* @memberOf ListOptions
*/
page?: number;
/**
* [Output property] Number of items founded
*
* @type {number}
* @memberOf ListOptions
*/
length?: number;
query?: any;
}
/**
* Persistance provider for a schema
*/
export interface IProvider<T> {
/**
* address of the database
*
* @type {string}
* @memberOf IProvider
*/
address: string;
/**
* Initialize the provider with a tenant and a schema.
*
* @param {string} tenant - The tenant to use
* @param {Schema} schema - The schema to persist
* @returns {Promise<<()=>void>} Dispose function
*
* @memberOf IProvider
*/
initializeWithSchemaAsync(tenant: string, schema: Schema): Promise<() => Promise<any>>;
/**
* Find an entity
*
* @param {Schema} schema
* @param {any} query
* @returns {Promise<T>}
*
* @memberOf IProvider
*/
findOneAsync(schema: Schema, query: any): Promise<T>;
/**
* Get a entity list
*
* @param {Schema} schema
* @param {ListOptions} options
* @returns {Promise<Array<T>>}
*
* @memberOf IProvider
*/
getAllAsync(schema: Schema, options: ListOptions): Promise<Array<T>>;
/**
* Get an entity by id
*
* @param {Schema} schema
* @param {string} id
* @returns {Promise<T>}
*
* @memberOf IProvider
*/
getAsync(schema: Schema, id: string): Promise<T>;
/**
* Create an entity
*
* @param {Schema} schema
* @param {T} entity
* @returns {Promise<T>}
*
* @memberOf IProvider
*/
createAsync(schema: Schema, entity: T): Promise<T>;
/**
* Update an entity
*
* @param {Schema} schema
* @param {T} entity
* @param {T} [old]
* @returns {Promise<T>}
*
* @memberOf IProvider
*/
updateAsync(schema: Schema, entity: T, old?: T): Promise<T>;
/**
* Delete an entity
*
* @param {Schema} schema
* @param {(string|T)} old
* @returns {Promise<boolean>}
*
* @memberOf IProvider
*/
deleteAsync(schema: Schema, old: string | T): Promise<boolean>;
}