Add the query exception and refactor get_by_id.

dev
KKlochko 3 months ago
parent d652469748
commit 476a0ef8cf

@ -1,3 +1,4 @@
from .get_all_backup_plans_query import GetAllBackupBackupPlansQuery from .get_all_backup_plans_query import GetAllBackupBackupPlansQuery
from .get_backup_plan_by_id_query import GetBackupBackupPlanByIdQuery
__all__ = ['GetAllBackupBackupPlansQuery'] __all__ = ['GetAllBackupBackupPlansQuery', 'GetBackupBackupPlanByIdQuery']

@ -0,0 +1,20 @@
from tui_rsync.core.components.backup_plan.domain import BackupPlan
from tui_rsync.core.ports.orm import DatabaseManagerPort
from tui_rsync.core.shared_kernel.components.common import UUID
from tui_rsync.core.shared_kernel.ports.Exceptions.query_exception import QueryException
from tui_rsync.infrastructure.orm.dto.dtos import BackupPlanDTO
from tui_rsync.infrastructure.orm.models import BackupPlanModel
class GetBackupBackupPlanByIdQuery:
def __init__(self, database_manager: DatabaseManagerPort):
self.databaseManager = database_manager
def execute(self, uuid: UUID) -> BackupPlan:
model = BackupPlanModel.get_or_none(BackupPlanModel.id == uuid.id)
if model is None:
raise QueryException("The backup plan was not found.")
return BackupPlanDTO.to_domain(model)

@ -9,6 +9,7 @@ from tui_rsync.core.shared_kernel.components.common import UUID
from tui_rsync.infrastructure.orm.models import BackupPlanModel from tui_rsync.infrastructure.orm.models import BackupPlanModel
from ..commands import RemoveBackupBackupPlanDestinationsCommand, RemoveBackupBackupPlanCommand from ..commands import RemoveBackupBackupPlanDestinationsCommand, RemoveBackupBackupPlanCommand
from ..queries import GetBackupBackupPlanByIdQuery
class BackupPlanRepository(BackupPlanRepositoryPort): class BackupPlanRepository(BackupPlanRepositoryPort):
@ -22,13 +23,9 @@ class BackupPlanRepository(BackupPlanRepositoryPort):
for destination in model.destinations: for destination in model.destinations:
destination.save(force_insert=True) destination.save(force_insert=True)
def get_by_id(self, uuid: UUID) -> Optional[BackupPlan]: def get_by_id(self, uuid: UUID) -> BackupPlan:
model = BackupPlanModel.get_or_none(BackupPlanModel.id == uuid.id) query = GetBackupBackupPlanByIdQuery(self.databaseManager)
return query.execute(uuid)
if model is None:
return model
return BackupPlanDTO.to_domain(model)
def update(self, backup_plan: BackupPlan): def update(self, backup_plan: BackupPlan):
updated_model = BackupPlanDTO.to_model(backup_plan) updated_model = BackupPlanDTO.to_model(backup_plan)

@ -0,0 +1,6 @@
from . import AppException
class QueryException(AppException):
"""Query failed."""
pass

@ -24,14 +24,17 @@ from tui_rsync.core.components.backup_plan.application.queries import GetAllBack
from tui_rsync.core.components.backup_plan.application.services.backup_plan_service import BackupPlanService from tui_rsync.core.components.backup_plan.application.services.backup_plan_service import BackupPlanService
from tui_rsync.core.shared_kernel.components.common import UUID from tui_rsync.core.shared_kernel.components.common import UUID
from tui_rsync.core.shared_kernel.ports.Exceptions.query_exception import QueryException
from tui_rsync.infrastructure.configuration import CurrentConfiguration from tui_rsync.infrastructure.configuration import CurrentConfiguration
from tui_rsync.user_interface.cli.components.backup_plan.formating import BackupPlanFormat from tui_rsync.user_interface.cli.components.backup_plan.formating import BackupPlanFormat
from tui_rsync.user_interface.cli.shared_kernel.components.errors.applications.exceptions import catch_exception
console = Console() console = Console()
show_backup_plan = typer.Typer() show_backup_plan = typer.Typer()
@show_backup_plan.command() @show_backup_plan.command()
@catch_exception(QueryException, 1)
def one( def one(
id: str = typer.Option( id: str = typer.Option(
None, "--id", "-i", None, "--id", "-i",

Loading…
Cancel
Save