cogsbox-shape
Version:
A TypeScript library for creating type-safe database schemas with Zod validation, SQL type definitions, and automatic client/server transformations. Unifies client, server, and database types through a single schema definition, with built-in support for r
37 lines (36 loc) • 1.49 kB
TypeScript
import { Kysely } from "kysely";
import type { Compilable, DatabaseIntrospector, Dialect, DialectAdapter, Driver, QueryCompiler } from "kysely";
export interface D1Result<T = Record<string, unknown>> {
success: boolean;
error?: string;
results?: T[];
meta?: {
changes?: number;
last_row_id?: number;
rows_written?: number;
};
}
export interface D1PreparedStatement {
bind(...values: unknown[]): D1PreparedStatement;
all<T = Record<string, unknown>>(): Promise<D1Result<T>>;
run<T = Record<string, unknown>>(): Promise<D1Result<T>>;
}
export interface D1Database {
prepare(query: string): D1PreparedStatement;
batch<T = Record<string, unknown>>(statements: D1PreparedStatement[]): Promise<D1Result<T>[]>;
}
export type D1BatchQuery = Compilable<any>;
export type D1Kysely<TDb> = Kysely<TDb> & {
/** Execute compiled Kysely queries as one atomic Cloudflare D1 batch. */
batch(queries: readonly D1BatchQuery[]): Promise<D1Result[]>;
};
export declare class D1Dialect implements Dialect {
#private;
constructor(database: D1Database);
createDriver(): Driver;
createQueryCompiler(): QueryCompiler;
createAdapter(): DialectAdapter;
createIntrospector(db: Kysely<any>): DatabaseIntrospector;
}
export declare function createD1Db<TDb = unknown>(database: D1Database): D1Kysely<TDb>;
export declare function executeD1Batch(database: D1Database, queries: readonly D1BatchQuery[]): Promise<D1Result[]>;