@itrocks/mysql
Version:
Transforms model objects to and from MySQL database records
63 lines (62 loc) • 3.56 kB
TypeScript
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 {};