fixed some database backend stuff

This commit is contained in:
Patrick_Pluto 2024-09-30 15:26:31 +02:00
parent 26b69a1cb6
commit 223f953648
8 changed files with 58 additions and 41 deletions

2
.gitignore vendored
View file

@ -43,3 +43,5 @@ __pycache__/
key.pem
cert.pem
api_key.txt
database.json

View file

@ -9,7 +9,6 @@ import { resolve } from "path";
import { FFmpeg } from "@ffmpeg/ffmpeg";
import { fetchFile, toBlobURL } from "@ffmpeg/util"
const InputOutputBackend: React.FC = () => {
// # variables
type Message = {
@ -174,7 +173,15 @@ const InputOutputBackend: React.FC = () => {
if (postWorkerRef.current) {
addMessage("user", inputValue)
console.log("input:", inputValue);
postWorkerRef.current.postMessage({ messages: [...messages, { role: "user", content: inputValue }], ai_model: "llama3.2", access_token: accessToken })
const type = localStorage.getItem('type')
var api_key: string = ""
if (type != null && type != 'local') {
const try_key = localStorage.getItem(type)
if (try_key) {
api_key = try_key
}
}
postWorkerRef.current.postMessage({ messages: [...messages, { role: "user", content: inputValue }], ai_model: localStorage.getItem('model'), model_type: type, access_token: accessToken, api_key: api_key })
startGetWorker()
}
}

View file

@ -18,27 +18,28 @@ 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.
*/
export const sendToDatabase = (data: any): Promise<boolean> => {
return axios.post("http://localhost:5000/interstellar_ai/db", data)
.then(response => {
export const sendToDatabase = async (data: any): Promise<boolean> => {
try {
const response = await axios.post("http://localhost:5000/interstellar_ai/db", data);
const status = response.data.status;
const success = response.data.response;
postMessage({ status, success });
return success; // Ensure success is returned to the caller
})
.catch(error => {
console.log(status);
return success;
} catch (error) {
postMessage({ status: 500, success: false });
return false; // Return false in case of an error
});
console.log("NO");
return false;
}
};
// Functions for each action
export const createAccount = async (username: string, email: string, password: string) => {
const data = {
action: "create_account",
username,
email,
password,
username: username,
email: email,
password: password,
};
return await sendToDatabase(data);
};

View file

@ -1,14 +1,15 @@
import axios from "axios";
onmessage = (e) => {
const { messages, ai_model = "llama3.2", access_token } = e.data
const { messages, ai_model, model_type, access_token, api_key } = e.data
const Message = {
messages: messages,
ai_model: "llama3.2",
model_type: "local",
access_token: access_token
ai_model: ai_model,
model_type: model_type,
access_token: access_token,
api_key: api_key
}
console.log(Message);

View file

@ -6,7 +6,6 @@ export const sendToVoiceRecognition = (audio_data: Blob): Promise<string> => {
const formdata = new FormData()
formdata.append("audio", audio_data)
const dataSend = { option: "offline", type: "basic", audio: audio_data }
return axios.post("http://localhost:5000/interstellar_ai/api/voice_recognition", formdata)
.then((response) => {
console.log(response.data)

View file

@ -240,6 +240,9 @@ const Models: React.FC = () => {
console.log(model)
console.log(category)
console.log(modelList[category][model as keyof typeof modelList[typeof category]]);
console.log(modelList[category]['model_type' as keyof typeof modelList[typeof category]])
localStorage.setItem("model", modelList[category][model as keyof typeof modelList[typeof category]])
localStorage.setItem("type", modelList[category]['model_type' as keyof typeof modelList[typeof category]])
}
return (

View file

@ -89,20 +89,20 @@ class API:
@self.app.route('/interstellar_ai/db', methods=['POST'])
def db_manipulate():
action = request.args.get('action')
data = request.args.get('data')
sent_data = request.get_json()
action = sent_data.get('action')
if action == "create_account":
return jsonify({'status': 200, 'response': self.db.add_user(data)})
return jsonify({'status': 200, 'response': self.db.add_user(sent_data)})
elif action == "change_password":
return jsonify({'status': 200, 'response': self.db.update_password(data)})
return jsonify({'status': 200, 'response': self.db.update_password(sent_data)})
elif action == "get_data":
return jsonify({'status': 200, 'response': self.db.get_data(data)})
return jsonify({'status': 200, 'response': self.db.get_data(sent_data)})
elif action == "change_data":
return jsonify({'status': 200, 'response': self.db.change_data(data)})
return jsonify({'status': 200, 'response': self.db.change_data(sent_data)})
elif action == "check_credentials":
return jsonify({'status': 200, 'response': self.db.check_credentials(data)})
return jsonify({'status': 200, 'response': self.db.check_credentials(sent_data)})
elif action == "delete_account":
return jsonify({'status': 200, 'response': self.db.delete_user(data)})
return jsonify({'status': 200, 'response': self.db.delete_user(sent_data)})
return jsonify({'status': 401, 'response': "Invalid action"})

View file

@ -10,10 +10,10 @@ class DB:
def ensure_username(self, data):
if hasattr(data, 'username'):
return data.get['username']
return data.get('username')
elif hasattr(data, 'email'):
for index, entry in self.database:
if entry.get['email'] == data.get['email']:
if entry.get('email') == data.get('email'):
return index
@staticmethod
@ -23,19 +23,22 @@ class DB:
return hashed_password
def add_user(self, data):
username = data.get['username']
password = data.get['password']
email = data.get['email']
username = data.get('username')
password = data.get('password')
email = data.get('email')
hashed_password = self.hash_password(password)
user_data = {"hashed_password": hashed_password, "email": email, "data": None}
if username not in self.database:
self.database[username] = user_data
print("yes")
self.save_database()
return True
print("fail")
return False
def delete_user(self, data):
username = self.ensure_username(data)
data = data.get['data']
data = data.get('data')
if not self.check_credentials(data):
return False
@ -45,7 +48,7 @@ class DB:
def change_data(self, data):
username = self.ensure_username(data)
data = data.get['data']
data = data.get('data')
if not self.check_credentials(data):
return False
@ -55,7 +58,7 @@ class DB:
def update_password(self, data):
username = self.ensure_username(data)
new_password = data.get['new_password']
new_password = data.get('new_password')
if not self.check_credentials(data):
return False
@ -66,7 +69,7 @@ class DB:
def check_credentials(self, data):
username = self.ensure_username(data)
password = data.get['password']
password = data.get('password')
if username not in self.database:
return False
@ -79,7 +82,7 @@ class DB:
if not self.check_credentials(data):
return None
send_back = self.database[username].get['data']
send_back = self.database(username).get('data')
return send_back
def save_database(self):
@ -90,6 +93,7 @@ class DB:
else:
with open("database.json", 'w') as file:
print("saving")
json.dump(self.database, file)
def load_database(self):