refine-sql
Version:
Multi-runtime SQL data provider for Refine - Supports Cloudflare D1, Node.js 22.5+ native SQLite, and Bun 1.2+ native SQLite with zero bundle overhead
60 lines (56 loc) • 2 kB
text/typescript
import { GetListParams, BaseRecord, GetManyParams, CreateParams, UpdateParams, GetOneParams, DeleteOneParams, CreateManyParams, UpdateManyParams, DeleteManyParams, CustomParams } from '@refinedev/core';
interface D1Database {
prepare(query: string): D1PreparedStatement;
batch<T = unknown>(statements: D1PreparedStatement[]): Promise<D1Result<T>[]>;
}
interface D1PreparedStatement {
bind(...values: unknown[]): D1PreparedStatement;
first<T = unknown>(colName?: string): Promise<T | null>;
run(): Promise<D1Result>;
all<T = unknown>(): Promise<D1Result<T>>;
}
interface D1Result<T = Record<string, unknown>> {
results?: T[];
meta: {
changes: number;
last_row_id: number;
};
}
declare const dataProvider: (dbInput: D1Database | string) => {
getList: ({ resource, pagination, filters, sorters }: GetListParams) => Promise<{
data: BaseRecord[];
total: number;
}>;
getMany: ({ resource, ids }: GetManyParams) => Promise<{
data: BaseRecord[];
}>;
create: ({ resource, variables }: CreateParams) => Promise<{
data: BaseRecord;
}>;
update: ({ resource, id, variables }: UpdateParams) => Promise<{
data: BaseRecord;
}>;
getOne: ({ resource, id }: GetOneParams) => Promise<{
data: BaseRecord;
}>;
deleteOne: ({ resource, id }: DeleteOneParams) => Promise<{
data: any;
}>;
createMany: ({ resource, variables }: CreateManyParams) => Promise<{
data: BaseRecord[];
}>;
updateMany: ({ resource, ids, variables }: UpdateManyParams) => Promise<{
data: BaseRecord[];
}>;
deleteMany: ({ resource, ids }: DeleteManyParams) => Promise<{
data: BaseRecord[];
}>;
getApiUrl: () => string;
custom: ({ url, method, payload }: CustomParams) => Promise<{
data: any[] | {
changes: number;
lastInsertRowid?: number;
};
}>;
};
export { type D1Database, dataProvider };