feat: доменный нейминг изменен

This commit is contained in:
Artem Tsyrulnikov
2025-11-13 01:18:04 +03:00
parent a48d5e67cb
commit bba37fbb21
51 changed files with 1144 additions and 1154 deletions

View File

@@ -3,7 +3,7 @@ from fastapi import APIRouter
from src.controller.http.auth import auth_router
from src.controller.http.creatives import creatives_router
from src.controller.http.external_channels import external_channels_router
from src.controller.http.purchases import purchases_router
from src.controller.http.placements import placements_router
from src.controller.http.target_channels import target_channels_router
from src.controller.http.views import views_router
@@ -17,7 +17,7 @@ api_v1_router = APIRouter(prefix='/api/v1')
api_v1_router.include_router(target_channels_router)
api_v1_router.include_router(external_channels_router)
api_v1_router.include_router(creatives_router)
api_v1_router.include_router(purchases_router)
api_v1_router.include_router(placements_router)
api_v1_router.include_router(views_router)
api_router.include_router(api_v1_router)

View File

@@ -0,0 +1,76 @@
import uuid
from typing import Annotated
from fastapi import Depends
from fastapi.routing import APIRouter
from src import dependencies, dto
from src.adapter.jwt import JWTPayload
placements_router = APIRouter(prefix='/placements', tags=['placements'])
@placements_router.get('')
async def list_placements(
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
target_channel_id: uuid.UUID | None = None,
external_channel_id: uuid.UUID | None = None,
creative_id: uuid.UUID | None = None,
include_archived: bool = False,
) -> dto.GetPlacementsOutput:
input = dto.GetPlacementsInput(
user_id=current_user.user_id,
target_channel_id=target_channel_id,
external_channel_id=external_channel_id,
creative_id=creative_id,
include_archived=include_archived,
)
return await dependencies.get_usecase().get_placements(input=input)
@placements_router.get('/{placement_id}')
async def get_placement(
placement_id: uuid.UUID,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> dto.PlacementOutput:
input = dto.GetPlacementInput(
placement_id=placement_id,
user_id=current_user.user_id,
)
return await dependencies.get_usecase().get_placement(input=input)
@placements_router.post('')
async def create_placement(
request: dto.CreatePlacementInput,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> dto.PlacementOutput:
return await dependencies.get_usecase().create_placement(request, current_user.user_id)
@placements_router.patch('/{placement_id}')
async def update_placement(
placement_id: uuid.UUID,
request: dto.UpdatePlacementInput,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> dto.PlacementOutput:
return await dependencies.get_usecase().update_placement(
placement_id=placement_id,
input=request,
user_id=current_user.user_id,
)
@placements_router.delete('/{placement_id}')
async def delete_placement(
placement_id: uuid.UUID,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> None:
input = dto.DeletePlacementInput(
placement_id=placement_id,
user_id=current_user.user_id,
)
await dependencies.get_usecase().delete_placement(input)

View File

@@ -1,76 +0,0 @@
import uuid
from typing import Annotated
from fastapi import Depends
from fastapi.routing import APIRouter
from src import dependencies, dto
from src.adapter.jwt import JWTPayload
purchases_router = APIRouter(prefix='/purchases', tags=['purchases'])
@purchases_router.get('')
async def list_purchases(
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
target_channel_id: uuid.UUID | None = None,
external_channel_id: uuid.UUID | None = None,
creative_id: uuid.UUID | None = None,
include_archived: bool = False,
) -> dto.GetPurchasesOutput:
input = dto.GetPurchasesInput(
user_id=current_user.user_id,
target_channel_id=target_channel_id,
external_channel_id=external_channel_id,
creative_id=creative_id,
include_archived=include_archived,
)
return await dependencies.get_usecase().get_purchases(input=input)
@purchases_router.get('/{purchase_id}')
async def get_purchase(
purchase_id: uuid.UUID,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> dto.PurchaseOutput:
input = dto.GetPurchaseInput(
purchase_id=purchase_id,
user_id=current_user.user_id,
)
return await dependencies.get_usecase().get_purchase(input=input)
@purchases_router.post('')
async def create_purchase(
request: dto.CreatePurchaseInput,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> dto.PurchaseOutput:
return await dependencies.get_usecase().create_purchase(request, current_user.user_id)
@purchases_router.patch('/{purchase_id}')
async def update_purchase(
purchase_id: uuid.UUID,
request: dto.UpdatePurchaseInput,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> dto.PurchaseOutput:
return await dependencies.get_usecase().update_purchase(
purchase_id=purchase_id,
input=request,
user_id=current_user.user_id,
)
@purchases_router.delete('/{purchase_id}')
async def delete_purchase(
purchase_id: uuid.UUID,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> None:
input = dto.DeletePurchaseInput(
purchase_id=purchase_id,
user_id=current_user.user_id,
)
await dependencies.get_usecase().delete_purchase(input)

View File

@@ -8,19 +8,19 @@ from fastapi.routing import APIRouter
from src import dependencies, dto
from src.adapter.jwt import JWTPayload
views_router = APIRouter(prefix='/purchases/{purchase_id}/views', tags=['views'])
views_router = APIRouter(prefix='/placements/{placement_id}/views', tags=['views'])
@views_router.get('/history')
async def get_views_history(
purchase_id: uuid.UUID,
placement_id: uuid.UUID,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
from_date: datetime.datetime | None = None,
to_date: datetime.datetime | None = None,
) -> dto.GetViewsHistoryOutput:
"""Получить историю просмотров для закупа."""
input_data = dto.GetViewsHistoryInput(
purchase_id=purchase_id,
placement_id=placement_id,
user_id=current_user.user_id,
from_date=from_date,
to_date=to_date,
@@ -31,12 +31,12 @@ async def get_views_history(
@views_router.post('/fetch')
async def fetch_views(
purchase_id: uuid.UUID,
placement_id: uuid.UUID,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> dto.FetchViewsManuallyOutput:
"""Получить актуальные просмотры через Telegram API."""
input_data = dto.FetchViewsInputManually(
purchase_id=purchase_id,
placement_id=placement_id,
user_id=current_user.user_id,
)
@@ -45,13 +45,13 @@ async def fetch_views(
@views_router.post('/manual')
async def update_views_manually(
purchase_id: uuid.UUID,
placement_id: uuid.UUID,
views_count: int,
current_user: Annotated[JWTPayload, Depends(dependencies.get_current_user)],
) -> dto.PurchaseOutput:
) -> dto.PlacementOutput:
"""Обновить просмотры вручную."""
input_data = dto.UpdateViewsManuallyInput(
purchase_id=purchase_id,
placement_id=placement_id,
user_id=current_user.user_id,
views_count=views_count,
)