from typing import Annotated from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from backend.session import get_session from schemas.attribute import * from services.attribute import AttributeService from services.auth import authorized_user attribute_router = APIRouter( prefix='/attribute', tags=['attribute'], ) @attribute_router.get( '/', response_model=GetAttributesResponse, operation_id='get_all', dependencies=[Depends(authorized_user)] ) async def get_all( session: Annotated[AsyncSession, Depends(get_session)] ): return await AttributeService(session).get_all() @attribute_router.get( '/types', response_model=GetAttributeTypesResponse, operation_id='get_types', dependencies=[Depends(authorized_user)] ) async def get_types( session: Annotated[AsyncSession, Depends(get_session)] ): return await AttributeService(session).get_types() @attribute_router.post( '/', response_model=CreateAttributeResponse, operation_id='create', dependencies=[Depends(authorized_user)] ) async def create( request: CreateAttributeRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await AttributeService(session).create(request) @attribute_router.patch( '/', response_model=UpdateAttributeResponse, operation_id='update', dependencies=[Depends(authorized_user)] ) async def update( request: UpdateAttributeRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await AttributeService(session).update(request) @attribute_router.delete( '/{attribute_id}', response_model=DeleteAttributeResponse, operation_id='delete', dependencies=[Depends(authorized_user)] ) async def delete( session: Annotated[AsyncSession, Depends(get_session)], attribute_id: int, ): return await AttributeService(session).delete(attribute_id)