2025-06-11 21:08:11 +00:00
|
|
|
from typing import Annotated
|
2025-06-14 13:39:37 +00:00
|
|
|
from api.auth import get_current_user
|
|
|
|
|
from api.config import DEV_TIER_ORIGINS, PROD_TIER_ORIGINS
|
2025-06-18 20:38:50 +00:00
|
|
|
from fastapi import Depends, FastAPI, Query
|
2025-06-14 13:39:37 +00:00
|
|
|
from api.auth import User
|
2025-06-18 20:38:50 +00:00
|
|
|
from models.listing import QueryParameters
|
2025-06-11 20:05:26 +00:00
|
|
|
from repositories.listing_repository import ListingRepository
|
|
|
|
|
from repositories.listing_repository import ListingRepository
|
|
|
|
|
from database import engine
|
2025-06-14 13:39:37 +00:00
|
|
|
from fastapi.middleware.cors import CORSMiddleware
|
2025-06-15 12:42:56 +00:00
|
|
|
from ui_exporter import export_immoweb
|
2025-06-11 20:05:26 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
app = FastAPI()
|
2025-06-11 21:08:11 +00:00
|
|
|
|
2025-06-14 13:39:37 +00:00
|
|
|
# Allow CORS (for React frontend)
|
|
|
|
|
app.add_middleware(
|
|
|
|
|
CORSMiddleware,
|
|
|
|
|
allow_origins=[*DEV_TIER_ORIGINS, *PROD_TIER_ORIGINS],
|
|
|
|
|
allow_methods=["*"],
|
|
|
|
|
allow_headers=["*"],
|
|
|
|
|
)
|
2025-06-11 20:05:26 +00:00
|
|
|
|
|
|
|
|
|
2025-06-14 15:36:38 +00:00
|
|
|
@app.get("/api/listing")
|
2025-06-14 13:39:37 +00:00
|
|
|
async def get_listing(user: Annotated[User, Depends(get_current_user)]):
|
2025-06-11 20:05:26 +00:00
|
|
|
repository = ListingRepository(engine)
|
2025-06-14 13:39:37 +00:00
|
|
|
listings = await repository.get_listings(limit=5)
|
2025-06-11 20:05:26 +00:00
|
|
|
return {"listings": listings}
|
2025-06-15 12:42:56 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
@app.get("/api/listing_geojson")
|
2025-06-18 20:38:50 +00:00
|
|
|
async def get_listing_geojson(
|
|
|
|
|
user: Annotated[User, Depends(get_current_user)],
|
|
|
|
|
query_parameters: Annotated[QueryParameters, Query()],
|
|
|
|
|
):
|
2025-06-15 12:42:56 +00:00
|
|
|
repository = ListingRepository(engine)
|
2025-06-18 20:38:50 +00:00
|
|
|
geojson_data = await export_immoweb(
|
|
|
|
|
repository, query_parameters=query_parameters, limit=None
|
|
|
|
|
)
|
2025-06-15 12:42:56 +00:00
|
|
|
return geojson_data
|