diff --git a/createDatabase.ts b/createDatabase.ts index 0eb3cfd..3f5d2bc 100644 --- a/createDatabase.ts +++ b/createDatabase.ts @@ -32,7 +32,21 @@ CREATE TABLE IF NOT EXISTS chat_history ( created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP )`; -const createSources = await sql``; +const createUserOtherData = await sql` + create table if not exists user_other_data ( + user_id text primary key , + user text not null unique, + groq_api_key text, + starred_news JSON not null, + translate_provider text, + translate_enabled boolean, + remove_translate_popup boolean + )`; + +/*const createSources = await sql` + create table if not exists source ( + ) + `;*/ console.log("Creation Complete"); diff --git a/server/api/ai/loadCustomGroqApi.ts b/server/api/ai/loadCustomGroqApi.ts deleted file mode 100644 index 6bd37f6..0000000 --- a/server/api/ai/loadCustomGroqApi.ts +++ /dev/null @@ -1,30 +0,0 @@ -import sql from "~/server/components/postgres"; -export default defineEventHandler(async (event) => { - if (event.method !== "POST") { - return { - error: "ERR_METHOD_NOT_ALLOWED", - }; - } - const body = readBody(event); - if (!body.apiKey) { - return { - error: "ERR_API_KEY_REQUIRED", - }; - } - const readUserToken = getCookie(event, "token"); - if (!readUserToken) { - return { - error: "ERR_NOT_USER_LOGIN", - }; - } - const verifyUserToken = await sql` - SELECT * FROM usertokens - where token=${readUserToken} - `; - if (verifyUserToken.length === 0) { - return { - error: "ERR_NOT_USER_LOGIN", - requested_action: "LOGOUT_USER", - }; - } -}); diff --git a/server/api/ai/summarize/[slug].ts b/server/api/ai/summarize/[slug].ts index 365bfe9..8f372a6 100644 --- a/server/api/ai/summarize/[slug].ts +++ b/server/api/ai/summarize/[slug].ts @@ -1,19 +1,32 @@ import { Groq } from "groq-sdk"; import sql from "~/server/components/postgres"; +import { checkIfUserHasCustomGroqKey } from "~/server/components/customgroqsystem"; -const groq = new Groq(); +const groq = new Groq({ + apiKey: process.env.GROQ_API_KEY, +}); export default defineEventHandler(async (event) => { const host = getRequestHost(event); const protocol = getRequestProtocol(event); const slug = getRouterParam(event, "slug"); + const userToken = getCookie(event, "token") || ""; + const doesTheUserHasACustomGroqApiAndWhatIsIt = + await checkIfUserHasCustomGroqKey(userToken); + let groqClient = groq; + if (doesTheUserHasACustomGroqApiAndWhatIsIt.status === true) { + groqClient = new Groq({ + apiKey: doesTheUserHasACustomGroqApiAndWhatIsIt.customApi, + }); + } + const query = getQuery(event); const locale = query.locale; const buildURL = protocol + "://" + host + "/api/news/get/lt/" + slug; const data = await fetch(buildURL); const fetchNewsArticle = await data.json(); console.log(locale); - const chatCompletion = await groq.chat.completions.create({ + const chatCompletion = await groqClient.chat.completions.create({ messages: [ { role: "user", diff --git a/server/api/user/sendUserInfo.ts b/server/api/user/sendUserInfo.ts new file mode 100644 index 0000000..5f9e934 --- /dev/null +++ b/server/api/user/sendUserInfo.ts @@ -0,0 +1 @@ +export default defineEventHandler(async (event) => {}); diff --git a/server/components/customgroqsystem.ts b/server/components/customgroqsystem.ts new file mode 100644 index 0000000..5d4c85c --- /dev/null +++ b/server/components/customgroqsystem.ts @@ -0,0 +1,33 @@ +import sql from "./postgres"; + +export async function checkIfUserHasCustomGroqKey(token?: string) { + if (!token) { + return { + status: false, + customApi: "", + }; + } + const checkRealToken = await sql` + select * from usertokens + where tokens=${token} + `; + if (checkRealToken.length === 0) { + return { + status: false, + customApi: "", + }; + } + const fetchUserToken = await sql` + select groq_api_key from user_other_data + where user=${checkRealToken[0].username}`; + if (fetchUserToken.length === 0) { + return { + status: false, + customApi: "", + }; + } + return { + status: true, + customAPi: fetchUserToken[0].groq_api_key, + }; +}