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
TypeScript
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;