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