UNPKG

tspace-mysql

Version:

Tspace MySQL is a promise-based ORM for Node.js, designed with modern TypeScript and providing type safety for schema databases.

129 lines (128 loc) 6.13 kB
import { StateHandler } from '../Handlers/State'; import { TUtils } from '../../utils'; import { Join } from '../Join'; import type { TPagination, TConstant } from '../../types'; declare abstract class AbstractBuilder { protected $setters: string[]; protected $utils: TUtils; protected $constants: (name?: keyof TConstant) => any; protected $state: StateHandler; protected $pool: { query: Function; set: Function; get: Function; }; protected $logger: { get: Function; set: (value: string) => void; reset: () => void; check: (value: string) => boolean; }; protected $attributes: Record<string, any> | null; abstract void(): this; abstract debug(): this; abstract dd(): this; abstract select(...columns: string[]): this; abstract distinct(...columns: string[]): this; abstract whereNull(column: string): this; abstract whereNotNull(column: string): this; abstract where(column: string, operator: string, value: string): this; abstract whereSensitive(column: string, operator: string, value: string): this; abstract whereRaw(sql: string): this; abstract whereId(id: number): this; abstract whereUser(id: number): this; abstract whereEmail(value: string): this; abstract whereQuery(callback: Function): this; abstract whereJSON(column: string, { key, value, operator }: { key: string; value: string; operator: string; }): this; abstract orWhere(column: string, operator: string, value: string): this; abstract whereIn(column: string, arrayValues: any[]): this; abstract orWhereIn(column: string, arrayValues: any[]): this; abstract whereNotIn(column: string, arrayValues: any[]): this; abstract whereSubQuery(column: string, subQuery: string): this; abstract whereNotSubQuery(column: string, subQuery: string): this; abstract orWhereSubQuery(column: string, subQuery: string): this; abstract whereBetween(column: string, arrayValue: any[]): this; abstract whereNotBetween(column: string, arrayValue: any[]): this; abstract having(condition: string): this; abstract havingRaw(condition: string): this; abstract join(pk: string | ((join: Join) => Join), fk?: string): this; abstract rightJoin(pk: string | ((join: Join) => Join), fk?: string): this; abstract leftJoin(pk: string | ((join: Join) => Join), fk?: string): this; abstract crossJoin(pk: string | ((join: Join) => Join), fk?: string): this; abstract joinSubQuery({ localKey, foreignKey, sql }: { localKey: string; foreignKey: string; sql: string; }): this; abstract orderBy(column: string, order: 'ASC' | 'asc' | 'DESC' | 'desc'): this; abstract orderByRaw(column: string, order: 'ASC' | 'asc' | 'DESC' | 'desc'): this; abstract latest(...columns: string[]): this; abstract latestRaw(...columns: string[]): this; abstract oldest(...columns: string[]): this; abstract oldestRaw(...columns: string[]): this; abstract groupBy(...columns: string[]): this; abstract groupByRaw(...columns: string[]): this; abstract random(): this; abstract inRandom(): this; abstract limit(number: number): this; abstract hidden(...columns: string[]): this; abstract insert(data: Record<string, any>): this; abstract create(data: Record<string, any>): this; abstract update(data: Record<string, any>, updateNotExists?: string[]): this; abstract updateMany(data: Record<string, any>, updateNotExists?: string[]): this; abstract insertNotExists(data: Record<string, any>): this; abstract createNotExists(data: Record<string, any>): this; abstract insertOrUpdate(data: Record<string, any>): this; abstract createOrUpdate(data: Record<string, any>): this; abstract updateOrInsert(data: Record<string, any>): this; abstract updateOrCreate(data: Record<string, any>): this; abstract createMultiple(data: Record<string, any>[]): this; abstract insertMultiple(data: Record<string, any>[]): this; abstract except(...columns: string[]): this; abstract only(...columns: string[]): this; abstract drop(): Promise<any>; abstract truncate({ force }: { force: boolean; }): Promise<any>; abstract all(): Promise<any[]>; abstract find(id: number): Promise<any>; abstract pagination({ limit, page }: { limit: number; page: number; }): Promise<TPagination>; abstract paginate({ limit, page }: { limit: number; page: number; }): Promise<TPagination>; abstract first(): Promise<Record<string, any> | null>; abstract firstOrError(message: string, options?: Record<string, any>): Promise<Record<string, any>>; abstract findOneOrError(message: string, options?: Record<string, any>): Promise<Record<string, any>>; abstract get(): Promise<any[]>; abstract findOne(): Promise<Record<string, any> | null>; abstract findMany(): Promise<any[]>; abstract getGroupBy(column: string): Promise<Map<string | number, any[]>>; abstract findGroupBy(column: string): Promise<Map<string | number, any[]>>; abstract toArray(column: string): Promise<any[]>; abstract toJSON(): Promise<string>; abstract toSQL(): string; abstract toString(): string; abstract count(column: string): Promise<number>; abstract sum(column: string): Promise<number>; abstract avg(column: string): Promise<number>; abstract max(column: string): Promise<number>; abstract min(column: string): Promise<number>; abstract rawQuery(sql: string): Promise<any[]>; abstract delete(): Promise<boolean>; abstract deleteMany(): Promise<boolean>; abstract exists(): Promise<boolean>; abstract save(): Promise<Record<string, any> | any[] | null | undefined>; abstract increment(column: string, value: number): Promise<number>; abstract decrement(column: string, value: number): Promise<number>; abstract faker(round: number, cb?: Function): Promise<void>; } export { AbstractBuilder }; export default AbstractBuilder;