from fastapi import APIRouter, Depends, HTTPException from fastapi.security import OAuth2PasswordBearer from services.auth_service import AuthService from services.technical_issue_service import TechnicalIssueService from models.schemas import CreateTechnicalIssue, UpdateTechnicalIssue from config.database import get_db router = APIRouter() oauth2_scheme = OAuth2PasswordBearer(tokenUrl="/api/v1/auth/token") @router.post("/", status_code=201) async def create_issue(issue: CreateTechnicalIssue, db=Depends(get_db), token: str = Depends(oauth2_scheme)): return await TechnicalIssueService.create_issue(issue, db, token) @router.get("/{issue_id}") async def get_issue(issue_id: int, db=Depends(get_db), token: str = Depends(oauth2_scheme)): return await TechnicalIssueService.get_issue(issue_id, db, token) @router.get("/") async def get_all_issues(db=Depends(get_db), token: str = Depends(oauth2_scheme)): return await TechnicalIssueService.get_all_issues(db, token) @router.put("/{issue_id}") async def update_issue(issue_id: int, issue_data: UpdateTechnicalIssue, db=Depends(get_db), token: str = Depends(oauth2_scheme)): return await TechnicalIssueService.update_issue(issue_id, issue_data, db, token) @router.delete("/{issue_id}") async def delete_issue(issue_id: int, db=Depends(get_db), token: str = Depends(oauth2_scheme)): return await TechnicalIssueService.delete_issue(issue_id, db, token)