change domen
This commit is contained in:
@@ -7,7 +7,7 @@ from src.controller.http_v1.creatives import creatives_router
|
||||
from src.controller.http_v1.internal import internal_router
|
||||
from src.controller.http_v1.placements import placements_router
|
||||
from src.controller.http_v1.projects import projects_router
|
||||
from src.controller.http_v1.purchase_plans import purchase_plan_channels_router
|
||||
from src.controller.http_v1.purchases import purchase_router
|
||||
from src.controller.http_v1.views import views_router
|
||||
from src.controller.http_v1.workspace_invites import workspace_invites_router, workspace_invites_global_router
|
||||
from src.controller.http_v1.workspace_members import workspace_members_router
|
||||
@@ -21,7 +21,7 @@ api_v1_router.include_router(auth_router)
|
||||
api_v1_router.include_router(internal_router)
|
||||
api_v1_router.include_router(channels_router)
|
||||
api_v1_router.include_router(projects_router)
|
||||
api_v1_router.include_router(purchase_plan_channels_router)
|
||||
api_v1_router.include_router(purchase_router)
|
||||
api_v1_router.include_router(creatives_router)
|
||||
api_v1_router.include_router(placements_router)
|
||||
api_v1_router.include_router(views_router)
|
||||
|
||||
@@ -48,40 +48,4 @@ async def get_placement(
|
||||
return await deps.get_usecase().get_placement(input=input)
|
||||
|
||||
|
||||
@placements_router.post('')
|
||||
async def create_placement(
|
||||
request: dto.CreatePlacementInput,
|
||||
workspace_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> dto.PlacementOutput:
|
||||
return await deps.get_usecase().create_placement(request, current_user.user_id, workspace_id)
|
||||
|
||||
|
||||
@placements_router.patch('/{placement_id}')
|
||||
async def update_placement(
|
||||
placement_id: uuid.UUID,
|
||||
request: dto.UpdatePlacementInput,
|
||||
workspace_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> dto.PlacementOutput:
|
||||
return await deps.get_usecase().update_placement(
|
||||
placement_id=placement_id,
|
||||
input=request,
|
||||
user_id=current_user.user_id,
|
||||
workspace_id=workspace_id,
|
||||
)
|
||||
|
||||
|
||||
@placements_router.delete('/{placement_id}')
|
||||
async def delete_placement(
|
||||
placement_id: uuid.UUID,
|
||||
workspace_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> None:
|
||||
input = dto.DeletePlacementInput(
|
||||
placement_id=placement_id,
|
||||
user_id=current_user.user_id,
|
||||
workspace_id=workspace_id,
|
||||
)
|
||||
|
||||
await deps.get_usecase().delete_placement(input)
|
||||
# Placement creation/updates are handled by worker; API exposes only read endpoints.
|
||||
|
||||
@@ -12,9 +12,8 @@ projects_router = APIRouter(prefix='/workspaces/{workspace_id}/projects', tags=[
|
||||
|
||||
|
||||
@projects_router.get('')
|
||||
async def get_workspace_projects(
|
||||
workspace_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
async def get_projects(
|
||||
workspace_id: uuid.UUID, current_user: Annotated[JWTPayload, Depends(deps.get_current_user)]
|
||||
) -> Page[dto.ProjectOutput]:
|
||||
input = dto.GetWorkspaceProjectsInput(
|
||||
user_id=current_user.user_id,
|
||||
@@ -32,18 +31,9 @@ async def update_project_invite_link_type(
|
||||
input: dto.UpdateProjectInviteLinkTypeInput,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> dto.ProjectOutput:
|
||||
project = await deps.get_usecase().update_project_invite_link_type(
|
||||
return await deps.get_usecase().update_project_invite_link_type(
|
||||
workspace_id=workspace_id,
|
||||
project_id=project_id,
|
||||
invite_link_type=input.invite_link_type,
|
||||
purchase_invite_type_default=input.purchase_invite_type_default,
|
||||
user_id=current_user.user_id,
|
||||
)
|
||||
|
||||
return dto.ProjectOutput(
|
||||
id=project.id,
|
||||
telegram_id=project.channel.telegram_id,
|
||||
title=project.channel.title,
|
||||
username=project.channel.username,
|
||||
status=project.status,
|
||||
invite_link_type=project.invite_link_type,
|
||||
)
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
import uuid
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import Depends
|
||||
from fastapi.routing import APIRouter
|
||||
from fastapi_pagination import Page, paginate
|
||||
|
||||
from src import deps, dto
|
||||
from src.adapter.jwt import JWTPayload
|
||||
|
||||
purchase_plan_channels_router = APIRouter(
|
||||
prefix='/workspaces/{workspace_id}/projects/{project_id}/purchase-plan/channels',
|
||||
tags=['purchase plan'],
|
||||
)
|
||||
|
||||
|
||||
@purchase_plan_channels_router.get('')
|
||||
async def get_purchase_plan_channels(
|
||||
workspace_id: uuid.UUID,
|
||||
project_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> Page[dto.PurchasePlanChannelOutput]:
|
||||
input = dto.GetPurchasePlanChannelsInput(
|
||||
user_id=current_user.user_id,
|
||||
workspace_id=workspace_id,
|
||||
project_id=project_id,
|
||||
)
|
||||
result = await deps.get_usecase().get_purchase_plan_channels(input=input)
|
||||
return paginate(result) # type: ignore[no-any-return]
|
||||
|
||||
|
||||
@purchase_plan_channels_router.post('')
|
||||
async def attach_channel_to_purchase_plan(
|
||||
request: dto.AttachChannelToPurchasePlanInput,
|
||||
workspace_id: uuid.UUID,
|
||||
project_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> dto.PurchasePlanChannelOutput:
|
||||
return await deps.get_usecase().attach_channel_to_purchase_plan(
|
||||
project_id=project_id,
|
||||
workspace_id=workspace_id,
|
||||
user_id=current_user.user_id,
|
||||
input=request,
|
||||
)
|
||||
|
||||
|
||||
@purchase_plan_channels_router.patch('/{channel_id}')
|
||||
async def update_purchase_plan_channel(
|
||||
channel_id: uuid.UUID,
|
||||
request: dto.UpdatePurchasePlanChannelInput,
|
||||
workspace_id: uuid.UUID,
|
||||
project_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> dto.PurchasePlanChannelOutput:
|
||||
return await deps.get_usecase().update_purchase_plan_channel(
|
||||
channel_id=channel_id,
|
||||
project_id=project_id,
|
||||
workspace_id=workspace_id,
|
||||
user_id=current_user.user_id,
|
||||
input=request,
|
||||
)
|
||||
|
||||
|
||||
@purchase_plan_channels_router.delete('/{channel_id}')
|
||||
async def remove_purchase_plan_channel(
|
||||
channel_id: uuid.UUID,
|
||||
workspace_id: uuid.UUID,
|
||||
project_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> None:
|
||||
await deps.get_usecase().remove_purchase_plan_channel(
|
||||
channel_id=channel_id,
|
||||
project_id=project_id,
|
||||
workspace_id=workspace_id,
|
||||
user_id=current_user.user_id,
|
||||
)
|
||||
60
src/controller/http_v1/purchases.py
Normal file
60
src/controller/http_v1/purchases.py
Normal file
@@ -0,0 +1,60 @@
|
||||
import uuid
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import Depends
|
||||
from fastapi.routing import APIRouter
|
||||
from fastapi_pagination import Page, paginate
|
||||
|
||||
from src import deps, dto
|
||||
from src.adapter.jwt import JWTPayload
|
||||
|
||||
purchase_router = APIRouter(
|
||||
prefix='/workspaces/{workspace_id}/projects/{project_id}/purchase',
|
||||
tags=['purchase'],
|
||||
)
|
||||
|
||||
|
||||
@purchase_router.post('')
|
||||
async def create_purchase(
|
||||
request: dto.CreatePurchaseInput,
|
||||
workspace_id: uuid.UUID,
|
||||
project_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> dto.PurchaseOutput:
|
||||
return await deps.get_usecase().create_purchase(
|
||||
project_id=project_id,
|
||||
workspace_id=workspace_id,
|
||||
user_id=current_user.user_id,
|
||||
input=request,
|
||||
)
|
||||
|
||||
|
||||
@purchase_router.get('')
|
||||
async def get_purchases(
|
||||
workspace_id: uuid.UUID,
|
||||
project_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> Page[dto.PurchaseOutput]:
|
||||
input = dto.GetPurchasesInput(
|
||||
user_id=current_user.user_id,
|
||||
workspace_id=workspace_id,
|
||||
project_id=project_id,
|
||||
)
|
||||
result = await deps.get_usecase().get_purchases(input=input)
|
||||
return paginate(result) # type: ignore[no-any-return]
|
||||
|
||||
|
||||
@purchase_router.get('/{purchase_id}')
|
||||
async def get_purchase(
|
||||
purchase_id: uuid.UUID,
|
||||
workspace_id: uuid.UUID,
|
||||
project_id: uuid.UUID,
|
||||
current_user: Annotated[JWTPayload, Depends(deps.get_current_user)],
|
||||
) -> dto.PurchaseOutput:
|
||||
input = dto.GetPurchaseInput(
|
||||
user_id=current_user.user_id,
|
||||
workspace_id=workspace_id,
|
||||
project_id=project_id,
|
||||
purchase_id=purchase_id,
|
||||
)
|
||||
return await deps.get_usecase().get_purchase(input=input)
|
||||
Reference in New Issue
Block a user