from flask import Blueprint, jsonify, request from pydantic import ValidationError from app.extensions import db from app.models.homepage import HomepageConfig from app.schemas.homepage import HomepageConfigOut, HomepageHeroImagesIn from app.utils.auth import require_admin homepage_bp = Blueprint("homepage", __name__, url_prefix="/api/v1") @homepage_bp.get("/homepage-config") def get_homepage_config(): config = HomepageConfig.query.first() if config is None: return jsonify({"error": "Homepage config not found"}), 404 return jsonify(HomepageConfigOut.model_validate(config).model_dump(mode="json")) @homepage_bp.put("/admin/homepage-config") @require_admin def update_homepage_hero_images(): try: data = HomepageHeroImagesIn.model_validate(request.get_json() or {}) except ValidationError as e: return jsonify({"error": e.errors(include_url=False)}), 422 config = HomepageConfig.query.first() if config is None: config = HomepageConfig( hero_headline="Encontre o imóvel dos seus sonhos", hero_subheadline="Os melhores imóveis para comprar ou alugar na sua região", hero_cta_label="Ver Imóveis", hero_cta_url="/imoveis", featured_properties_limit=6, ) db.session.add(config) config.hero_image_url = data.hero_image_url config.hero_image_light_url = data.hero_image_light_url config.hero_image_dark_url = data.hero_image_dark_url db.session.commit() db.session.refresh(config) return jsonify(HomepageConfigOut.model_validate(config).model_dump(mode="json")), 200