import { Pool } from 'mysql'; import { Table } from '../../mapping'; import { IOkResult } from '../../okResult'; import { Store } from '../../store'; import * as Types from '../../types'; import { IQuery } from '../iQuery'; export declare abstract class MysqlStore extends Store { protected db: Pool; constructor(db: Pool); protected readonly newQuery: IQuery; protected find(queryOrBuilder?: Types.QueryBuilder, dtoMapper?: (rows: any[]) => TDto[]): Promise; protected findOne(query: IQuery): Promise; protected findOne(query: Types.QueryBuilder): Promise; /** * Select a single field or expression and return its value * * @protected * @template TScalar * @param {string} expression A select expression. E.g. "COUNT(id)" * @param {TScalar} [defaultValue] The value to return if result is null or undefined * @returns {Promise} * @memberof MysqlStore */ protected compute(expression: string, defaultValue?: TScalar): Promise; /** * Select a single field or expression and return its value * * @protected * @template TScalar * @param {Types.QueryOrBuilder} queryOrBuilder A query or a query builder function. E.g. `t => t.id` * @param {TScalar} [defaultValue] The value to return if result is null or undefined * @returns {Promise} * @memberof MysqlStore */ protected compute(queryOrBuilder: Types.QueryOrBuilder, defaultValue?: TScalar): Promise; protected create(obj: TDto): Promise; protected update(data: { [key in keyof TTable]?: any; }, criteriaOrBuilder: Types.CriteriaOrBuilder, excludeFields?: (string & keyof TTable)[]): Promise; protected delete(criteriaOrBuilder: Types.CriteriaOrBuilder): Promise; protected runCommand(command: string): Promise; private isOkResult(res); private trx(commands); private runQuery(query); /** * Map many results returning an array * * @private * @param {any[]} rows * @returns {TDto[]} * @memberof MysqlStore */ private mapResults(rows); /** * Map a single result * * @private * @param {any[]} rows * @returns {TDto[]} * * @memberOf MysqlStore */ private mapResult(row); private unwrap(objOrBuilder, ...args); }