Initial Commit

This commit is contained in:
2026-06-11 15:05:08 +08:00
commit ea8e41e688
21 changed files with 2317 additions and 0 deletions
+51
View File
@@ -0,0 +1,51 @@
from typing import Annotated, Optional
from fastapi import FastAPI, Depends, Request
from sqlalchemy.orm import Session
from starlette import status
from starlette.staticfiles import StaticFiles
import models
from auth import get_db, get_current_user, router as auth_router
from config import templates
from models import Property
from properties import router as properties_router
app = FastAPI()
app.include_router(auth_router)
app.include_router(properties_router)
app.mount("/static", StaticFiles(directory="static"), name="static")
models.Base.metadata.create_all(bind=__import__("database", fromlist=["engine"]).engine)
db_dependency = Annotated[Session, Depends(get_db)]
user_dependency = Annotated[Optional[dict], Depends(get_current_user)]
@app.get("/", status_code=status.HTTP_200_OK)
async def homepage(request: Request, db: db_dependency, user: user_dependency):
# Show featured properties; if none are featured, show the latest listings
featured = (
db.query(Property)
.filter(Property.is_featured == True, Property.status == "active")
.limit(6)
.all()
)
if not featured:
featured = (
db.query(Property)
.filter(Property.status == "active")
.order_by(Property.created_at.desc())
.limit(6)
.all()
)
for prop in featured:
prop.primary_image = next(
(img for img in prop.images if img.is_primary),
prop.images[0] if prop.images else None,
)
return templates.TemplateResponse(request, "index.html", {
"user": user,
"properties": featured,
})