Update createDatabase scripts & get sendUserInfo endpoint & when

creating an account it will also create a array in user_other_data.
This commit is contained in:
吳元皓 2025-06-07 09:21:37 +08:00
parent a4a522974a
commit 3a85eda19a
5 changed files with 84 additions and 33 deletions

View File

@ -39,16 +39,22 @@ const createUserOtherData = await sql`
groq_api_key text, groq_api_key text,
starred_news JSON not null, starred_news JSON not null,
translate_provider text, translate_provider text,
translate_enabled boolean, translate_enabled boolean not null,
remove_translate_popup boolean remove_translate_popup boolean not null
)`; )`;
/*const createSources = await sql` const createSources = await sql`
create table if not exists source ( 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("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(); await sql.end();
process.exit(0); process.exit(0);

View File

@ -1,41 +1,61 @@
import sql from "~/server/components/postgres"; import sql from "~/server/components/postgres";
export default defineEventHandler(async (event) => { export default defineEventHandler(async (event) => {
const createUsers = await sql` const createUsers = await sql`
create table if not exists users ( create table if not exists users (
uuid text primary key, uuid text primary key,
created_at timestamptz default current_timestamp, created_at timestamptz default current_timestamp,
username text not null unique, username text not null unique,
avatarurl text, avatarurl text,
firstname text, firstname text,
passwordhash text not null, passwordhash text not null,
email text email text
); );
`; `;
const usersList = await sql` const usersList = await sql`
create table if not exists usertokens ( create table if not exists usertokens (
token text not null primary key, token text not null primary key,
created_at timestamptz default current_timestamp, created_at timestamptz default current_timestamp,
username text not null, username text not null,
email text, email text,
avatarurl text, avatarurl text,
firstname text firstname text
) )
`; `;
const createUserAiChatHistory = await sql` const createUserAiChatHistory = await sql`
CREATE TABLE IF NOT EXISTS chat_history ( CREATE TABLE IF NOT EXISTS chat_history (
id SERIAL PRIMARY KEY, id SERIAL PRIMARY KEY,
uuid VARCHAR(255) NOT NULL, uuid VARCHAR(255) NOT NULL,
role VARCHAR(50) NOT NULL, role VARCHAR(50) NOT NULL,
content TEXT NOT NULL, content TEXT NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP 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 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 { return {
createUsers: createUsers, createUsers: createUsers,
usersList: usersList, usersList: usersList,
createUserAiChatHistory: createUserAiChatHistory, createUserAiChatHistory: createUserAiChatHistory,
createSources: createSources, createSources: createSources,
createUserOtherData: createUserOtherData,
}; };
}); });

View File

@ -34,9 +34,10 @@ export default defineEventHandler(async (event) => {
console.log(fetchUserInfo[0]); console.log(fetchUserInfo[0]);
if (fetchUserInfo.length === 0) { if (fetchUserInfo.length === 0) {
const hashedPassword = await argon2.hash(salt + password); const hashedPassword = await argon2.hash(salt + password);
const userUUID = uuidv4();
const createNewUser = await sql` const createNewUser = await sql`
insert into users (uuid, username, passwordhash, avatarurl) insert into users (uuid, username, passwordhash, avatarurl)
values (${uuidv4()}, ${username}, ${hashedPassword}, ${defaultAvatarUrl}) values (${userUUID}, ${username}, ${hashedPassword}, ${defaultAvatarUrl})
`; `;
console.log(createNewUser); console.log(createNewUser);
if (fetchUserInfo.length !== 0) { if (fetchUserInfo.length !== 0) {
@ -44,6 +45,10 @@ export default defineEventHandler(async (event) => {
error: "CANNOT_CREATE_NEW_USER", 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(); const newToken = uuidv4();
return { return {
user: fetchUserInfo, user: fetchUserInfo,

View File

@ -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",
};
}
});