feat: доменный нейминг изменен
This commit is contained in:
@@ -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)
|
||||
|
||||
76
src/controller/http/placements.py
Normal file
76
src/controller/http/placements.py
Normal 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)
|
||||
@@ -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)
|
||||
@@ -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,
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user