Большой рефактор. Обновление тегов, задач и типов деятельности при сохранении активностей в БД
This commit is contained in:
100
db/db.py
100
db/db.py
@@ -32,16 +32,7 @@ class Database:
|
||||
|
||||
def insert_activities(self, activities: list[Activity]):
|
||||
"""Сохраняет в базу данных активности Clockify"""
|
||||
is_updated = True
|
||||
for act in activities:
|
||||
if is_updated:
|
||||
tags = self.cursor.execute("SELECT * FROM tag WHERE id = ?", (act.tag_id, )).fetchall()
|
||||
vetro_project_id = act.vetro_project_id
|
||||
if vetro_project_id:
|
||||
vetro_projects = self.cursor.execute("SELECT * FROM vetro_project WHERE id = ?", (vetro_project_id, )).fetchall()
|
||||
is_updated = tags or vetro_projects
|
||||
else:
|
||||
is_updated = bool(tags)
|
||||
try:
|
||||
self.cursor.execute(
|
||||
"""INSERT INTO activity(
|
||||
@@ -91,8 +82,6 @@ class Database:
|
||||
)
|
||||
finally:
|
||||
self.con.commit()
|
||||
if not is_updated:
|
||||
logging.info(Fore.YELLOW + "База данных устарела. Рекомендуем обновить с помощью флага -i [--init-db]" + Fore.RESET)
|
||||
|
||||
def insert_time_entries(self, activities: list[Activity]):
|
||||
"""Сохраняет в базу данных трудочасы Redmine"""
|
||||
@@ -195,39 +184,6 @@ class Database:
|
||||
)
|
||||
finally:
|
||||
self.con.commit()
|
||||
|
||||
def get_user_by(self, by_field: str, value: str):
|
||||
"""Получает пользователя из бд"""
|
||||
try:
|
||||
user = self.cursor.execute(f"SELECT * FROM user WHERE {by_field} = ?", (value,)).fetchone()
|
||||
return {
|
||||
"id": user[0],
|
||||
"first_name": user[1],
|
||||
"last_name": user[2],
|
||||
"clockify_user_id": user[3],
|
||||
"redmine_user_id": user[4],
|
||||
"clockify_email": user[5],
|
||||
"clockify_username": user[6],
|
||||
"redmine_email": user[7],
|
||||
"redmine_username": user[8]
|
||||
}
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
|
||||
|
||||
def get_tags(self) -> list[Tag]:
|
||||
"""Получает теги из бд"""
|
||||
try:
|
||||
tags = self.cursor.execute("SELECT * FROM tag").fetchall()
|
||||
return [
|
||||
Tag(
|
||||
id=tag[0],
|
||||
title=tag[1]
|
||||
)
|
||||
for tag in tags
|
||||
]
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
|
||||
def insert_tasks(self, tasks: list[Task]):
|
||||
"""Сохраняет в БД Задачи из Redmine"""
|
||||
@@ -280,6 +236,38 @@ class Database:
|
||||
finally:
|
||||
self.con.commit()
|
||||
|
||||
def get_user_by(self, by_field: str, value: str):
|
||||
"""Получает пользователя из бд"""
|
||||
try:
|
||||
user = self.cursor.execute(f"SELECT * FROM user WHERE {by_field} = ?", (value,)).fetchone()
|
||||
return {
|
||||
"id": user[0],
|
||||
"first_name": user[1],
|
||||
"last_name": user[2],
|
||||
"clockify_user_id": user[3],
|
||||
"redmine_user_id": user[4],
|
||||
"clockify_email": user[5],
|
||||
"clockify_username": user[6],
|
||||
"redmine_email": user[7],
|
||||
"redmine_username": user[8]
|
||||
}
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
|
||||
|
||||
def get_tags(self) -> list[Tag]:
|
||||
"""Получает теги из бд"""
|
||||
try:
|
||||
return [
|
||||
Tag(
|
||||
id=tag[0],
|
||||
title=tag[1]
|
||||
)
|
||||
for tag in self.cursor.execute("SELECT * FROM tag").fetchall()
|
||||
]
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
|
||||
def get_tasks(self) -> list[Task]:
|
||||
"""Получает задачи из бд"""
|
||||
try:
|
||||
@@ -297,3 +285,27 @@ class Database:
|
||||
]
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
|
||||
def get_vetro_projects(self) -> list[VetroProject]:
|
||||
"""Получает Проекты Ветро из бд"""
|
||||
try:
|
||||
return [
|
||||
VetroProject(**{
|
||||
"id": vetro_project[0],
|
||||
"title": vetro_project[1]
|
||||
}) for vetro_project in self.cursor.execute("SELECT * FROM vetro_project").fetchall()
|
||||
]
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
|
||||
def get_activity_types(self) -> list[ActivityType]:
|
||||
"""Получает Виды деятельности из бд"""
|
||||
try:
|
||||
return [
|
||||
ActivityType(**{
|
||||
"id": activity_type[0],
|
||||
"title": activity_type[1]
|
||||
}) for activity_type in self.cursor.execute("SELECT * FROM activity_type").fetchall()
|
||||
]
|
||||
except Exception as e:
|
||||
logging.error(e)
|
||||
|
||||
Reference in New Issue
Block a user