UNPKG

nestjs-prisma-base

Version:

A comprehensive NestJS package providing base classes, utilities, and decorators for building CRUD APIs with Prisma ORM integration, featuring pagination, search, filtering, relation loading, configurable DTOs, and modular composition capabilities.

28 lines (27 loc) 1.76 kB
import { PrismaService } from '../prisma/prisma.service'; import { PaginationResult, PaginationConfig } from './pagination.interface'; import { BasicSearchOptions, AdvancedSearchOptions, SearchConfig, RelationConfig } from './search.interface'; export declare abstract class BaseService<T, CreateDto, UpdateDto> { protected readonly prisma: PrismaService; protected abstract readonly modelName: string; protected paginationConfig: PaginationConfig; protected searchConfig: SearchConfig; protected relationConfig: RelationConfig; constructor(prisma: PrismaService); protected validateLimit(limit: number): number; protected validatePage(page: number): number; protected validateSearchFields(searchFields: string[]): string[]; protected buildSearchConditions(options: BasicSearchOptions): any; protected buildOrderConditions(orderBy?: Record<string, 'asc' | 'desc'>): any; findAll(page?: number, limit?: number, options?: BasicSearchOptions): Promise<PaginationResult<T>>; findAllSimple(page?: number, limit?: number, options?: BasicSearchOptions): Promise<T[]>; protected convertId(id: string | number): string | number; findOne(id: string | number): Promise<T>; create(data: CreateDto): Promise<T>; update(id: string | number, data: UpdateDto): Promise<T>; remove(id: string | number): Promise<T>; protected processRelations(options: AdvancedSearchOptions): Record<string, boolean | any>; protected buildAdvancedQueryOptions(options: AdvancedSearchOptions): any; findAllAdvanced(page?: number, limit?: number, options?: AdvancedSearchOptions): Promise<PaginationResult<T>>; findAllAdvancedSimple(page?: number, limit?: number, options?: AdvancedSearchOptions): Promise<T[]>; }