TodoRepository
This commit is contained in:
@@ -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(),
|
||||||
|
})
|
||||||
|
])
|
||||||
|
)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|||||||
@@ -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*() {
|
||||||
|
|||||||
Reference in New Issue
Block a user