Files
aramesh-backend/backend/app/api/public.py
T
MMD 8bb303dda2 ری‌برند: تغییر نام «آرامش پلازا» به «گروه ساختمانی آرامش» در بک‌اند و مستندات
- main.py: عنوان و توضیحات اپ FastAPI و نام اپ در پاسخ سلامت (ArameshPlaza API به Aramesh Building Group API)
- api/public.py: نام اپ در پاسخ سلامت
- seed.py و seed_data.py: توضیحات اسکریپت و داده‌های اولیه (نام برند، ایمیل، تایم‌لاین، تستیمونیال، FAQ)
- README و README بک‌اند: متن‌های مرتبط با برند

شناسه‌های داخلی دیتابیس (نام دیتابیس arameshplaza) بدون تغییر باقی مانده‌اند.
2026-08-31 17:52:36 +03:30

123 lines
4.0 KiB
Python

"""انتهای عمومی — خواندن محتوای سایت بدون نیاز به احراز هویت."""
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(),
}