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 { 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)
|
||||||
|
|||||||
Reference in New Issue
Block a user