UNPKG

bknd

Version:

Lightweight Firebase/Supabase alternative built to run anywhere — incl. Next.js, React Router, Astro, Cloudflare, Bun, Node, AWS Lambda & more.

50 lines (49 loc) 2.58 kB
import { type DB as DefaultDB, type PrimaryFieldType } from "../../core"; import { type EmitsEvents, EventManager } from "../../core/events"; import type { DeleteQueryBuilder, InsertQueryBuilder, UpdateQueryBuilder } from "kysely"; import { type TActionContext } from ".."; import type { Entity, EntityData, EntityManager } from "../entities"; import { MutatorEvents } from "../events"; import type { RepoQuery } from "../server/query"; type MutatorQB = InsertQueryBuilder<any, any, any> | UpdateQueryBuilder<any, any, any, any> | DeleteQueryBuilder<any, any, any>; export type MutatorResponse<T = EntityData[]> = { entity: Entity; sql: string; parameters: any[]; result: EntityData[]; data: T; }; export declare class Mutator<TBD extends object = DefaultDB, TB extends keyof TBD = any, Output = TBD[TB], Input = Omit<Output, "id">> implements EmitsEvents { em: EntityManager<TBD>; entity: Entity; protected options?: { emgr?: EventManager<any>; } | undefined; static readonly Events: { MutatorInsertBefore: typeof import("../events").MutatorInsertBefore; MutatorInsertAfter: typeof import("../events").MutatorInsertAfter; MutatorUpdateBefore: typeof import("../events").MutatorUpdateBefore; MutatorUpdateAfter: typeof import("../events").MutatorUpdateAfter; MutatorDeleteBefore: typeof import("../events").MutatorDeleteBefore; MutatorDeleteAfter: typeof import("../events").MutatorDeleteAfter; }; emgr: EventManager<typeof MutatorEvents>; __unstable_disable_system_entity_creation: boolean; __unstable_toggleSystemEntityCreation(value: boolean): void; constructor(em: EntityManager<TBD>, entity: Entity, options?: { emgr?: EventManager<any>; } | undefined); private get conn(); getValidatedData<Given = any>(data: Given, context: TActionContext): Promise<Given>; protected many(qb: MutatorQB): Promise<MutatorResponse>; protected single(qb: MutatorQB): Promise<MutatorResponse<EntityData>>; insertOne(data: Input): Promise<MutatorResponse<Output>>; updateOne(id: PrimaryFieldType, data: Partial<Input>): Promise<MutatorResponse<Output>>; deleteOne(id: PrimaryFieldType): Promise<MutatorResponse<Output>>; private getValidOptions; private appendWhere; deleteWhere(where: RepoQuery["where"]): Promise<MutatorResponse<Output[]>>; updateWhere(data: Partial<Input>, where: RepoQuery["where"]): Promise<MutatorResponse<Output[]>>; insertMany(data: Input[]): Promise<MutatorResponse<Output[]>>; } export {};