news-analyze/server/api/user/sendUserChanges.post.ts
2025-06-10 09:39:11 +08:00

40 lines
1.1 KiB
TypeScript

import sql from "~/server/components/postgres";
import getUserTokenMinusSQLInjection from "~/server/components/getUserToken";
export default defineEventHandler(async (event) => {
// Check user data.
const token = await getUserTokenMinusSQLInjection(event);
if (token.error.length !== 0) {
return {
error: "ERR_NOT_ALLOWED",
};
}
// Actual function
const body = await readBody(event);
if (body.jsonValue.length === 0) {
const clearBadDataRegex = /[@-_.+a-zA-Z0-9]{2,}/;
let allowed = true;
if (body.value.match()) {
allowed = false;
}
// Use Static values for now.
const requestChange = "groq_api_key";
const apiKeyqq = body.value.match(clearBadDataRegex);
const allowedColumns = ["groq_api_key", "another_column_name"];
if (!allowedColumns.includes(requestChange)) {
throw new Error("Invalid column name provided");
}
const sqlC = await sql.unsafe(
`
UPDATE user_other_data SET ${requestChange} = $1
WHERE username = $2`,
[apiKeyqq[0], token.user],
);
return {
sqlC: sqlC,
success: true,
};
}
});