sqliteTableExportUtils
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.
This allows for a val.town-hosted SQLite table to be exported as:
- JSON (Record<string, unknown>[])
- Arrow IPC (Uint8Array)
- TODO: Others?
This can then be used by a HTTP endpoint, like so:
import { exportSQLiteTable, SQLiteTableExportFormat } from "https://esm.town/v/rlesser/sqliteTableExportUtils";
export default async function(req: Request): Promise<Response> {
  const tableName = new URL(req.url).searchParams.get("table");
  if (!tableName) {
    return new Response("Table name is required", { status: 400 });
  }
  const format = (new URL(req.url).searchParams.get("format") || "arrowIPC") as SQLiteTableExportFormat;
  const data = await exportSQLiteTable(tableName, format);
  if (data instanceof Uint8Array) {
    return new Response(data, {
      headers: { "Content-Type": "application/octet-stream" },
    });
  } else {
    return Response.json(data);
  }
}
- Specify limit and offset of export, for pagination
- Smart assessment of if the export is going to be over the val.town limit of 10MB, adjust to paginated of so.
- Support other export formats.
PRs welcome!
Migrated from folder: Archive/sqliteTableExportUtils
