Skip to content

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 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,
});
const db = yield* Turso.Database("Db", { group: group.name });

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.

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",
});

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.

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));