#!/usr/bin/python3
#encoding:utf-8


import os
import traceback
import datetime


import sqlite3

__config__ = {
  'log_dir_path':'log',
  'db_path':'queue.db'}


class sql:
    """обёртка для запросов в БД"""
    def __init__(self):
        self.conn = sqlite3.connect(__config__['db_path'])
        self.c = self.conn.cursor()

    def save(self):
        self.conn.commit()

    def do(self, unquoted, quoted=None):
        if quoted is not None:
            try:
                self.c.execute(unquoted, tuple(quoted))
            except:
                index = 1
                name = os.path.join(
                  __config__['log_dir_path'],
                  'sql_log_' + datetime.datetime.now().strftime('%Y%m%d%H%M%S%f') + '_1')
                while os.path.exists(name+ '.txt'):
                    index += 1
                    name = '_'.join(name.split('_')[:-1])+ '_'+str(index)
                savefile = open(name + '.txt', 'w', encoding="utf-8")
                savefile.write(str([unquoted, quoted]))
                savefile.write(traceback.format_exc())
                savefile.close()
                raise Exception('sql do error', str([unquoted, quoted, traceback.format_exc()]))
        else:
            self.c.execute(unquoted)
        return [list(index) for index in self.c.fetchall()]

    def __del__(self):
        self.c.close()


def sqlr(*args):
    sql_obj = sql()
    result = sql_obj.do(*args)
    del sql_obj
    return result

def sqlw(*args):
    sql_obj = sql()
    sql_obj.do(*args)
    sql_obj.save()
    del sql_obj
