@loopback/repository
Version:
Define and implement a common set of interfaces for interacting with databases
131 lines (130 loc) • 5.54 kB
TypeScript
import { Filter, Where } from '@loopback/filter';
import { Class, Count, Options } from '../common-types';
import { Entity, EntityData } from '../model';
import { Connector } from './connector';
/**
* CRUD operations for connector implementations
*/
export interface CrudConnector extends Connector {
/**
* Create a new entity
* @param modelClass - The model class
* @param entity - The entity instance or data
* @param options - Options for the operation
* @returns A promise of the entity created
*/
create(modelClass: Class<Entity>, entity: EntityData, options?: Options): Promise<EntityData>;
/**
* Create multiple entities
* @param modelClass - The model class
* @param entities - An array of entity instances or data
* @param options - Options for the operation
* @returns A promise of an array of entities created
*/
createAll?(modelClass: Class<Entity>, entities: EntityData[], options?: Options): Promise<EntityData[]>;
/**
* Save an entity
* @param modelClass - The model class
* @param entity - The entity instance or data
* @param options - Options for the operation
* @returns A promise of the entity saved
*/
save?(modelClass: Class<Entity>, entity: EntityData, options?: Options): Promise<EntityData>;
/**
* Find matching entities by the filter
* @param modelClass - The model class
* @param filter - The query filter
* @param options - Options for the operation
* @returns A promise of an array of entities found for the filter
*/
find(modelClass: Class<Entity>, filter?: Filter, options?: Options): Promise<EntityData[]>;
/**
* Find an entity by id
* @param modelClass - The model class
* @param id - The entity id value
* @param options - Options for the operation
* @returns A promise of the entity found for the id
*/
findById?<IdType>(modelClass: Class<Entity>, id: IdType, options?: Options): Promise<EntityData>;
/**
* Update an entity
* @param modelClass - The model class
* @param entity - The entity instance or data
* @param options - Options for the operation
* @returns Promise<true> if an entity is updated, otherwise
* Promise<false>
*/
update?(modelClass: Class<Entity>, entity: EntityData, options?: Options): Promise<boolean>;
/**
* Delete an entity
* @param modelClass - The model class
* @param entity - The entity instance or data
* @param options - Options for the operation
* @returns Promise<true> if an entity is deleted, otherwise
* Promise<false>
*/
delete?(modelClass: Class<Entity>, entity: EntityData, options?: Options): Promise<boolean>;
/**
* Update matching entities
* @param modelClass - The model class
* @param data - The data attributes to be updated
* @param where - The matching criteria
* @param options - Options for the operation
* @returns A promise of number of matching entities deleted
*/
updateAll(modelClass: Class<Entity>, data: EntityData, where?: Where<Entity>, options?: Options): Promise<Count>;
/**
* Update an entity by id
* @param modelClass - The model class
* @param id - The entity id value
* @param data - The data attributes to be updated
* @param options - Options for the operation
* @returns Promise<true> if an entity is updated for the id, otherwise
* Promise<false>
*/
updateById?<IdType>(modelClass: Class<Entity>, id: IdType, data: EntityData, options?: Options): Promise<boolean>;
/**
* Replace an entity by id
* @param modelClass - The model class
* @param id - The entity id value
* @param data - The data attributes to be updated
* @param options - Options for the operation
* @returns Promise<true> if an entity is replaced for the id, otherwise
* Promise<false>
*/
replaceById?<IdType>(modelClass: Class<Entity>, id: IdType, data: EntityData, options?: Options): Promise<boolean>;
/**
* Delete matching entities
* @param modelClass - The model class
* @param where - The matching criteria
* @param options - Options for the operation
* @returns A promise of number of matching entities deleted
*/
deleteAll(modelClass: Class<Entity>, where?: Where<Entity>, options?: Options): Promise<Count>;
/**
* Delete an entity by id
* @param modelClass - The model class
* @param id - The entity id value
* @param options - Options for the operation
* @returns Promise<true> if an entity is deleted for the id, otherwise
* Promise<false>
*/
deleteById?<IdType>(modelClass: Class<Entity>, id: IdType, options?: Options): Promise<boolean>;
/**
* Count matching entities
* @param modelClass - The model class
* @param where - The matching criteria
* @param options - Options for the operation
* @returns A promise of number of matching entities
*/
count(modelClass: Class<Entity>, where?: Where<Entity>, options?: Options): Promise<Count>;
/**
* Check if an entity exists for the id
* @param modelClass - The model class
* @param id - The entity id value
* @param options - Options for the operation
* @returns Promise<true> if an entity exists for the id, otherwise
* Promise<false>
*/
exists?<IdType>(modelClass: Class<Entity>, id: IdType, options?: Options): Promise<boolean>;
}