WIP. A little custom music server
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

feat: use pipe service for elysia endpoint

+9 -12
+9 -12
backend/src/api.ts
··· 1 - import { SqliteDrizzle } from "@effect/sql-drizzle/Sqlite"; 2 1 import { Console, Context, Data, Effect, Layer, ManagedRuntime } from "effect"; 3 2 import { Elysia, status, t } from "elysia"; 4 3 import { DatabaseLive } from "./db"; ··· 7 6 import { albumTable, artistTable, artistToAlbumTable, fileTable, songTable, songToArtistTable } from "./db/schema"; 8 7 import { eq } from "drizzle-orm"; 9 8 import { openapi } from "@elysiajs/openapi"; 10 - import { first } from "effect/GroupBy"; 11 9 import type { Album, AlbumWithArtist, Artist, Song } from "./db/types"; 12 10 import type { SqlError } from "@effect/sql"; 11 + import { pipe } from "effect"; 13 12 14 13 class FileNotFoundError extends Data.TaggedError("FileNotFoundError")<{ 15 14 message: string; ··· 131 130 .use(openapi()) 132 131 .get("/", "Hello Elysia") 133 132 .get("/albums", () => 134 - runtime.runPromise( 135 - Effect.gen(function* () { 136 - const api = yield* ApiService; 137 - return yield* api.getAlbumList(); 138 - }), 133 + pipe( 134 + ApiService, 135 + Effect.andThen((x) => x.getAlbumList()), 136 + runtime.runPromise, 139 137 ), 140 138 ) 141 139 .get("/album/:id", ({ params: { id } }) => 142 - runtime.runPromise( 143 - Effect.gen(function* () { 144 - const api = yield* ApiService; 145 - return yield* api.getAlbum(id); 146 - }), 140 + pipe( 141 + ApiService, 142 + Effect.andThen((x) => x.getAlbum(id)), 143 + runtime.runPromise, 147 144 ), 148 145 ) 149 146 .get(