mirror of
https://gitlab.com/MoonTestUse1/AdministrationItDepartmens.git
synced 2025-08-14 00:25:46 +02:00
11
This commit is contained in:
@@ -5,40 +5,24 @@ from ..database import get_db
|
|||||||
from ..crud import requests as requests_crud
|
from ..crud import requests as requests_crud
|
||||||
from ..models.request import RequestCreate
|
from ..models.request import RequestCreate
|
||||||
from ..bot.notifications import send_notification
|
from ..bot.notifications import send_notification
|
||||||
from logging import getLogger
|
from ..utils.loggers import request_logger
|
||||||
|
|
||||||
router = APIRouter()
|
router = APIRouter()
|
||||||
logger = getLogger(__name__)
|
|
||||||
|
|
||||||
@router.post("/")
|
@router.post("/")
|
||||||
async def create_request(request: RequestCreate, db: Session = Depends(get_db)):
|
async def create_request(request: RequestCreate, db: Session = Depends(get_db)):
|
||||||
"""Create new request"""
|
"""Create new request"""
|
||||||
try:
|
try:
|
||||||
db_request = requests_crud.create_request(db, request)
|
db_request = requests_crud.create_request(db, request)
|
||||||
# Send notification to Telegram
|
request_logger.info(
|
||||||
|
"Request created",
|
||||||
|
extra={"request_id": db_request.id, "employee_id": request.employee_id}
|
||||||
|
)
|
||||||
await send_notification(requests_crud.get_request_details(db, db_request.id))
|
await send_notification(requests_crud.get_request_details(db, db_request.id))
|
||||||
return db_request
|
return db_request
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
logger.error(f"Error creating request: {e}", exc_info=True)
|
request_logger.error(
|
||||||
raise HTTPException(status_code=500, detail="Ошибка при создании заявки")
|
f"Error creating request: {e}",
|
||||||
|
extra={"employee_id": request.employee_id}
|
||||||
@router.get("/")
|
)
|
||||||
async def get_requests(skip: int = 0, limit: int = 100, db: Session = Depends(get_db)):
|
raise HTTPException(status_code=500, detail="Ошибка при создании заявки")
|
||||||
"""Get all requests"""
|
|
||||||
try:
|
|
||||||
return requests_crud.get_requests(db, skip, limit)
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"Error fetching requests: {e}", exc_info=True)
|
|
||||||
raise HTTPException(status_code=500, detail="Ошибка при получении заявок")
|
|
||||||
|
|
||||||
@router.get("/{request_id}")
|
|
||||||
async def get_request(request_id: int, db: Session = Depends(get_db)):
|
|
||||||
"""Get request by ID"""
|
|
||||||
try:
|
|
||||||
request = requests_crud.get_request_details(db, request_id)
|
|
||||||
if not request:
|
|
||||||
raise HTTPException(status_code=404, detail="Заявка не найдена")
|
|
||||||
return request
|
|
||||||
except Exception as e:
|
|
||||||
logger.error(f"Error fetching request: {e}", exc_info=True)
|
|
||||||
raise HTTPException(status_code=500, detail="Ошибка при получении заявки")
|
|
24
backend/app/utils/loggers.py
Normal file
24
backend/app/utils/loggers.py
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
"""Logging utilities"""
|
||||||
|
import logging
|
||||||
|
from typing import Any
|
||||||
|
|
||||||
|
class CustomLogger:
|
||||||
|
def __init__(self, name: str):
|
||||||
|
self.logger = logging.getLogger(name)
|
||||||
|
|
||||||
|
def info(self, message: str, extra: dict[str, Any] | None = None):
|
||||||
|
self.logger.info(message, extra=extra)
|
||||||
|
|
||||||
|
def error(self, message: str, exc_info: bool = True, extra: dict[str, Any] | None = None):
|
||||||
|
self.logger.error(message, exc_info=exc_info, extra=extra)
|
||||||
|
|
||||||
|
def warning(self, message: str, extra: dict[str, Any] | None = None):
|
||||||
|
self.logger.warning(message, extra=extra)
|
||||||
|
|
||||||
|
def debug(self, message: str, extra: dict[str, Any] | None = None):
|
||||||
|
self.logger.debug(message, extra=extra)
|
||||||
|
|
||||||
|
# Create loggers
|
||||||
|
request_logger = CustomLogger("app.requests")
|
||||||
|
auth_logger = CustomLogger("app.auth")
|
||||||
|
db_logger = CustomLogger("app.database")
|
Reference in New Issue
Block a user