This commit is contained in:
parent
a4a99789a9
commit
650f381148
29 changed files with 599 additions and 349 deletions
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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." })),
|
||||
),
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue