From 3a85eda19aa66116df3e5bbb89bb14caf055b868 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B3=E5=85=83=E7=9A=93?= Date: Sat, 7 Jun 2025 09:21:37 +0800 Subject: [PATCH] Update createDatabase scripts & get sendUserInfo endpoint & when creating an account it will also create a array in user_other_data. --- createDatabase.ts | 16 ++-- server/api/create_database.ts | 74 ++++++++++++------- .../api/user/{sendUserInfo.ts => delete.ts} | 0 server/api/user/login.ts | 7 +- server/api/user/sendUserInfo.post.ts | 20 +++++ 5 files changed, 84 insertions(+), 33 deletions(-) rename server/api/user/{sendUserInfo.ts => delete.ts} (100%) create mode 100644 server/api/user/sendUserInfo.post.ts diff --git a/createDatabase.ts b/createDatabase.ts index 3f5d2bc..57e1fa4 100644 --- a/createDatabase.ts +++ b/createDatabase.ts @@ -39,16 +39,22 @@ const createUserOtherData = await sql` groq_api_key text, starred_news JSON not null, translate_provider text, - translate_enabled boolean, - remove_translate_popup boolean + translate_enabled boolean not null, + remove_translate_popup boolean not null )`; -/*const createSources = await sql` - create table if not exists source ( +const createSources = await sql` + create table if not exists lt_news_org ( + news_id text primary key, + name text not null, + description text ) - `;*/ + `; console.log("Creation Complete"); +console.log( + "If the script still does not quit after 2 seconds after the 'Creation Complete' message, please stop it by using Ctrl + C or on mac Control + C", +); await sql.end(); process.exit(0); diff --git a/server/api/create_database.ts b/server/api/create_database.ts index d873cd2..25f326d 100644 --- a/server/api/create_database.ts +++ b/server/api/create_database.ts @@ -1,41 +1,61 @@ import sql from "~/server/components/postgres"; export default defineEventHandler(async (event) => { const createUsers = await sql` - create table if not exists users ( - uuid text primary key, - created_at timestamptz default current_timestamp, - username text not null unique, - avatarurl text, - firstname text, - passwordhash text not null, - email text - ); -`; + create table if not exists users ( + uuid text primary key, + created_at timestamptz default current_timestamp, + username text not null unique, + avatarurl text, + firstname text, + passwordhash text not null, + email text + ); + `; const usersList = await sql` - create table if not exists usertokens ( - token text not null primary key, - created_at timestamptz default current_timestamp, - username text not null, - email text, - avatarurl text, - firstname text - ) -`; + create table if not exists usertokens ( + token text not null primary key, + created_at timestamptz default current_timestamp, + username text not null, + email text, + avatarurl text, + firstname text + ) + `; const createUserAiChatHistory = await sql` -CREATE TABLE IF NOT EXISTS chat_history ( - id SERIAL PRIMARY KEY, - uuid VARCHAR(255) NOT NULL, - role VARCHAR(50) NOT NULL, - content TEXT NOT NULL, - created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP -)`; - const createSources = await sql``; + CREATE TABLE IF NOT EXISTS chat_history ( + id SERIAL PRIMARY KEY, + uuid VARCHAR(255) NOT NULL, + role VARCHAR(50) NOT NULL, + content TEXT NOT NULL, + created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP + )`; + + 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 not null, + remove_translate_popup boolean not null + )`; + + const createSources = await sql` + create table if not exists lt_news_org ( + news_id text primary key, + name text not null, + description text + ) + `; + return { createUsers: createUsers, usersList: usersList, createUserAiChatHistory: createUserAiChatHistory, createSources: createSources, + createUserOtherData: createUserOtherData, }; }); diff --git a/server/api/user/sendUserInfo.ts b/server/api/user/delete.ts similarity index 100% rename from server/api/user/sendUserInfo.ts rename to server/api/user/delete.ts diff --git a/server/api/user/login.ts b/server/api/user/login.ts index 281b513..6d12a53 100644 --- a/server/api/user/login.ts +++ b/server/api/user/login.ts @@ -34,9 +34,10 @@ export default defineEventHandler(async (event) => { console.log(fetchUserInfo[0]); if (fetchUserInfo.length === 0) { const hashedPassword = await argon2.hash(salt + password); + const userUUID = uuidv4(); const createNewUser = await sql` insert into users (uuid, username, passwordhash, avatarurl) - values (${uuidv4()}, ${username}, ${hashedPassword}, ${defaultAvatarUrl}) + values (${userUUID}, ${username}, ${hashedPassword}, ${defaultAvatarUrl}) `; console.log(createNewUser); if (fetchUserInfo.length !== 0) { @@ -44,6 +45,10 @@ export default defineEventHandler(async (event) => { error: "CANNOT_CREATE_NEW_USER", }; } + const createOtherFields = await sql` + insert into user_other_data(user_id, user, translate_enabled, translate_provider, remove_translate_popup) + values (${userUUID}, ${username}, false, 'google', false) + `; const newToken = uuidv4(); return { user: fetchUserInfo, diff --git a/server/api/user/sendUserInfo.post.ts b/server/api/user/sendUserInfo.post.ts new file mode 100644 index 0000000..ff51c87 --- /dev/null +++ b/server/api/user/sendUserInfo.post.ts @@ -0,0 +1,20 @@ +import sql from "~/server/components/postgres"; +export default defineEventHandler(async (event) => { + const body = await readBody(event); + const { request_change } = body; + const userToken = getCookie(event, "token"); + if (!userToken) { + return { + error: "ERR_NOT_ALLOWED", + }; + } + const checkUserToken = await sql` + select * from usertokens + where token=${userToken} + `; + if (checkUserToken.length === 0) { + return { + error: "ERR_NOT_ALLOWED", + }; + } +});