UNPKG

@funztic/db

Version:

TypeScript기반 파일 데이터베이스, zod를 지원합니다.

60 lines (59 loc) 2.25 kB
import { z } from 'zod'; import { Collection } from './file-db.js'; export declare function autoIncrement(start?: number): Generator<number, void, unknown>; export interface RepositoryOptions<T extends { id: string; }> { idGenerator: () => string; beforeCreate?: (entity: Partial<T> & { id?: string; }) => (Partial<T> & { id?: string; }) | Promise<Partial<T> & { id?: string; }>; beforeSave?: (entity: T) => T | Promise<T>; beforeUpdate?: (entity: T, updates: Partial<Omit<T, 'id'>>) => Partial<Omit<T, 'id'>> | Promise<Partial<Omit<T, 'id'>>>; afterSave?: (entity: T) => void | Promise<void>; } export declare class Repository<T extends { id: string; }> { protected collection: Collection<T>; protected options: RepositoryOptions<T>; protected schema: z.ZodSchema<T>; constructor(collection: Collection<T>, options: RepositoryOptions<T>); getSchema(): z.ZodSchema<T>; getType(): "string" | "number" | "bigint" | "boolean" | "symbol" | "undefined" | "object" | "function"; save(entityData: Partial<T> & { id?: string; }): Promise<T>; findById(id: string): Promise<T | null>; findAll(): Promise<T[]>; findBy(criteria: Partial<T>): Promise<T[]>; findOne(criteria: Partial<T>): Promise<T | null>; update(id: string, data: Partial<Omit<T, 'id'>>): Promise<T | null>; delete(id: string): Promise<boolean>; count(): Promise<number>; exists(id: string): Promise<boolean>; clear(): Promise<void>; query<R>(queryFn: (entities: T[]) => R): Promise<R>; paginate(page?: number, limit?: number): Promise<{ data: T[]; total: number; page: number; limit: number; totalPages: number; }>; createPaginator<K extends keyof T>(limit: number | undefined, sortBy: K, order?: 'asc' | 'desc'): AsyncGenerator<{ data: T[]; total: number; page: number; isLast: boolean; }>; findAllSorted<K extends keyof T>(sortBy: K, order?: 'asc' | 'desc'): Promise<T[]>; getRawCollection(): Collection<T>; } export declare function createRepository<T extends { id: string; }>(collection: Collection<T>, options?: RepositoryOptions<T>): Repository<T>;