SanctuaryCommander/utilities/database/database.py

54 lines
2.0 KiB
Python

class Database():
def __init__(self):
pass
def close(self):
pass
def query(self, query: str, parameters: list=None) -> tuple[int, list[tuple]]:
pass
def select(self, table: str, columns: list[str]=None, where: list[dict]=None) -> list[tuple]:
query_string = "SELECT {columns} FROM {table}{where}".format(
columns = "*" if columns is None else ",".join(columns),
table = table,
where = self.__generate_basic_where_clause(where) if not where is None else ""
)
return self.query(query_string, [element["value"] for element in where] if not where is None else None)[1]
def insert(self, table: str, columns: list[str], values: list) -> int:
query_string = "INSERT INTO {table} ({columns}) VALUES ({values})".format(
table = table,
columns = ",".join(columns),
values = ("?," * len(values))[:-1]
)
return self.query(query_string, values)[0]
def update(self, table: str, columns: list[str], values: list, where: list[dict]=None) -> int:
query_string = "UPDATE {table} SET {set_rules}{where}".format(
table = table,
set_rules = ",".join([element + "=?" for element in columns]),
where = self.__generate_basic_where_clause(where) if not where is None else ""
)
return self.query(query_string, values)[0]
def delete(self, table: str, where: list[dict]=None) -> int:
query_string = "DELETE FROM {table}{where}".format(
table = table,
where = self.__generate_basic_where_clause(where) if not where is None else ""
)
return self.query(query_string)[0]
def __generate_basic_where_clause(self, where: list[dict]):
return " WHERE {clauses}".format(
clauses = "".join([
element["name"] + " " + element["compare"] + " ?" + (" " + element["boolean_op"] + " " if "boolean_op" in element else "")
for element in where
])
)