Last active
September 3, 2025 17:03
-
-
Save leo/caa3494fb6d7bac8e31c73418a21101d to your computer and use it in GitHub Desktop.
Running the RONIN client with a local database
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| import { Database } from "bun:sqlite"; | |
| import ronin from 'ronin'; | |
| import { Transaction, type Model } from 'blade-compiler'; | |
| import * as rawModels from './schema'; | |
| const database = new Database('db.sqlite'); | |
| const models = Object.values(rawModels) as unknown as Array<Model>; | |
| const { get } = ronin({ | |
| fetch: (async (request: Request): Promise<Response> => { | |
| const { queries } = (await request.json()) as { queries: Array<object> }; | |
| const transaction = new Transaction(queries, { models }); | |
| const databaseTransaction = database.transaction(() => { | |
| return transaction.statements.map(({ statement, params }) => { | |
| return database.prepare(statement).all(...(params as Array<string>)) | |
| }); | |
| }); | |
| const results = databaseTransaction() as Array<Array<Record<string, unknown>>>; | |
| return Response.json({ | |
| results: transaction.formatResults(results), | |
| }); | |
| }) as typeof fetch, | |
| token: 'empty' | |
| }); | |
| await get.users(); |
Comments are disabled for this gist.