Refactor ban management with domain models and mappers
- Add ban domain model for core business logic separation - Implement mapper pattern for DTO/domain conversions - Update ban service with new domain-driven approach - Refactor router endpoints to use new architecture - Add comprehensive mapper tests - Update documentation with architecture changes Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -34,6 +34,12 @@ from app.models.ban import (
|
||||
TimeRange,
|
||||
)
|
||||
from app.models.server import ServerStatus, ServerStatusResponse
|
||||
from app.mappers import (
|
||||
map_domain_dashboard_ban_list_to_response,
|
||||
map_domain_bans_by_country_to_response,
|
||||
map_domain_ban_trend_to_response,
|
||||
map_domain_bans_by_jail_to_response,
|
||||
)
|
||||
from app.services import ban_service
|
||||
from app.utils.constants import DEFAULT_PAGE_SIZE
|
||||
|
||||
@@ -121,7 +127,7 @@ async def get_dashboard_bans(
|
||||
:class:`~app.models.ban.DashboardBanListResponse` with paginated
|
||||
ban items and the total count for the selected window.
|
||||
"""
|
||||
return await ban_service.list_bans(
|
||||
domain_result = await ban_service.list_bans(
|
||||
socket_path,
|
||||
range,
|
||||
source=source,
|
||||
@@ -132,6 +138,7 @@ async def get_dashboard_bans(
|
||||
geo_cache=geo_cache,
|
||||
origin=origin,
|
||||
)
|
||||
return map_domain_dashboard_ban_list_to_response(domain_result)
|
||||
|
||||
|
||||
@router.get(
|
||||
@@ -180,7 +187,7 @@ async def get_bans_by_country(
|
||||
:class:`~app.models.ban.BansByCountryResponse` with per-country
|
||||
aggregation and the companion ban list.
|
||||
"""
|
||||
return await ban_service.bans_by_country(
|
||||
domain_result = await ban_service.bans_by_country(
|
||||
socket_path,
|
||||
range,
|
||||
source=source,
|
||||
@@ -191,6 +198,7 @@ async def get_bans_by_country(
|
||||
origin=origin,
|
||||
country_code=country_code,
|
||||
)
|
||||
return map_domain_bans_by_country_to_response(domain_result)
|
||||
|
||||
|
||||
@router.get(
|
||||
@@ -237,13 +245,14 @@ async def get_ban_trend(
|
||||
:class:`~app.models.ban.BanTrendResponse` with the ordered bucket
|
||||
list and the bucket-size label.
|
||||
"""
|
||||
return await ban_service.ban_trend(
|
||||
domain_result = await ban_service.ban_trend(
|
||||
socket_path,
|
||||
range,
|
||||
source=source,
|
||||
app_db=ban_ctx.db,
|
||||
origin=origin,
|
||||
)
|
||||
return map_domain_ban_trend_to_response(domain_result)
|
||||
|
||||
|
||||
@router.get(
|
||||
@@ -283,10 +292,11 @@ async def get_bans_by_jail(
|
||||
:class:`~app.models.ban.BansByJailResponse` with per-jail counts
|
||||
sorted descending and the total for the selected window.
|
||||
"""
|
||||
return await ban_service.bans_by_jail(
|
||||
domain_result = await ban_service.bans_by_jail(
|
||||
socket_path,
|
||||
range,
|
||||
source=source,
|
||||
app_db=ban_ctx.db,
|
||||
origin=origin,
|
||||
)
|
||||
return map_domain_bans_by_jail_to_response(domain_result)
|
||||
|
||||
Reference in New Issue
Block a user