diff --git a/packages/server/src/TodoRepository.ts b/packages/server/src/TodoRepository.ts index 8c4d216..2f65e25 100644 --- a/packages/server/src/TodoRepository.ts +++ b/packages/server/src/TodoRepository.ts @@ -1,5 +1,5 @@ import { Todo } from "@todo-tests/common/data" -import { Array, Context, Data, Effect, Equal, Layer, Option, Ref, SubscriptionRef } from "effect" +import { Array, Context, Data, Effect, Equal, Layer, Option, Order, Ref, SubscriptionRef } from "effect" import crypto from "node:crypto" @@ -44,7 +44,7 @@ export class TodoRepositoryService { yield* Ref.update(this.todos, Array.append(new Todo({ ...todo, id: Option.some(id), - }) as Todo & { id: Option.Some })) + }, { disableValidation: true }) as Todo & { id: Option.Some })) return id }) @@ -80,6 +80,15 @@ export class TodoRepositoryService { } +const sortTodos = Array.sortBy<(Todo & { id: Option.Some })[]>( + Order.mapInput(Order.number, todo => todo.order) +) + +const updateTodoOrders = Array.map< + (Todo & { id: Option.Some })[], + (Todo & { id: Option.Some })[] +>() + export class TodoHasID extends Data.TaggedError("TodoHasID")<{ todo: Todo }> {} export class TodoHasNoID extends Data.TaggedError("TodoHasNoID")<{ todo: Todo }> {}