43 lines
1.3 KiB
Python
43 lines
1.3 KiB
Python
from fastapi import APIRouter, HTTPException, Depends
|
|
from pydantic import BaseModel
|
|
from typing import Optional
|
|
|
|
from app.db.database import get_connection
|
|
from app.core.dependencies import get_current_user
|
|
|
|
router = APIRouter()
|
|
|
|
class AddressCreate(BaseModel):
|
|
lat: float
|
|
lng: float
|
|
alias: Optional[str] = None
|
|
address_text: str
|
|
|
|
@router.post("/addresses")
|
|
async def create_address(
|
|
address: AddressCreate,
|
|
current_user: dict = Depends(get_current_user)
|
|
):
|
|
# Determine route based on location (simplified - in production use PostGIS)
|
|
route_id = "RUTA-01" # Mock: should calculate based on lat/lng
|
|
|
|
conn = get_connection()
|
|
cursor = conn.execute(
|
|
"INSERT INTO addresses (user_id, alias, lat, lng, route_id) VALUES (?, ?, ?, ?, ?) RETURNING id",
|
|
(current_user["id"], address.alias, address.lat, address.lng, route_id)
|
|
)
|
|
address_id = cursor.fetchone()[0]
|
|
conn.commit()
|
|
conn.close()
|
|
|
|
return {"id": address_id, "route_id": route_id}
|
|
|
|
@router.get("/addresses")
|
|
async def get_addresses(current_user: dict = Depends(get_current_user)):
|
|
conn = get_connection()
|
|
addresses = conn.execute(
|
|
"SELECT id, alias, lat, lng, route_id FROM addresses WHERE user_id = ?",
|
|
(current_user["id"],)
|
|
).fetchall()
|
|
conn.close()
|
|
return [dict(addr) for addr in addresses] |