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