TodoRepository

This commit is contained in:
Julien Valverdé
2024-06-27 17:20:01 +02:00
parent 57f9d8075f
commit 3cd3f0752a
3 changed files with 11 additions and 11 deletions

View File

@@ -0,0 +1,5 @@
import type { Todo } from "@todo-tests/common/data"
import { Context, Ref } from "effect"
export class TodoRepository extends Context.Tag("TodoRepository")<TodoRepository, Ref.Ref<Todo[]>>() {}

View File

@@ -1,5 +0,0 @@
import type { Todo } from "@todo-tests/common/data"
import { Context, Ref } from "effect"
export class Todos extends Context.Tag("Todos")<Todos, Ref.Ref<Todo[]>>() {}

View File

@@ -1,12 +1,12 @@
import { BunRuntime } from "@effect/platform-bun"
import { Todo } from "@todo-tests/common/data"
import { Array, Effect, Option, Ref } from "effect"
import { Todos } from "./Todos"
import { TodoRepository } from "./TodoRepository"
const createDefaultTodos = Todos.pipe(
Effect.flatMap(ref =>
Ref.update(ref, todos =>
const createDefaultTodos = TodoRepository.pipe(
Effect.flatMap(repo =>
Ref.update(repo, todos =>
Array.appendAll(todos, [
new Todo({
id: "1",
@@ -25,12 +25,12 @@ const createDefaultTodos = Todos.pipe(
const main = Effect.gen(function*() {
yield* createDefaultTodos
const todos = yield* Todos
const todos = yield* TodoRepository
console.log(yield* Ref.get(todos))
})
const runnableMain = main.pipe(
Effect.provideServiceEffect(Todos, Ref.make(Array.empty()))
Effect.provideServiceEffect(TodoRepository, Ref.make(Array.empty()))
)
BunRuntime.runMain(runnableMain)