UNPKG

@symanticreative/vendure-admin-client

Version:

A TypeScript GraphQL client for Vendure Admin API to create custom dashboards

59 lines (58 loc) 2.2 kB
import { FilterCriteria, PaginationOptions, PaginatedResult } from '../models/common/filter.model'; import { IRepository, IPaginatedRepository } from '../core/interfaces/repository.interface'; import { IService, IPaginatedService } from '../core/interfaces/service.interface'; /** * Base service implementation * Implements common service methods using a repository * Note: Abstract classes don't need @Injectable decorator */ export declare abstract class BaseService<T, ID> implements IService<T, ID> { protected repository: IRepository<T, ID>; constructor(repository: IRepository<T, ID>); /** * Get entity by ID * @param id - Entity identifier * @returns Promise resolving to entity */ getById(id: ID): Promise<T>; /** * Get all entities with optional filtering * @param filter - Optional filter criteria * @returns Promise resolving to array of entities */ getAll(filter?: FilterCriteria): Promise<T[]>; /** * Create a new entity * @param data - Entity data * @returns Promise resolving to created entity */ create(data: Partial<T>): Promise<T>; /** * Update an existing entity * @param id - Entity identifier * @param data - Updated entity data * @returns Promise resolving to updated entity */ update(id: ID, data: Partial<T>): Promise<T>; /** * Delete an entity * @param id - Entity identifier * @returns Promise resolving to boolean indicating success */ delete(id: ID): Promise<boolean>; } /** * Base paginated service implementation * Extends base service with pagination capabilities * Note: Abstract classes don't need @Injectable decorator */ export declare abstract class BasePaginatedService<T, ID> extends BaseService<T, ID> implements IPaginatedService<T, ID> { protected paginatedRepository: IPaginatedRepository<T, ID>; constructor(paginatedRepository: IPaginatedRepository<T, ID>); /** * Get entities with pagination * @param options - Pagination options * @returns Promise resolving to paginated result */ getPaginated(options: PaginationOptions): Promise<PaginatedResult<T>>; }