luowuyin's picture
25:05:05 10:41:39 v0.3.7
a572854
import { query } from "@/lib/db/client";
import { NextResponse } from "next/server";
import { verifyApiToken } from "@/lib/auth";
export async function GET(req: Request) {
const authError = verifyApiToken(req);
if (authError) {
return authError;
}
try {
const users = await query("SELECT * FROM users ORDER BY id");
const modelPrices = await query("SELECT * FROM model_prices ORDER BY id");
const records = await query("SELECT * FROM user_usage_records ORDER BY id");
const exportData = {
version: "1.0",
timestamp: new Date().toISOString(),
data: {
users: users.rows,
model_prices: modelPrices.rows,
user_usage_records: records.rows,
},
};
const headers = new Headers();
headers.set("Content-Type", "application/json");
headers.set(
"Content-Disposition",
`attachment; filename=openwebui_monitor_backup_${
new Date().toISOString().split("T")[0]
}.json`
);
return new Response(JSON.stringify(exportData, null, 2), {
headers,
});
} catch (error) {
console.error("Fail to export database:", error);
return NextResponse.json(
{ error: "Fail to export database" },
{ status: 500 }
);
}
}