diff --git a/app/api/common.ts b/app/api/common.ts index 5e4711c0d..3c8b43fbb 100644 --- a/app/api/common.ts +++ b/app/api/common.ts @@ -5,6 +5,8 @@ import { collectModelTable } from "../utils/model"; import { makeAzurePath } from "../azure"; import { getIP } from "@/app/api/auth"; import { getSessionName } from "@/lib/auth"; +import prisma from "@/lib/prisma"; +import { getTokenLength } from "@/lib/utils"; const serverConfig = getServerSideConfig(); @@ -169,15 +171,42 @@ export async function requestLog( userName: name, userID: session?.user?.id, }; - - await fetch(`${baseUrl}/api/logs/openai`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(logData), - }); + saveLogs(logData); } catch (e) { console.log("[LOG]", e, "=========="); } } + +export async function saveLogs(logData: { + ip?: string; + path?: string; + logEntry?: string; + model?: string; + userName?: string; + userID?: string; + logToken?: number; +}) { + try { + if (logData?.logEntry) { + const regex_message = /(?<="content":")(.*?)(?="}[,\]])/g; + const matchAllMessage = logData.logEntry.match(regex_message); + // console.log(matchAllMessage, "====="); + if (matchAllMessage && matchAllMessage.length > 0) { + logData.logToken = + getTokenLength(matchAllMessage.join(" ")) + + matchAllMessage.length * 3; + } + delete logData?.logEntry; + } + if (logData?.model == "midjourney") { + logData.logToken = 1000; + } + } catch (e) { + console.log("[LOG]", "logToken", e); + logData.logToken = 0; + } + const result = await prisma.logEntry.create({ + data: logData, + }); + // console.log("result", result) +} diff --git a/app/api/logs/[...path]/route.ts b/app/api/logs/[[...path]]/route.ts similarity index 81% rename from app/api/logs/[...path]/route.ts rename to app/api/logs/[[...path]]/route.ts index ae6eaf654..900b6d680 100644 --- a/app/api/logs/[...path]/route.ts +++ b/app/api/logs/[[...path]]/route.ts @@ -9,14 +9,6 @@ async function handle( ) { try { const request_data = await req.json(); - // console.log("log", request_data); - // if (request_data?.userName) { - // await insertUser({ - // name: request_data?.userName, - // email: request_data?.userName, - // }); - // } - // console.log("===========4", request_data); try { if (request_data?.logEntry) { const regex_message = /(?<="content":")(.*?)(?="}[,\]])/g; @@ -47,12 +39,12 @@ async function handle( } catch (e) { console.log("[LOG]", e); - return NextResponse.json({ status: 0 }); + return NextResponse.json({ status: e?.toString() }, { status: 400 }); } return NextResponse.json({ status: 1 }); } -export const GET = handle; +// export const GET = handle; export const POST = handle; // export const runtime = "edge";