Files
screenclipper/apps/api-daemon/src/server.ts
T
ayrisdevandClaude Sonnet 5 ad419f38b0 debug: yt-dlp live-check hatalarını /status'ta görünür kıl
yt-dlp hem "kanal canlı değil" hem de gerçek bir hata (ağ engeli,
bot tespiti, extractor kırılması) durumunda non-zero exit code
veriyor; ikisi ayırt edilemiyordu. Son hata mesajı artık kanal
başına saklanıp GET /status içinde lastPollError alanında dönüyor.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-30 15:54:51 +03:00

39 lines
989 B
TypeScript

import express from "express";
import { prisma } from "@streamclipper/db";
import { env } from "./env";
import { lastPollErrors } from "./youtubePolling";
export function startServer() {
const app = express();
app.get("/health", (_req, res) => res.json({ ok: true }));
app.get("/status", async (_req, res) => {
const channels = await prisma.channel.findMany({
include: {
sessions: {
where: { endedAt: null },
orderBy: { startedAt: "desc" },
take: 1,
},
},
});
res.json({
channels: channels.map((c) => ({
id: c.id,
name: c.name,
isActive: c.isActive,
lastCheckedAt: c.lastCheckedAt,
recording: c.sessions.length > 0,
activeSessionId: c.sessions[0]?.id ?? null,
lastPollError: lastPollErrors.get(c.channelId) ?? null,
})),
});
});
app.listen(env.port, () => {
console.log(`[server] api-daemon listening on :${env.port}`);
});
}