@symanticreative/vendure-admin-client
Version:
A TypeScript GraphQL client for Vendure Admin API to create custom dashboards
45 lines (44 loc) • 1.29 kB
TypeScript
import { FilterCriteria, PaginationOptions, PaginatedResult } from '../../models/common/filter.model';
/**
* Base service interface defining common service operations
* All services should implement this interface
*/
export interface IService<T, ID> {
/**
* Get entity by ID
* @param id - Entity identifier
*/
getById(id: ID): Promise<T>;
/**
* Get all entities with optional filtering
* @param filter - Optional filter criteria
*/
getAll(filter?: FilterCriteria): Promise<T[]>;
/**
* Create a new entity
* @param data - Entity data to create
*/
create(data: Partial<T>): Promise<T>;
/**
* Update an existing entity
* @param id - Entity identifier
* @param data - Updated entity data
*/
update(id: ID, data: Partial<T>): Promise<T>;
/**
* Delete an entity
* @param id - Entity identifier
*/
delete(id: ID): Promise<boolean>;
}
/**
* Base paginated service interface
* Extends the base service with pagination capabilities
*/
export interface IPaginatedService<T, ID> extends IService<T, ID> {
/**
* Get entities with pagination
* @param options - Pagination options
*/
getPaginated(options: PaginationOptions): Promise<PaginatedResult<T>>;
}