TodoRepository
This commit is contained in:
5
packages/server/src/TodoRepository.ts
Normal file
5
packages/server/src/TodoRepository.ts
Normal 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[]>>() {}
|
||||
@@ -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[]>>() {}
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user