Turso.Group reference
Source:
src/Turso/Group.ts
A Turso group. Every Turso database belongs to one group, and the group decides where its databases run.
Group: Creating a Group
Section titled “Group: Creating a Group”Group in a single location
const group = yield* Turso.Group("Group", { location: "aws-us-east-1",});Protected group with all extensions enabled
const group = yield* Turso.Group("Group", { name: "production", location: "aws-eu-west-1", extensions: "all", deleteProtection: true,});Group: Adding databases
Section titled “Group: Adding databases”const db = yield* Turso.Database("Db", { group: group.name });GroupToken
Section titled “GroupToken”Source:
src/Turso/GroupToken.ts
A token that lets an app run SQL on every database in a Turso
Group, even databases created later. Useful when each customer
has their own database.
Like DatabaseToken, you can’t cancel a single group token. Changing
a prop creates a new token, but the old one keeps working until it expires.
GroupToken: Creating a Token
Section titled “GroupToken: Creating a Token”Full-access token for every database in a group
const token = yield* Turso.GroupToken("Token", { group: group.name,});Read-only token that expires after a week
const token = yield* Turso.GroupToken("ReadOnly", { group: group.name, authorization: "read-only", expiration: "7d",});ManageDatabases
Section titled “ManageDatabases”Source:
src/Turso/ManageDatabases.ts
Let a Worker create, list, delete, and query databases in one Turso
Group. Use it to give each customer their own database.
The Worker gets an ApiToken that only works on that group, and a
GroupToken for running SQL. It can’t touch databases in any other
group, and your own Turso API token stays on your machine.
ManageDatabases: Database per tenant
Section titled “ManageDatabases: Database per tenant”Effect.gen(function* () { const tenants = yield* Turso.ManageDatabases(Tenants); return { fetch: Effect.gen(function* () { const db = yield* tenants.create("acme"); const sql = yield* SQL.LibSQL(tenants.connect(db.name)); yield* sql`CREATE TABLE IF NOT EXISTS notes (body TEXT)`; return HttpServerResponse.text(db.url); }), };}).pipe(Effect.provide(Turso.ManageDatabasesHttp));