@symanticreative/vendure-admin-client
Version:
A TypeScript GraphQL client for Vendure Admin API to create custom dashboards
50 lines (49 loc) • 1.56 kB
TypeScript
import { FilterCriteria, PaginationOptions as PaginationOptionsModel, PaginatedResult as PaginatedResultModel } from '../../models/common/filter.model';
/**
* Re-export these types for use in repositories
*/
export type PaginationOptions = PaginationOptionsModel;
export type PaginatedResult<T> = PaginatedResultModel<T>;
/**
* Base repository interface defining common repository operations
* All repositories should implement this interface
*/
export interface IRepository<T, ID> {
/**
* Find entity by ID
* @param id - Entity identifier
*/
findById(id: ID): Promise<T>;
/**
* Find all entities with optional filtering
* @param filter - Optional filter criteria
*/
findAll(filter?: FilterCriteria): Promise<T[]>;
/**
* Create a new entity
* @param entity - Entity data to create
*/
create(entity: Partial<T>): Promise<T>;
/**
* Update an existing entity
* @param id - Entity identifier
* @param entity - Updated entity data
*/
update(id: ID, entity: Partial<T>): Promise<T>;
/**
* Delete an entity
* @param id - Entity identifier
*/
delete(id: ID): Promise<boolean>;
}
/**
* Base paginated repository interface
* Extends the base repository with pagination capabilities
*/
export interface IPaginatedRepository<T, ID> extends IRepository<T, ID> {
/**
* Find entities with pagination
* @param options - Pagination options
*/
findWithPagination(options: PaginationOptions): Promise<PaginatedResult<T>>;
}