@loopback/repository
Version:
Define and implement a common set of interfaces for interacting with databases
209 lines (193 loc) • 5.79 kB
text/typescript
// Copyright IBM Corp. and LoopBack contributors 2018,2020. All Rights Reserved.
// Node module: @loopback/repository
// This file is licensed under the MIT License.
// License text available at https://opensource.org/licenses/MIT
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>;
}