"""انتهای عمومی — خواندن محتوای سایت بدون نیاز به احراز هویت.""" from fastapi import APIRouter, Depends, HTTPException from sqlalchemy.orm import Session from ..database import get_db from .. import models from ..schemas import ( ArticleOut, BeforeAfterOut, BrandOut, FaqOut, ProjectOut, ServiceOut, StatOut, TeamMemberOut, TestimonialOut, TimelineItemOut, WhyUsItemOut, ) router = APIRouter() @router.get("/health") def health(): return {"status": "ok", "app": "Aramesh Building Group API"} @router.get("/brand", response_model=BrandOut) def get_brand(db: Session = Depends(get_db)): brand = db.query(models.Brand).first() if brand is None: raise HTTPException(status_code=404, detail="اطلاعات برند یافت نشد") return brand @router.get("/services", response_model=list[ServiceOut]) def get_services(db: Session = Depends(get_db)): return db.query(models.Service).all() @router.get("/projects", response_model=list[ProjectOut]) def get_projects(db: Session = Depends(get_db)): return db.query(models.Project).order_by(models.Project.id).all() @router.get("/projects/{slug}", response_model=ProjectOut) def get_project(slug: str, db: Session = Depends(get_db)): project = db.query(models.Project).filter(models.Project.slug == slug).first() if project is None: raise HTTPException(status_code=404, detail="پروژه یافت نشد") return project @router.get("/articles", response_model=list[ArticleOut]) def get_articles(db: Session = Depends(get_db)): return db.query(models.Article).order_by(models.Article.id).all() @router.get("/articles/{slug}", response_model=ArticleOut) def get_article(slug: str, db: Session = Depends(get_db)): article = db.query(models.Article).filter(models.Article.slug == slug).first() if article is None: raise HTTPException(status_code=404, detail="مقاله یافت نشد") return article @router.get("/testimonials", response_model=list[TestimonialOut]) def get_testimonials(db: Session = Depends(get_db)): return db.query(models.Testimonial).all() @router.get("/faqs", response_model=list[FaqOut]) def get_faqs(db: Session = Depends(get_db)): return db.query(models.Faq).all() @router.get("/team", response_model=list[TeamMemberOut]) def get_team(db: Session = Depends(get_db)): return db.query(models.TeamMember).all() @router.get("/timeline", response_model=list[TimelineItemOut]) def get_timeline(db: Session = Depends(get_db)): return db.query(models.TimelineItem).order_by(models.TimelineItem.id).all() @router.get("/stats", response_model=list[StatOut]) def get_stats(db: Session = Depends(get_db)): return db.query(models.Stat).all() @router.get("/why-us", response_model=list[WhyUsItemOut]) def get_why_us(db: Session = Depends(get_db)): return db.query(models.WhyUsItem).all() @router.get("/before-after", response_model=BeforeAfterOut) def get_before_after(db: Session = Depends(get_db)): item = db.query(models.BeforeAfter).first() if item is None: raise HTTPException(status_code=404, detail="بخش قبل/بعد یافت نشد") return item @router.get("/site") def get_site(db: Session = Depends(get_db)): """همه محتوای سایت در یک درخواست — مناسب برای بارگذاری اولیه فرانت‌اند.""" return { "brand": db.query(models.Brand).first(), "services": db.query(models.Service).all(), "projects": db.query(models.Project).order_by(models.Project.id).all(), "articles": db.query(models.Article).order_by(models.Article.id).all(), "testimonials": db.query(models.Testimonial).all(), "faqs": db.query(models.Faq).all(), "team": db.query(models.TeamMember).all(), "timeline": db.query(models.TimelineItem).order_by(models.TimelineItem.id).all(), "stats": db.query(models.Stat).all(), "why_us": db.query(models.WhyUsItem).all(), "before_after": db.query(models.BeforeAfter).first(), }