64 lines
1.5 KiB
Python
64 lines
1.5 KiB
Python
from typing import Annotated
|
|
|
|
from fastapi import APIRouter, Depends
|
|
from sqlalchemy.ext.asyncio import AsyncSession
|
|
|
|
from backend.session import get_session
|
|
from schemas.card_tag import *
|
|
from services.auth import authorized_user
|
|
from services.card_tag import CardTagService
|
|
|
|
card_tag_router = APIRouter(
|
|
prefix='/card-tag',
|
|
tags=['card-tag'],
|
|
dependencies=[Depends(authorized_user)]
|
|
)
|
|
|
|
|
|
@card_tag_router.post(
|
|
'/',
|
|
operation_id='create_tag',
|
|
response_model=CreateTagResponse
|
|
)
|
|
async def create_tag(
|
|
request: CreateTagRequest,
|
|
session: Annotated[AsyncSession, Depends(get_session)]
|
|
):
|
|
return await CardTagService(session).create(request)
|
|
|
|
|
|
@card_tag_router.patch(
|
|
'/',
|
|
operation_id='update_tag',
|
|
response_model=UpdateTagResponse
|
|
)
|
|
async def update_tag(
|
|
request: UpdateTagRequest,
|
|
session: Annotated[AsyncSession, Depends(get_session)]
|
|
):
|
|
return await CardTagService(session).update(request)
|
|
|
|
|
|
@card_tag_router.delete(
|
|
'/{card_tag_id}',
|
|
response_model=DeleteTagResponse,
|
|
operation_id="delete_tag",
|
|
)
|
|
async def delete_tag(
|
|
session: Annotated[AsyncSession, Depends(get_session)],
|
|
card_tag_id: int,
|
|
):
|
|
return await CardTagService(session).delete(card_tag_id)
|
|
|
|
|
|
@card_tag_router.post(
|
|
'/switch',
|
|
response_model=SwitchTagResponse,
|
|
operation_id='switch_tag',
|
|
)
|
|
async def switch_tag(
|
|
session: Annotated[AsyncSession, Depends(get_session)],
|
|
request: SwitchTagRequest,
|
|
):
|
|
return await CardTagService(session).switch_tag(request)
|