Implement repo error retrieval

This commit is contained in:
George Lacey 2021-05-05 18:01:13 +01:00
parent 4aabe467a4
commit f5a556d06e
2 changed files with 30 additions and 1 deletions

View File

@ -1,5 +1,5 @@
from .connection import RepoConn, ArchiveConn, ErrorConn, LabelConn, CacheConn
from .object import Repo, Archive, Label
from .object import Repo, Archive, Label, Error
from .object.label import Label
from pathlib import Path
@ -51,4 +51,12 @@ class BorgDatabase(object):
archive = self.archive_conn.get_latest(repo.primary_key)
return self.cache_conn.get(archive.primary_key)
def get_repo_errors(self, repo_id):
label = self.label_conn.get_label_id(repo_id)
return self.error_conn.get_repo_errors(label)
def get_recent_repo_errors(self, repo_id, days=7):
label = self.label_conn.get_label_id(repo_id)
return self.error_conn.get_recent_repo_errors(label, days)
# endregion

View File

@ -8,6 +8,8 @@ class ErrorConn(DatabaseConnection):
self.label_table = label_table
super().__init__(db_path, Error, table_name)
# region INIT
def _create_table(self):
create_statement = f"create table if not exists {self._sql_table}(" \
f"id INTEGER PRIMARY KEY," \
@ -18,6 +20,10 @@ class ErrorConn(DatabaseConnection):
f" {self.label_table} (id));"
self.sql_execute(create_statement)
# endregion
# region INSERT
def _exists(self, record, repo_id=None, archive_id=None, label_id=None):
return None, None
@ -33,3 +39,18 @@ class ErrorConn(DatabaseConnection):
cursor.execute(statement, args)
self.sql_commit()
return cursor.lastrowid
# endregion
# region QUERIES
def get_repo_errors(self, label_id):
result = self.sql_execute_all(f"SELECT * FROM {self._sql_table} WHERE label_id = ?;", (label_id,))
return [Error.from_sql(row) for row in result]
def get_recent_repo_errors(self, label_id, days):
result = self.sql_execute_all(f"SELECT * FROM {self._sql_table} WHERE label_id = ?"
f" AND date(time) > date('now', '-{days} days');", (label_id,))
return [Error.from_sql(row) for row in result]
# endregion