from connect import connect

conn = connect()
class QueryFunc:
    #Функция обработки SELECT запросов к бд
    #Принимает запрос, аргументы которые предаются в запрос. 
    #Последний параметр отвечает за возврат или одной записи или множества(по умолчанию).
    def query_select(self, query, args=(), one=False):
        try:
            with conn.cursor() as cursor:
                cursor.execute(query, args)
                r = [dict((cursor.description[i][0], value) \
                        for i, value in enumerate(row)) for row in cursor.fetchall()]
                return (r[0] if r else None) if one else r
        except Exception as ex:
            return {"msg":str(ex)}
    #Функция обработки INSERT запросов к бд
    #Принимает запрос и аргументы
    #Возвращает значение первого столбца добавленной записи
    def query_insert(self, query, args=()):
        try:
            with conn.cursor() as cursor:
                cursor.execute(query, args)
                conn.commit()
                return cursor.fetchone()[0]
        except Exception as ex:
            return {"msg":str(ex)}
    #Функция обработки DELETE и UPDATE запросов к бд
    #Принимает запрос и аргументы
    #Возвращает истину или ложь в зависимости от результата запроса
    def query_delete_update(self, query, args=()):
        try:
            with conn.cursor() as cursor:
                cursor.execute(query, args)
                if(cursor.rowcount != 0):
                    conn.commit()
                    return True
            return False
        except: 
            return False
    #Функция возвращающая истину, если в сущности существет запись
    def query_check_count(self, query, args=()):
        try:
            with conn.cursor() as cursor:
                cursor.execute(query, args)
                if(cursor.rowcount > 0):
                    return True
            return False
        except: 
            return False

    