from typing import Annotated from fastapi import APIRouter, Depends from sqlalchemy.ext.asyncio import AsyncSession from backend.session import get_session from schemas.barcode import (GetBarcodeTemplateByIdResponse, GetBarcodeTemplateByIdRequest, BarcodeTemplateCreateResponse, BarcodeTemplateCreateRequest, GetAllBarcodeTemplateAttributesResponse, CreateBarcodeTemplateAttributeResponse, CreateBarcodeTemplateAttributeRequest, BarcodeTemplateUpdateResponse, BarcodeTemplateUpdateRequest, GetAllBarcodeTemplatesResponse) from services.barcode import BarcodeService barcode_router = APIRouter( prefix='/barcode', tags=['barcode'], ) # region Templates @barcode_router.get( '/template/get', response_model=GetBarcodeTemplateByIdResponse, operation_id='get_barcode_template_by_id' ) async def get_barcode_template_by_id( request: GetBarcodeTemplateByIdRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await BarcodeService(session).get_barcode_template_by_id(request) @barcode_router.get( '/template/get-all', response_model=GetAllBarcodeTemplatesResponse, operation_id='get_all_barcode_templates' ) async def get_all_barcode_templates( session: Annotated[AsyncSession, Depends(get_session)] ): return await BarcodeService(session).get_all_barcode_templates() @barcode_router.post( '/template/create', response_model=BarcodeTemplateCreateResponse, operation_id='create_barcode_template' ) async def create_barcode_template( request: BarcodeTemplateCreateRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await BarcodeService(session).create_barcode_template(request) @barcode_router.post( '/template/update', response_model=BarcodeTemplateUpdateResponse, operation_id='update_barcode_template' ) async def update_barcode_template( request: BarcodeTemplateUpdateRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await BarcodeService(session).update_barcode_template(request) # endregion # region Template attributes @barcode_router.get( '/template/attribute/get-all', response_model=GetAllBarcodeTemplateAttributesResponse, operation_id='get_all_barcode_template_attributes' ) async def get_all_barcode_template_attributes( session: Annotated[AsyncSession, Depends(get_session)] ): return await BarcodeService(session).get_all_barcode_template_attributes() @barcode_router.post( '/template/attribute/create', response_model=CreateBarcodeTemplateAttributeResponse, operation_id='create_barcode_template_attribute' ) async def create_barcode_template_attribute( request: CreateBarcodeTemplateAttributeRequest, session: Annotated[AsyncSession, Depends(get_session)] ): return await BarcodeService(session).create_barcode_template_attribute(request) # endregion