@symanticreative/vendure-admin-client
Version:
A TypeScript GraphQL client for Vendure Admin API to create custom dashboards
59 lines (58 loc) • 2.2 kB
TypeScript
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>>;
}