112 } catch (importError) {
113 console.error('SQLite import error:', importError);
114 return new Response('Database module unavailable', {
115 status: 500,
116 headers: { 'Content-Type': 'text/plain' }
131 } catch (tableCreateError) {
132 console.error('Table creation error:', tableCreateError);
133 return new Response('Database initialization failed', {
134 status: 500,
135 headers: { 'Content-Type': 'text/plain' }
294 }
295 } catch (error) {
296 console.error('Database initialization error:', error);
297 return new Response(JSON.stringify({
298 error: 'Database initialization failed',
299 details: error.message
300 }), {
1# SQLite - [Docs ↗](https://docs.val.town/std/sqlite)
2
3[SQLite](https://www.sqlite.org/) is a lightweight, standard database. Every Val Town account comes with its own private SQLite database that is accessible from any of your vals via [`std/sqlite`](https://www.val.town/v/std/sqlite).
4
5Val Town SQLite is powered by [Turso](https://turso.tech/).
9* [ORMs](https://docs.val.town/std/sqlite/orms)
10
11We recommend these admin data viewers for managing your database – viewing or editing data or your database table schema:
12
13* [Outerbase Studio](https://libsqlstudio.com/) **(recommended)** - formely known as LibSQL Studio – see instructions [here](https://libsqlstudio.com/docs/connect-valtown)
5/**
6 * Every Val Town account comes with its own private
7 * [SQLite database](https://www.sqlite.org/) that
8 * is accessible from any of your vals.
9 * ([Docs ↗](https://docs.val.town/std/sqlite))
403 const SCHEMA_VERSION = 4;
404
405 // Initialize database with additional fields
406 await sqlite.execute(`
407 CREATE TABLE IF NOT EXISTS ${KEY}_users_${SCHEMA_VERSION} (
30- [ ] add triggers to sidebar
31- [ ] add upload from SQL, CSV and JSON
32- [ ] add ability to connect to a non-val town Turso database
33- [x] fix wonky sidebar separator height problem (thanks to @stevekrouse)
34- [x] make result tables scrollable
236 console.error("Error creating tables:", createTableError);
237 return new Response(JSON.stringify({
238 error: 'Database initialization failed',
239 details: createTableError.toString()
240 }), {
1import { generateCode } from "./backend/generate-code";
2import { createTables } from "./database/migrations";
3import { createProject, getCode, getNextVersionNumber, insertVersion } from "./database/queries";
4
5async function servePublicFile(path: string): Promise<Response> {
1Downloads an export of all my bookmarks from Raindrop.io and syncs the URLs and created dates into an SQLite database. Runs every day.
2
3Used to power https://www.val.town/v/s3thi/stumbleDrop. Database schema is managed using https://www.val.town/v/s3thi/bookmarksDatabase.
3Powered by:
4
5- https://www.val.town/v/s3thi/bookmarksDatabase to define the schema for the SQLite database that holds a copy of my bookmarks
6- https://www.val.town/v/s3thi/syncBookmarks to sync bookmarks from Raindrop.io on a set interval