WIP. A little custom music server
0
fork

Configure Feed

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

finilize containerisation

+14 -1
+2
backend/Dockerfile
··· 28 28 FROM base AS release 29 29 COPY --from=install /temp/prod/node_modules node_modules 30 30 COPY --from=prerelease /app/backend/dist . 31 + # Copy migration files (SQL schemas) 32 + COPY --from=prerelease /app/backend/drizzle ./drizzle 31 33 32 34 # Create directories for volumes with proper ownership 33 35 RUN mkdir -p /app/data /app/music && \
+1 -1
backend/src/db/index.ts
··· 11 11 12 12 //const DrizzleLive = SqliteDrizzle.layer.pipe(Layer.provide(SqlLive)); 13 13 14 - const SqliteLive = SqliteClient.layerConfig({ 14 + export const SqliteLive = SqliteClient.layerConfig({ 15 15 filename: Config.string("DB_URL"), 16 16 }); 17 17
+11
backend/src/index.ts
··· 1 1 import { BunContext, BunRuntime } from "@effect/platform-bun"; 2 2 import { Config, Cron, Effect, Either, Layer, Option, Schedule } from "effect"; 3 + import { drizzle } from "drizzle-orm/bun-sqlite"; 4 + import { migrate } from "drizzle-orm/bun-sqlite/migrator"; 5 + import { Database } from "bun:sqlite"; 3 6 import { DatabaseLive } from "./db"; 4 7 import { syncLibraryStream } from "./sync-library"; 5 8 import { OtelLive } from "./utils/otel"; ··· 17 20 const syncSchedule = Schedule.cron(syncCron); 18 21 19 22 const main = Effect.gen(function* () { 23 + // Run migrations first 24 + yield* Effect.log("Running database migrations..."); 25 + const dbUrl = yield* Config.string("DB_URL"); 26 + const db = drizzle(new Database(dbUrl)); 27 + yield* Effect.try(() => migrate(db, { migrationsFolder: "./drizzle" })); 28 + yield* Effect.log("Migrations completed successfully"); 29 + 30 + // Then start the application 20 31 const folderPath = yield* Config.string("FOLDER_PATH"); 21 32 22 33 startApi();