Update the remove all backup plans command.

Refactor the commands names.
Add the service to remove all plans.
Add tests for remove all command.
dev
KKlochko 3 months ago
parent 76e555aefb
commit 2874dc76ad

@ -28,3 +28,29 @@ Feature: Deleting a backup plan with the CLI
| arguments | result | result_error | description | | arguments | result | result_error | description |
| plans remove one -i 8aa59e7e-dc75-459b-aeb5-b710b39be583 | error | [ERROR] Failed to delete the backup plan, because it doesn't exist. | delete a non-existing plan | | plans remove one -i 8aa59e7e-dc75-459b-aeb5-b710b39be583 | error | [ERROR] Failed to delete the backup plan, because it doesn't exist. | delete a non-existing plan |
@fixture.injector
@fixture.in_memory_database
@fixture.cli
Scenario Outline: Delete no backup plans with the CLI
Given the CLI arguments are "<arguments>"
When I run the CLI
Then the CLI executed with "<result>"
And the CLI output contains "<result_message>"
Examples:
| arguments | result | result_message | description |
| plans remove all | success | Nothing to remove. No backup plans. | delete no plans |
@fixture.injector
@fixture.in_memory_database
@fixture.seeds
@fixture.cli
Scenario Outline: Delete all backup plans with the CLI
Given the CLI arguments are "<arguments>"
When I run the CLI
Then the CLI executed with "<result>"
And the CLI output contains "<result_message>"
Examples:
| arguments | result | result_message | description |
| plans remove all | success | All backup plans removed. | delete all backup plans |

@ -1,5 +1,5 @@
from .remove_all_backup_plans_command import RemoveAllBackupBackupPlansCommand from .remove_all_backup_plans_command import RemoveAllBackupPlansCommand
from .remove_backup_plan_destinations_command import RemoveBackupBackupPlanDestinationsCommand from .remove_backup_plan_destinations_command import RemoveBackupPlanDestinationsCommand
from .remove_backup_plan_command import RemoveBackupBackupPlanCommand from .remove_backup_plan_command import RemoveBackupPlanCommand
__all__ = ['RemoveAllBackupBackupPlansCommand', 'RemoveBackupBackupPlanCommand', 'RemoveBackupBackupPlanDestinationsCommand'] __all__ = ['RemoveAllBackupPlansCommand', 'RemoveBackupPlanCommand', 'RemoveBackupPlanDestinationsCommand']

@ -2,7 +2,7 @@ from tui_rsync.core.ports.orm import DatabaseManagerPort
from tui_rsync.infrastructure.orm.models import BackupPlanModel, DestinationModel from tui_rsync.infrastructure.orm.models import BackupPlanModel, DestinationModel
class RemoveAllBackupBackupPlansCommand: class RemoveAllBackupPlansCommand:
def __init__(self, database_manager: DatabaseManagerPort): def __init__(self, database_manager: DatabaseManagerPort):
self.databaseManager = database_manager self.databaseManager = database_manager

@ -4,7 +4,7 @@ from tui_rsync.core.shared_kernel.ports.Exceptions import CommandException
from tui_rsync.infrastructure.orm.models import DestinationModel, BackupPlanModel from tui_rsync.infrastructure.orm.models import DestinationModel, BackupPlanModel
class RemoveBackupBackupPlanCommand: class RemoveBackupPlanCommand:
def __init__(self, database_manager: DatabaseManagerPort): def __init__(self, database_manager: DatabaseManagerPort):
self.databaseManager = database_manager self.databaseManager = database_manager

@ -3,7 +3,7 @@ from tui_rsync.core.shared_kernel.components.common import UUID
from tui_rsync.infrastructure.orm.models import DestinationModel from tui_rsync.infrastructure.orm.models import DestinationModel
class RemoveBackupBackupPlanDestinationsCommand: class RemoveBackupPlanDestinationsCommand:
def __init__(self, database_manager: DatabaseManagerPort): def __init__(self, database_manager: DatabaseManagerPort):
self.databaseManager = database_manager self.databaseManager = database_manager

@ -8,7 +8,7 @@ from tui_rsync.core.components.backup_plan.domain import BackupPlan
from tui_rsync.core.shared_kernel.components.common import UUID 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 RemoveBackupPlanDestinationsCommand, RemoveBackupPlanCommand
from ..queries import GetBackupPlanByIdQuery from ..queries import GetBackupPlanByIdQuery
@ -30,7 +30,7 @@ class BackupPlanRepository(BackupPlanRepositoryPort):
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)
model = BackupPlanModel.get_or_none(BackupPlanModel.id == updated_model.id) model = BackupPlanModel.get_or_none(BackupPlanModel.id == updated_model.id)
remove_backup_plan_destinations_command = RemoveBackupBackupPlanDestinationsCommand(self.databaseManager) remove_backup_plan_destinations_command = RemoveBackupPlanDestinationsCommand(self.databaseManager)
model.label = updated_model.label model.label = updated_model.label
model.source = updated_model.source model.source = updated_model.source
@ -42,5 +42,5 @@ class BackupPlanRepository(BackupPlanRepositoryPort):
destination.save(force_insert=True) destination.save(force_insert=True)
def delete(self, uuid: UUID) -> bool: def delete(self, uuid: UUID) -> bool:
command = RemoveBackupBackupPlanCommand(self.databaseManager) command = RemoveBackupPlanCommand(self.databaseManager)
return command.execute(uuid) return command.execute(uuid)

@ -1,5 +1,11 @@
from .backup_plan_service import BackupPlanService from .backup_plan_service import BackupPlanService
from .get_all_backup_plans_service import GetAllBackupPlansService from .get_all_backup_plans_service import GetAllBackupPlansService
from .get_backup_plan_count_service import GetBackupPlanCountService from .get_backup_plan_count_service import GetBackupPlanCountService
from .remove_all_backup_plans_service import RemoveAllBackupPlansService
__all__ = ['BackupPlanService', 'GetAllBackupPlansService', 'GetBackupPlanCountService'] __all__ = [
'BackupPlanService',
'GetAllBackupPlansService',
'GetBackupPlanCountService',
'RemoveAllBackupPlansService',
]

@ -0,0 +1,9 @@
from tui_rsync.core.components.backup_plan.application.commands import RemoveAllBackupPlansCommand
class RemoveAllBackupPlansService:
def __init__(self, remove_all_backup_plan_command: RemoveAllBackupPlansCommand):
self.remove_all_backup_plan_command = remove_all_backup_plan_command
def remove_all(self) -> bool:
return self.remove_all_backup_plan_command.execute()

@ -1,10 +1,10 @@
from injector import singleton, Module, provider from injector import singleton, Module, provider
from tui_rsync.core.components.backup_plan.application.commands import RemoveAllBackupBackupPlansCommand from tui_rsync.core.components.backup_plan.application.commands import RemoveAllBackupPlansCommand
from tui_rsync.core.components.backup_plan.application.queries import GetAllBackupPlansQuery, GetBackupPlanCountQuery from tui_rsync.core.components.backup_plan.application.queries import GetAllBackupPlansQuery, GetBackupPlanCountQuery
from tui_rsync.core.components.backup_plan.application.repository import BackupPlanRepositoryPort, BackupPlanRepository from tui_rsync.core.components.backup_plan.application.repository import BackupPlanRepositoryPort, BackupPlanRepository
from tui_rsync.core.components.backup_plan.application.services import GetBackupPlanCountService, \ from tui_rsync.core.components.backup_plan.application.services import GetBackupPlanCountService, \
GetAllBackupPlansService GetAllBackupPlansService, RemoveAllBackupPlansService
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.ports.configuration import UserDataPathsPort from tui_rsync.core.ports.configuration import UserDataPathsPort
from tui_rsync.core.ports.orm import DatabaseManagerPort from tui_rsync.core.ports.orm import DatabaseManagerPort
@ -39,8 +39,13 @@ class Configuration(Module):
@provider @provider
@singleton @singleton
def provide_remove_all_backup_plans_command(self, database_manager: DatabaseManagerPort) -> RemoveAllBackupBackupPlansCommand: def provide_remove_all_backup_plans_command(self, database_manager: DatabaseManagerPort) -> RemoveAllBackupPlansCommand:
return RemoveAllBackupBackupPlansCommand(database_manager) return RemoveAllBackupPlansCommand(database_manager)
@provider
@singleton
def provide_remove_all_backup_plans_service(self, command: RemoveAllBackupPlansCommand) -> RemoveAllBackupPlansService:
return RemoveAllBackupPlansService(command)
@provider @provider
@singleton @singleton

@ -1,10 +1,10 @@
from injector import singleton, Module, provider from injector import singleton, Module, provider
from tui_rsync.core.components.backup_plan.application.commands import RemoveAllBackupBackupPlansCommand from tui_rsync.core.components.backup_plan.application.commands import RemoveAllBackupPlansCommand
from tui_rsync.core.components.backup_plan.application.queries import GetAllBackupPlansQuery, GetBackupPlanCountQuery from tui_rsync.core.components.backup_plan.application.queries import GetAllBackupPlansQuery, GetBackupPlanCountQuery
from tui_rsync.core.components.backup_plan.application.repository import BackupPlanRepositoryPort, BackupPlanRepository from tui_rsync.core.components.backup_plan.application.repository import BackupPlanRepositoryPort, BackupPlanRepository
from tui_rsync.core.components.backup_plan.application.services import GetBackupPlanCountService, \ from tui_rsync.core.components.backup_plan.application.services import GetBackupPlanCountService, \
GetAllBackupPlansService GetAllBackupPlansService, RemoveAllBackupPlansService
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.ports.configuration import UserDataPathsPort from tui_rsync.core.ports.configuration import UserDataPathsPort
from tui_rsync.core.ports.orm import DatabaseManagerPort from tui_rsync.core.ports.orm import DatabaseManagerPort
@ -39,8 +39,13 @@ class TestingConfiguration(Module):
@provider @provider
@singleton @singleton
def provide_remove_all_backup_plans_command(self, database_manager: DatabaseManagerPort) -> RemoveAllBackupBackupPlansCommand: def provide_remove_all_backup_plans_command(self, database_manager: DatabaseManagerPort) -> RemoveAllBackupPlansCommand:
return RemoveAllBackupBackupPlansCommand(database_manager) return RemoveAllBackupPlansCommand(database_manager)
@provider
@singleton
def provide_remove_all_backup_plans_service(self, command: RemoveAllBackupPlansCommand) -> RemoveAllBackupPlansService:
return RemoveAllBackupPlansService(command)
@provider @provider
@singleton @singleton

@ -20,7 +20,7 @@
from rich.console import Console from rich.console import Console
import typer import typer
from tui_rsync.core.components.backup_plan.application.commands import RemoveAllBackupBackupPlansCommand from tui_rsync.core.components.backup_plan.application.services import RemoveAllBackupPlansService
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 import CommandException from tui_rsync.core.shared_kernel.ports.Exceptions import CommandException
@ -57,10 +57,9 @@ def all():
[red b]Remove[/] [yellow] all existing backup plans[/]. [red b]Remove[/] [yellow] all existing backup plans[/].
""" """
command: RemoveAllBackupBackupPlansCommand = CurrentConfiguration.get(RemoveAllBackupBackupPlansCommand) service: RemoveAllBackupPlansService = CurrentConfiguration.get(RemoveAllBackupPlansService)
removed = command.execute()
if removed: if service.remove_all():
console.print(f"Removed all backup plans.") console.print("All backup plans removed.")
else: else:
console.print(f"Nothing to remove. No backup plans.") console.print("Nothing to remove. No backup plans.")

Loading…
Cancel
Save