This commit is contained in:
gcch 2025-02-20 09:05:21 +01:00
commit 98131c3b78
29 changed files with 2003 additions and 0 deletions

22
src/services/read-api.ts Normal file
View file

@ -0,0 +1,22 @@
import { DiaryEntries } from "@/db/schemas";
import { singleResultOrFail } from "@/libs/utils/effects";
import { desc } from "drizzle-orm";
import { Data, Effect } from "effect";
import { LocalSqlite } from "./db";
class ReadApiError extends Data.TaggedError("ReadApiError")<{ cause: unknown }> {}
export class ReadApi extends Effect.Service<ReadApi>()("ReadApi", {
dependencies: [LocalSqlite.Default],
effect: Effect.gen(function*() {
const { query } = yield* LocalSqlite;
return {
getLastAddedEntry: () =>
query(_ => _.select().from(DiaryEntries).limit(1).orderBy(desc(DiaryEntries.dateCreated))).pipe(
singleResultOrFail(() => new ReadApiError({ cause: "Aucune entrée n'a encore été ajoutée." })),
),
};
}),
}) {}