Добавил режим отладки. Исправил проблемы с логгером
This commit is contained in:
82
db/db.py
82
db/db.py
@@ -4,65 +4,25 @@ import sqlite3 as sq
|
||||
from classes import Activity, Tag
|
||||
from enums import ActivityType
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
class Database:
|
||||
def __init__(self, db_name: str):
|
||||
try:
|
||||
self.con = sq.connect(db_name)
|
||||
self.con.cursor().executescript('''
|
||||
CREATE TABLE IF NOT EXISTS "activities" (
|
||||
"id" VARCHAR NOT NULL UNIQUE,
|
||||
"description" VARCHAR NOT NULL,
|
||||
"time_spent" NUMERIC(3, 3) NOT NULL,
|
||||
"date_start" DATETIME NOT NULL,
|
||||
"date_end" DATETIME,
|
||||
"is_tracked" BOOLEAN NOT NULL DEFAULT false,
|
||||
"vetro_project_id" VARCHAR NOT NULL,
|
||||
"tag_id" VARCHAR NOT NULL,
|
||||
"project_id" VARCHAR NOT NULL,
|
||||
PRIMARY KEY("id"),
|
||||
FOREIGN KEY ("tag_id") REFERENCES "tags"("id")
|
||||
FOREIGN KEY ("vetro_project_id") REFERENCES "vetro_projects"("id")
|
||||
ON UPDATE NO ACTION ON DELETE NO ACTION
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "tags" (
|
||||
"id" VARCHAR NOT NULL UNIQUE,
|
||||
"title" VARCHAR NOT NULL,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "vetro_projects" (
|
||||
"id" VARCHAR NOT NULL UNIQUE,
|
||||
"title" VARCHAR NOT NULL,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "activity_types" (
|
||||
"id" INTEGER NOT NULL UNIQUE,
|
||||
"title" VARCHAR NOT NULL,
|
||||
PRIMARY KEY("id")
|
||||
);
|
||||
|
||||
CREATE TABLE IF NOT EXISTS "time_entry" (
|
||||
"id" INTEGER PRIMARY KEY,
|
||||
"date" DATETIME NOT NULL,
|
||||
"description" VARCHAR NOT NULL,
|
||||
"activity_id" VARCHAR NOT NULL,
|
||||
"time_spent" NUMERIC(3, 3) NOT NULL,
|
||||
"task_id" INTEGER NOT NULL,
|
||||
"activity_type_id" INTEGER NOT NULL,
|
||||
FOREIGN KEY ("activity_id") REFERENCES "activities"("id")
|
||||
ON UPDATE NO ACTION ON DELETE NO ACTION,
|
||||
FOREIGN KEY ("task_id") REFERENCES "activities"("task_id")
|
||||
ON UPDATE NO ACTION ON DELETE NO ACTION,
|
||||
FOREIGN KEY ("activity_type_id") REFERENCES "activity_types"("id")
|
||||
ON UPDATE NO ACTION ON DELETE NO ACTION
|
||||
);
|
||||
''')
|
||||
except Exception as e:
|
||||
raise(e)
|
||||
def __init__(self, db_name: str, sql_path: str):
|
||||
self.con = sq.connect(db_name)
|
||||
cursor = self.con.cursor()
|
||||
|
||||
try:
|
||||
with open(sql_path, 'r', encoding='utf-8') as f:
|
||||
sql_script = f.read()
|
||||
|
||||
cursor.executescript(sql_script)
|
||||
self.con.commit()
|
||||
logger.info("База данных успешно инициализирована!")
|
||||
except Exception as e:
|
||||
logger.error("Ошибка при инициализации БД:", e)
|
||||
self.con.rollback()
|
||||
|
||||
def insert_activities(self, activities: list[Activity]):
|
||||
cur = self.con.cursor()
|
||||
for act in activities:
|
||||
@@ -83,7 +43,7 @@ class Database:
|
||||
)
|
||||
self.con.commit()
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
logger.debug(e)
|
||||
|
||||
# Доделать
|
||||
def insert_time_entries(self, activities: list[Activity]):
|
||||
@@ -105,7 +65,7 @@ class Database:
|
||||
)
|
||||
self.con.commit()
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
logger.debug(e)
|
||||
|
||||
|
||||
def insert_tags(self, tags: list[Tag]):
|
||||
@@ -121,7 +81,7 @@ class Database:
|
||||
)
|
||||
self.con.commit()
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
logger.debug(e)
|
||||
|
||||
|
||||
def insert_vetro_projects(self, vetro_projects: dict):
|
||||
@@ -131,7 +91,7 @@ class Database:
|
||||
cur.execute("INSERT INTO vetro_projects VALUES(?, ?)", (k, v))
|
||||
self.con.commit()
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
logger.debug(e)
|
||||
|
||||
def insert_activity_types(self, activity_types: dict):
|
||||
cur = self.con.cursor()
|
||||
@@ -140,4 +100,4 @@ class Database:
|
||||
cur.execute("INSERT INTO activity_types VALUES(?, ?)", (k, v))
|
||||
self.con.commit()
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
logger.debug(e)
|
||||
|
||||
Reference in New Issue
Block a user