Turso.Database reference
Connect
Section titled “Connect”Source:
src/Turso/Connect.ts
Connect to a Turso database from a Worker, Lambda, or other host. The
host gets the database’s URL and its own DatabaseToken. Your
Turso API token stays on your machine.
Connect: Querying a Database
Section titled “Connect: Querying a Database”Effect SQL over a Turso database
Effect.gen(function* () { const conn = yield* Turso.Connect(Db); const sql = yield* SQL.LibSQL(conn); return { fetch: Effect.gen(function* () { return yield* HttpServerResponse.json(yield* sql`SELECT 1 AS value`); }), };}).pipe(Effect.provide(Turso.ConnectHttp));Drizzle over a Turso database
const conn = yield* Turso.Connect(Db);const db = yield* Drizzle.LibSQL(conn, { relations });AWS Lambda (install the native libSQL client)
export default class Api extends Lambda.Function<Api>()( "Api", { main: import.meta.url, build: { install: ["@libsql/client"] } }, Effect.gen(function* () { const sql = yield* SQL.LibSQL(yield* Turso.Connect(Db)); // ... }).pipe(Effect.provide(Turso.ConnectHttp)),) {}Read-only access
const conn = yield* Turso.Connect(Db, { authorization: "read-only" });Database
Section titled “Database”Source:
src/Turso/Database.ts
A Turso database: a SQLite database that lives in a Group.
Connect to it from a Worker or Lambda with Connect, or create a
DatabaseToken for other apps.
Database: Creating a Database
Section titled “Database: Creating a Database”Database in a group
const group = yield* Turso.Group("Group", { location: "aws-us-east-1" });const db = yield* Turso.Database("Db", { group: group.name });Database with delete protection and an IP allowlist
const db = yield* Turso.Database("Db", { group: group.name, deleteProtection: true, allowedIps: ["203.0.113.0/24"],});Database: Branching
Section titled “Database: Branching”const preview = yield* Turso.Database("Preview", { group: group.name, seed: { type: "database", name: db.name },});Database: Migrations
Section titled “Database: Migrations”Point migrations at a folder of .sql files (or a Drizzle.Schema).
Pending migrations are applied in order on each deploy.
Apply migrations from a directory
const db = yield* Turso.Database("Db", { group: group.name, migrations: "./migrations",});Seed with SQL files
const db = yield* Turso.Database("Db", { group: group.name, importFiles: ["./seed/users.sql"],});Database: Querying from a Worker
Section titled “Database: Querying from a Worker”const conn = yield* Turso.Connect(Db);const db = yield* Drizzle.LibSQL(conn);DatabaseToken
Section titled “DatabaseToken”Source:
src/Turso/DatabaseToken.ts
A token that lets an app run SQL on one Turso database. Workers and
Lambdas should use Connect, which creates one for you. Use
DatabaseToken for anything else, such as a container or a CI job.
You can’t cancel a single token. Changing a prop creates a new token, but
the old one keeps working until it expires. Destroying the resource doesn’t
stop it either. Give tokens you share an expiration, or cancel every token
for the database with turso db tokens invalidate.
DatabaseToken: Creating a Token
Section titled “DatabaseToken: Creating a Token”Full-access token
const token = yield* Turso.DatabaseToken("Token", { database: db.name,});Read-only token that expires after two weeks
const token = yield* Turso.DatabaseToken("ReadOnly", { database: db.name, authorization: "read-only", expiration: "2w",});