UNPKG

@itrocks/mysql

Version:

Transforms model objects to and from MySQL database records

63 lines (62 loc) 3.56 kB
import { AnyObject } from '@itrocks/class-type'; import { KeyOf } from '@itrocks/class-type'; import { ObjectOrType } from '@itrocks/class-type'; import { Type } from '@itrocks/class-type'; import { DataSource } from '@itrocks/storage'; import { Entity } from '@itrocks/storage'; import { MayEntity } from '@itrocks/storage'; import { Identifier } from '@itrocks/storage'; import { SearchType } from '@itrocks/storage'; import { Connection } from 'mariadb'; export declare const DEBUG = false; interface Dependencies<QF extends object = object> { applyReadTransformer: <T extends object>(record: AnyObject, property: KeyOf<T>, object: T) => any; applySaveTransformer: <T extends object>(object: T, property: KeyOf<T>, record: AnyObject) => any; columnOf: (property: string) => string; componentOf: <T extends object>(target: T, property: KeyOf<T>) => boolean; ignoreTransformedValue: any; QueryFunction: Type<QF>; queryFunctionCall: (value: QF) => [any, string]; storeOf: <T extends object>(target: ObjectOrType<T>) => string | false; } export declare function joinTableName(object1: string | ObjectOrType, object2: string | ObjectOrType): string; export declare function mysqlDependsOn<QF extends object = object>(dependencies: Partial<Dependencies<QF>>): void; export declare class Mysql extends DataSource { config: { host: string; user: string; password: string; database: string; }; connection?: Connection; constructor(config: { host: string; user: string; password: string; database: string; }); connect(): Promise<Connection>; delete<T extends object>(object: Entity<T>, property?: KeyOf<Entity<T>>): Promise<T>; deleteId<T extends object>(type: ObjectOrType<T>, id: any, property?: KeyOf<Entity<T>>): Promise<void>; deleteRelatedId<T extends Entity>(object: T, property: KeyOf<T>, id: Identifier): Promise<void>; insert<T extends object>(object: T): Promise<Entity<T>>; insertRelatedId<T extends Entity>(object: T, property: KeyOf<T>, id: Identifier): Promise<void>; propertiesToSearchSql(search: AnyObject): string; propertiesToSql(object: object): string; propertiesToSqlSelect<T extends object>(type: Type<T>): string; read<T extends object>(type: Type<T>, id: Identifier): Promise<Entity<T>>; readCollection<T extends object, PT extends object>(object: Entity<T>, property: KeyOf<T>, type?: Type<PT>): Promise<Awaited<PT & { id: Identifier; }>[]>; readCollectionIds<T extends object, PT extends object>(object: Entity<T>, property: KeyOf<T>, type?: Type<PT>): Promise<Identifier[]>; readMultiple<T extends object>(type: Type<T>, ids: Identifier[]): Promise<Entity<T>[]>; save<T extends object>(object: MayEntity<T>): Promise<Entity<T>>; saveCollection<T extends object>(object: Entity<T>, property: KeyOf<T>, value: (Identifier | MayEntity)[]): Promise<void>; saveComponents<T extends object>(object: Entity<T>, property: KeyOf<T>, components: (Identifier | MayEntity)[]): Promise<void>; saveLinks<T extends object>(object: Entity<T>, property: KeyOf<T>, links: (Identifier | MayEntity)[]): Promise<void>; search<T extends object>(type: Type<T>, search?: SearchType<T>): Promise<Entity<T>[]>; update<T extends object>(object: Entity<T>): Promise<Entity<T>>; valuesFromDb<T extends object>(record: Entity<T>, type: Type<T>): Promise<Entity<T>>; valuesToDb<T extends object>(object: T): Promise<[AnyObject, Function[]]>; } export {};