UNPKG

@goatlab/fluent

Version:

Readable query Interface & API generator for TS and Node

40 lines (39 loc) 1.86 kB
import { LoadedResult, QueryOutput } from './../types'; import { Repository, MongoRepository } from 'typeorm'; import { BaseConnector } from '../BaseConnector'; import { FluentConnectorInterface } from '../FluentConnectorInterface'; import type { AnyObject, FluentQuery } from '../types'; import { DataSource } from 'typeorm'; import { z } from 'zod'; export interface TypeOrmConnectorParams<Input, Output> { entity: any; dataSource: DataSource; inputSchema: z.ZodType<Input>; outputSchema?: z.ZodType<Output>; } export declare class TypeOrmConnector<ModelDTO = AnyObject, InputDTO = ModelDTO, OutputDTO = InputDTO> extends BaseConnector<ModelDTO, InputDTO, OutputDTO> implements FluentConnectorInterface<ModelDTO, InputDTO, OutputDTO> { private repository; private readonly dataSource; private readonly inputSchema; private readonly outputSchema; private readonly entity; constructor({ entity, dataSource, inputSchema, outputSchema }: TypeOrmConnectorParams<InputDTO, OutputDTO>); initDB(): number; insert(data: InputDTO): Promise<OutputDTO>; insertMany(data: InputDTO[]): Promise<OutputDTO[]>; findMany<T extends FluentQuery<ModelDTO>>(query?: T): Promise<QueryOutput<T, ModelDTO>[]>; updateById(id: string, data: InputDTO): Promise<OutputDTO>; replaceById(id: string, data: InputDTO): Promise<OutputDTO>; deleteById(id: string): Promise<string>; clear(): Promise<boolean>; loadFirst(query?: FluentQuery<ModelDTO>): LoadedResult<this>; loadById(id: string): LoadedResult<this>; raw(): Repository<ModelDTO>; mongoRaw(): MongoRepository<ModelDTO>; protected clone(): any; private generateTypeOrmQuery; private customTypeOrmRelatedFind; private getTypeOrmQueryBuilderSelect; private getTypeOrmQueryBuilderSubqueries; private customMongoRelatedFind; }