Implemented GuildAppDB with all functions
parent
413c1eff27
commit
15ce50196d
155
dbutil.py
155
dbutil.py
|
@ -1,6 +1,7 @@
|
|||
import json
|
||||
import os
|
||||
import sqlite3
|
||||
import pickle
|
||||
|
||||
|
||||
class MessageDB():
|
||||
|
@ -22,4 +23,156 @@ class MessageDB():
|
|||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"DELETE FROM app_msg_db WHERE msg_id={msg_id}")
|
||||
con.commit()
|
||||
con.commit()
|
||||
|
||||
class GuildAppDB():
|
||||
def create_guild(guild_id: str, guild_name: str) -> None:
|
||||
applications = {}
|
||||
application_blob = pickle.dumps(applications)
|
||||
data = guild_id, guild_name, application_blob
|
||||
con = sqlite3.connect("application.db")
|
||||
cur = con.cursor()
|
||||
cur.execute("INSERT INTO app_guildapp_db VALUES (?, ?, ?)", data)
|
||||
con.commit()
|
||||
|
||||
def remove_guild(guild_id: str) -> None:
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"DELETE FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
con.commit()
|
||||
|
||||
def add_application_entry(guild_id: str, application_name: str) -> str:
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"SELECT application_blob FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
application_blob = cur.fetchone()
|
||||
applications = pickle.loads(application_blob)
|
||||
if application_name not in applications.keys():
|
||||
applications[f"application_name"] = {
|
||||
"app_id": "",
|
||||
"resp_channel": ""
|
||||
}
|
||||
application_blob2 = pickle.dumps(applications)
|
||||
cur.execute(f"UPDATE app_guildapp_db SET application_blob = ? WHERE guild_id={guild_id}", application_blob2)
|
||||
con.commit()
|
||||
return "success"
|
||||
else:
|
||||
return "error on add application entry: application exists"
|
||||
|
||||
def remove_application_entry(guild_id: str, application_name: str) -> str:
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"SELECT application_blob FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
application_blob = cur.fetchone()
|
||||
applications = pickle.loads(application_blob)
|
||||
if application_name in applications.keys():
|
||||
applications.pop(application_name)
|
||||
application_blob2 = pickle.dumps(applications)
|
||||
cur.execute(f"UPDATE app_guildapp_db SET application_blob = ? WHERE guild_id={guild_id}", application_blob2)
|
||||
con.commit()
|
||||
return "success"
|
||||
else:
|
||||
return "error on remove application entry: application not found"
|
||||
|
||||
def set_response_channel(guild_id: str, application_name: str, channel_id: str) -> str:
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"SELECT application_blob FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
application_blob = cur.fetchone()
|
||||
applications = pickle.loads(application_blob)
|
||||
if application_name in applications.keys():
|
||||
applications[application_name]["resp_channel"] = channel_id
|
||||
application_blob2 = pickle.dumps(applications)
|
||||
cur.execute(f"UPDATE app_guildapp_db SET application_blob = ? WHERE guild_id={guild_id}", application_blob2)
|
||||
con.commit()
|
||||
return "success"
|
||||
else:
|
||||
return "error on set response channel: application not found"
|
||||
|
||||
def add_question(guild_id: str, application_name: str, question: str) -> str:
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"SELECT application_blob FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
application_blob = cur.fetchone()
|
||||
applications = pickle.loads(application_blob)
|
||||
if application_name in applications.keys():
|
||||
question_index = int(len(applications[application_name]["questions"]))
|
||||
applications[application_name]["questions"][question_index] = question
|
||||
application_blob2 = pickle.dumps(applications)
|
||||
cur.execute(f"UPDATE app_guildapp_db SET application_blob = ? WHERE guild_id={guild_id}", application_blob2)
|
||||
con.commit()
|
||||
return "success"
|
||||
else:
|
||||
return "error on add question: application not found"
|
||||
|
||||
def get_questions(guild_id: str, application_name: str):
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"SELECT application_blob FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
application_blob = cur.fetchone()
|
||||
applications = pickle.loads(application_blob)
|
||||
if application_name in applications.keys():
|
||||
questions = applications[application_name]["questions"]
|
||||
return questions
|
||||
else:
|
||||
return "error on get questions: application not found"
|
||||
|
||||
def edit_question(guild_id: str, application_name: str, question_index: int, new_question: str):
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"SELECT application_blob FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
application_blob = cur.fetchone()
|
||||
applications = pickle.loads(application_blob)
|
||||
if application_name in applications.keys():
|
||||
if question_index in applications[application_name].keys():
|
||||
questions = applications[application_name]["questions"]#[question_index] = new_question
|
||||
questions[question_index-1] = new_question
|
||||
applications[application_name]["questions"] = questions
|
||||
application_blob2 = pickle.dumps(applications)
|
||||
cur.execute(f"UPDATE app_guildapp_db SET application_blob = ? WHERE guild_id={guild_id}", application_blob2)
|
||||
con.commit()
|
||||
return "success"
|
||||
else:
|
||||
return "error on edit question: question index not found"
|
||||
else:
|
||||
return "error on edit question: application not found"
|
||||
|
||||
def move_question(guild_id: str, application_name: str, init_que_index: int, fin_que_index: int):
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"SELECT application_blob FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
application_blob = cur.fetchone()
|
||||
applications = pickle.loads(application_blob)
|
||||
if application_name in applications.keys():
|
||||
questions = applications[application_name]["questions"]
|
||||
if init_que_index <= len(questions) and fin_que_index <= len(questions):
|
||||
questions.insert(init_que_index-1, questions.pop(fin_que_index-1))
|
||||
applications[application_name]["questions"] = questions
|
||||
application_blob2 = pickle.dumps(applications)
|
||||
cur.execute(f"UPDATE app_guildapp_db SET application_blob = ? WHERE guild_id={guild_id}", application_blob2)
|
||||
con.commit()
|
||||
return "success"
|
||||
else:
|
||||
return "error on move question: question index not found"
|
||||
else:
|
||||
return "error on move question: application not found"
|
||||
|
||||
def remove_question(guild_id: str, application_name: str, question_index: int):
|
||||
con = sqlite3.connect("applications.db")
|
||||
cur = con.cursor()
|
||||
cur.execute(f"SELECT application_blob FROM app_guildapp_db WHERE guild_id={guild_id}")
|
||||
application_blob = cur.fetchone()
|
||||
applications = pickle.loads(application_blob)
|
||||
if application_name in applications.keys():
|
||||
questions = applications[application_name]["questions"]
|
||||
if question_index <= len(questions):
|
||||
questions.pop(question_index-1)
|
||||
applications[application_name]["questions"] = questions
|
||||
application_blob2 = pickle.dumps(applications)
|
||||
cur.execute(f"UPDATE app_guildapp_db SET application_blob = ? WHERE guild_id={guild_id}", application_blob2)
|
||||
con.commit()
|
||||
return "success"
|
||||
else:
|
||||
return "error on remove question: question index not found"
|
||||
else:
|
||||
return "error on remove question: application not found"
|
Loading…
Reference in New Issue