SPB Git forge

spb/immbot-ai

Public
1commits 1branches 0releases
1.5 MBsize
maindefault branch
20 days agolast push
TypeScript 98.3% CSS 0.9% Shell 0.7%
1.3 KB · 34 lines typescript
Raw Blame History
1import { NextResponse } from "next/server";2import { apiError } from "@/lib/api.ts";3import { assertSameOrigin, requireRole } from "@/lib/auth/session.ts";4import { all } from "@/lib/db/index.ts";5import { ingestCourses } from "@/lib/rag/ingest.ts";67export const maxDuration = 600;89export async function GET() {10  try {11    await requireRole("instructor");12    const runs = all("SELECT id, started_at, finished_at, triggered_by, files_scanned, files_ingested, files_skipped, chunks_created, status, report FROM ingestion_runs ORDER BY id DESC LIMIT 10");13    const documents = all(14      `SELECT id, course_code, space, filename, doc_type, title, week, status, error, visible_to_students, ingested_at, chunk_count15       FROM documents ORDER BY course_code, space, week, filename`16    );17    return NextResponse.json({ runs, documents });18  } catch (e) {19    return apiError(e);20  }21}2223export async function POST(req: Request) {24  try {25    await assertSameOrigin();26    const user = await requireRole("instructor");27    const force = new URL(req.url).searchParams.get("force") === "1";28    const result = await ingestCourses({ force, triggeredBy: `admin:${user.username}` });29    return NextResponse.json({ ok: true, ...result });30  } catch (e) {31    return apiError(e);32  }33}34