TodoRepository

This commit is contained in:
Julien Valverdé
2024-06-27 19:03:01 +02:00
parent bb185544c2
commit f0065e1527
2 changed files with 22 additions and 23 deletions

View File

@@ -1,5 +1,23 @@
import type { Todo } from "@todo-tests/common/data" import { Todo } from "@todo-tests/common/data"
import { Context, Ref } from "effect" import { Array, Context, Effect, Option, Ref } from "effect"
export class TodoRepository extends Context.Tag("TodoRepository")<TodoRepository, Ref.Ref<Todo[]>>() {} export class TodoRepository extends Context.Tag("TodoRepository")<TodoRepository, Ref.Ref<Todo[]>>() {}
export const createDefaultTodos = TodoRepository.pipe(
Effect.flatMap(repo =>
Ref.update(repo, todos =>
Array.appendAll(todos, [
new Todo({
id: "1",
title: "A test todo",
content: "Lorem ipsum",
due: Option.none(),
createdAt: new Date(),
updatedAt: new Date(),
})
])
)
)
)

View File

@@ -1,25 +1,6 @@
import { BunRuntime } from "@effect/platform-bun" import { BunRuntime } from "@effect/platform-bun"
import { Todo } from "@todo-tests/common/data" import { Array, Effect, Ref } from "effect"
import { Array, Effect, Option, Ref } from "effect" import { TodoRepository, createDefaultTodos } from "./TodoRepository"
import { TodoRepository } from "./TodoRepository"
const createDefaultTodos = TodoRepository.pipe(
Effect.flatMap(repo =>
Ref.update(repo, todos =>
Array.appendAll(todos, [
new Todo({
id: "1",
title: "A test todo",
content: "Lorem ipsum",
due: Option.none(),
createdAt: new Date(),
updatedAt: new Date(),
})
])
)
)
)
const main = Effect.gen(function*() { const main = Effect.gen(function*() {