1import * as Cloudflare from "alchemy/Cloudflare";
2import * as Drizzle from "alchemy/Drizzle/Cloudflare";
3import * as Effect from "effect/Effect";
4import { relations, users } from "./schema.ts";
5
6export default class Users extends Cloudflare.DurableObject<Users>()(
7 "Users",
8 Effect.gen(function* () {
9 const migrations = yield* Cloudflare.SqlMigrations("./drizzle");
10
11 return Effect.gen(function* () {
12 const db = yield* Drizzle.DurableObject({ migrations, relations });
13
14 return {
15 addUser: (name: string) =>
16 db.insert(users).values({ name }).returning(),
17 listUsers: () => db.select().from(users).orderBy(users.id),
18 };
19 });
20 }),
21) {}