2026.06.05 frontend javítgatás és új belépési logika megvalósítva
This commit is contained in:
@@ -1,8 +1,9 @@
|
||||
# /opt/docker/dev/service_finder/backend/app/api/v1/endpoints/system_parameters.py
|
||||
import logging
|
||||
from fastapi import APIRouter, Depends, HTTPException, Query
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
from sqlalchemy import select, update
|
||||
from typing import List, Optional
|
||||
from sqlalchemy import select, update, and_
|
||||
from typing import List, Optional, Dict, Any
|
||||
|
||||
from app.api.deps import get_db, get_current_user
|
||||
from app.schemas.system import (
|
||||
@@ -11,9 +12,11 @@ from app.schemas.system import (
|
||||
SystemParameterCreate,
|
||||
)
|
||||
from app.models.system import SystemParameter, ParameterScope
|
||||
from app.models.identity.address import GeoPostalCode
|
||||
from app.models.identity import UserRole
|
||||
|
||||
router = APIRouter()
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
@router.get("/", response_model=List[SystemParameterResponse])
|
||||
@@ -41,6 +44,40 @@ async def list_system_parameters(
|
||||
return parameters
|
||||
|
||||
|
||||
@router.get("/zip-lookup", response_model=Dict[str, Any])
|
||||
async def zip_lookup(
|
||||
country_code: str = Query("HU", description="Országkód (pl. HU, AT, DE)"),
|
||||
zip_code: str = Query(..., min_length=1, description="Irányítószám"),
|
||||
db: AsyncSession = Depends(get_db),
|
||||
):
|
||||
"""
|
||||
Belső irányítószám lekérdező végpont.
|
||||
A system.geo_postal_codes táblában keres a megadott country_code és zip_code párosra.
|
||||
Ha megtalálja, visszaadja a várost: {"city": "Budapest"}.
|
||||
Ha nem találja, 404-es hibát dob.
|
||||
"""
|
||||
if not zip_code.strip():
|
||||
raise HTTPException(status_code=400, detail="zip_code is required")
|
||||
|
||||
stmt = select(GeoPostalCode).where(
|
||||
and_(
|
||||
GeoPostalCode.country_code == country_code,
|
||||
GeoPostalCode.zip_code == zip_code.strip(),
|
||||
)
|
||||
).limit(1)
|
||||
|
||||
result = await db.execute(stmt)
|
||||
postal_code = result.scalar_one_or_none()
|
||||
|
||||
if not postal_code:
|
||||
raise HTTPException(
|
||||
status_code=404,
|
||||
detail=f"No city found for country_code='{country_code}' and zip_code='{zip_code}'"
|
||||
)
|
||||
|
||||
return {"city": postal_code.city}
|
||||
|
||||
|
||||
@router.get("/{key}", response_model=SystemParameterResponse)
|
||||
async def get_system_parameter(
|
||||
key: str,
|
||||
@@ -128,5 +165,4 @@ async def update_system_parameter(
|
||||
await db.execute(stmt)
|
||||
await db.commit()
|
||||
await db.refresh(parameter)
|
||||
|
||||
return parameter
|
||||
|
||||
Reference in New Issue
Block a user