2025-02-28
Some checks failed
ci/woodpecker/push/publish_instable Pipeline failed

This commit is contained in:
gcch 2025-02-28 12:23:46 +01:00
commit 650f381148
29 changed files with 599 additions and 349 deletions

View file

@ -1,6 +1,6 @@
import type { SQLocalDrizzle } from "sqlocal/drizzle";
import v0000 from "@/db/drizzle/0000_perfect_justice.sql?raw";
import v0000 from "@/db/drizzle/0000_open_the_twelve.sql?raw";
import { Data, Effect } from "effect";
import { LocalSqlite } from "./db";

View file

@ -1,6 +1,6 @@
import { DiaryEntries } from "@/db/schemas";
import { ArtWorks, DiaryEntries } from "@/db/schemas";
import { singleResultOrFail } from "@/libs/utils/effects";
import { desc } from "drizzle-orm";
import { desc, eq } from "drizzle-orm";
import { Data, Effect } from "effect";
import { LocalSqlite } from "./db";
@ -14,10 +14,37 @@ export class ReadApi extends Effect.Service<ReadApi>()("ReadApi", {
yield* Effect.logDebug("--- READ-API ---");
// TODO: Implémenter ReadApiError pour des requêtes avec zéro retour.
return {
getAllEntries: () => query(_ => _.select().from(DiaryEntries)),
getArtworkByTmdbId: (tmdbId: number) =>
query(_ =>
_.select()
.from(ArtWorks)
.where(eq(ArtWorks.tmdbId, tmdbId))
.limit(1)
).pipe(
singleResultOrFail(() => new ReadApiError({ cause: "Aucune oeuvre ne dispose de cet ID TMDB." })),
),
getEntryByTmdbId: (tmdbId: number) =>
query(_ =>
_.select()
.from(DiaryEntries)
.leftJoin(ArtWorks, eq(ArtWorks.tmdbId, DiaryEntries.artWorkId))
.where(eq(ArtWorks.tmdbId, tmdbId))
.limit(1)
).pipe(
singleResultOrFail(() => new ReadApiError({ cause: "Aucune entrée n'est liée à cet ID TMDB." })),
Effect.andThen(result => result.diary_entries),
),
getLastAddedEntry: () =>
query(_ => _.select().from(DiaryEntries).limit(1).orderBy(desc(DiaryEntries.dateCreated))).pipe(
query(_ =>
_.select()
.from(DiaryEntries)
.limit(1)
.orderBy(desc(DiaryEntries.dateCreated))
).pipe(
singleResultOrFail(() => new ReadApiError({ cause: "Aucune entrée n'a encore été ajoutée." })),
),
};