commented database

This commit is contained in:
sageTheDM 2024-10-11 09:15:12 +02:00
parent 505255d72b
commit 9e762191c7

View file

@ -1,55 +1,40 @@
import axios from "axios";
/*
This is the guide on how to user this function:
data should be the json containing everything relevant, the json can contain the following keys:
action -> contains the action you want to do, there are: create_account, change_password, get_data, change_data, check_credentials, delete_account
username -> contains the current username, required for create_account, but can be omitted in favor of email in other requests. Preffered over email authentication.
email -> contains the current email, required for create_account, but just like the username, it can be omitted, in favor of the other, sending both is possible too.
password -> contains the password, required for all requests.
new_password -> in the case you are changing your password, you will need to use this in addition to password, to specify the new password.
data -> data contains all the data you want to store, you have to always give the entire data, because the data you give here overwrites the data in the database,
so if you only give the chat history for example, all settings will be deleted, and if you only give settings, all chat histories will get deleted.
if all went well, you will get the status 200 in response.data.status
to check if the request was accepted or declined, check response.data.response, it will be either true or false depending on if it worked, or not.
*/
const apiURL = new URL("http://localhost:5000/interstellar_ai/db")
// Construct the base API URL based on the environment
const apiURL = new URL("http://localhost:5000/interstellar_ai/db");
if (typeof window !== 'undefined') {
apiURL.hostname = window.location.hostname;
apiURL.hostname = window.location.hostname; // Set hostname for browsers
} else {
apiURL.hostname = "localhost"
apiURL.hostname = "localhost"; // Default to localhost for non-browser environments
}
// Function to send data to the database and return a success status
export const sendToDatabase = async (data: object): Promise<boolean> => {
try {
const response = await axios.post(apiURL.href, data);
const status = response.data.status;
const success = response.data.response;
postMessage({ status, success });
return success;
postMessage({ status, success }); // Send status back to the main thread
return success; // Return success status
} catch (error) {
postMessage({ status: 500, success: false });
console.log(error)
return false;
postMessage({ status: 500, success: false }); // Handle errors
console.log(error);
return false; // Return false on error
}
};
// Function to send data and get a string response
export const sendToDatabaseAndGetString = async (data: object): Promise<string> => {
try {
const response = await axios.post(apiURL.href, data);
const status = response.data.status;
const success = response.data.response;
postMessage({ status, success });
return success;
return success; // Return response string
} catch (error) {
postMessage({ status: 500, success: false });
console.log(error)
return "false";
console.log(error);
return "false"; // Return "false" on error
}
};
@ -61,7 +46,7 @@ export const createAccount = async (username: string, email: string, password: s
email: email,
password: password,
};
return await sendToDatabase(data);
return await sendToDatabase(data); // Send account creation request
};
export const changePassword = async (usernameOrEmail: string, password: string, newPassword: string) => {
@ -72,7 +57,7 @@ export const changePassword = async (usernameOrEmail: string, password: string,
password,
new_password: newPassword,
};
return await sendToDatabase(data);
return await sendToDatabase(data); // Send password change request
};
export const getSettings = async (usernameOrEmail: string, password: string) => {
@ -82,7 +67,7 @@ export const getSettings = async (usernameOrEmail: string, password: string) =>
email: usernameOrEmail.includes('@') ? usernameOrEmail : undefined,
password,
};
return await sendToDatabaseAndGetString(data);
return await sendToDatabaseAndGetString(data); // Get user settings
};
export const changeSettings = async (usernameOrEmail: string, password: string, newData: object) => {
@ -93,7 +78,7 @@ export const changeSettings = async (usernameOrEmail: string, password: string,
password,
data: newData,
};
return await sendToDatabase(data);
return await sendToDatabase(data); // Send settings change request
};
export const getHistory = async (usernameOrEmail: string, password: string) => {
@ -103,7 +88,7 @@ export const getHistory = async (usernameOrEmail: string, password: string) => {
email: usernameOrEmail.includes('@') ? usernameOrEmail : undefined,
password,
};
return await sendToDatabaseAndGetString(data);
return await sendToDatabaseAndGetString(data); // Get user history
};
export const changeHistory = async (usernameOrEmail: string, password: string, newData: object) => {
@ -114,7 +99,7 @@ export const changeHistory = async (usernameOrEmail: string, password: string, n
password,
data: newData,
};
return await sendToDatabase(data);
return await sendToDatabase(data); // Send history change request
};
export const getEmail = async (usernameOrEmail: string, password: string): Promise<string> => {
@ -124,7 +109,7 @@ export const getEmail = async (usernameOrEmail: string, password: string): Promi
email: usernameOrEmail.includes('@') ? usernameOrEmail : undefined,
password,
};
return await sendToDatabaseAndGetString(data);
return await sendToDatabaseAndGetString(data); // Get user email
};
export const getName = async (usernameOrEmail: string, password: string): Promise<string> => {
@ -134,10 +119,9 @@ export const getName = async (usernameOrEmail: string, password: string): Promis
email: usernameOrEmail.includes('@') ? usernameOrEmail : undefined,
password,
};
return await sendToDatabaseAndGetString(data);
return await sendToDatabaseAndGetString(data); // Get user name
};
export const checkCredentials = async (usernameOrEmail: string, password: string) => {
const data = {
action: "check_credentials",
@ -145,15 +129,16 @@ export const checkCredentials = async (usernameOrEmail: string, password: string
email: usernameOrEmail.includes('@') ? usernameOrEmail : undefined,
password,
};
const sendBack = await sendToDatabase(data);
const sendBack = await sendToDatabase(data); // Check user credentials
if (sendBack) {
if (typeof localStorage !== 'undefined') {
localStorage.setItem("accountEmail", await getEmail(usernameOrEmail, password))
localStorage.setItem("accountName", await getName(usernameOrEmail, password))
localStorage.setItem("accountPassword", password)
// Store user data in localStorage if credentials are valid
localStorage.setItem("accountEmail", await getEmail(usernameOrEmail, password));
localStorage.setItem("accountName", await getName(usernameOrEmail, password));
localStorage.setItem("accountPassword", password);
}
}
return sendBack
return sendBack; // Return success status
};
export const deleteAccount = async (usernameOrEmail: string, password: string) => {
@ -163,5 +148,5 @@ export const deleteAccount = async (usernameOrEmail: string, password: string) =
email: usernameOrEmail.includes('@') ? usernameOrEmail : undefined,
password,
};
return await sendToDatabase(data);
return await sendToDatabase(data); // Send account deletion request
};