@goatlab/fluent
Version:
Readable query Interface & API generator for TS and Node
40 lines (39 loc) • 1.86 kB
TypeScript
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;
}