- PATCH /api/admin/{resource}/{id} — ویرایش جزئی؛ فقط فیلدهای ارسالشده
بهروزرسانی میشوند (PUT قبلاً کل رکورد را جایگزین میکرد و برای
ویرایش زنده قابل استفاده نبود). اسکیماهای Patch بهصورت خودکار از
اسکیماهای In با create_model ساخته میشوند (هر ۲۴ منبع).
- ستون position برای ۱۴ جدول مجموعهای (خدمات، پروژهها، مقالات، نظرات،
سوالات، تیم، تایملاین، آمار، چرا آرامش، مدلهای سرمایهگذاری، مراحل کار،
دفاتر، گالری، منو) — مهاجرت سبک idempotent در startup و seed
(ALTER TABLE ADD COLUMN IF NOT EXISTS) تا دیتابیسهای موجود هم ارتقا یابند
- POST /api/admin/{resource}/reorder — ذخیره ترتیب جدید بر اساس لیست id
- خواندن عمومی بر اساس (position, id) مرتب میشود؛ رکورد جدید در انتهای لیست
- seed فقط جدولهای خالی را با position صحیح پر میکند
44 lines
1.3 KiB
Python
44 lines
1.3 KiB
Python
from fastapi import FastAPI
|
|
from fastapi.middleware.cors import CORSMiddleware
|
|
|
|
from . import models # noqa: F401 — ثبت مدلها پیش از ساخت جداول
|
|
from .api import admin, forms, public
|
|
from .config import settings
|
|
from .database import Base, engine, run_light_migrations
|
|
|
|
Base.metadata.create_all(bind=engine)
|
|
run_light_migrations()
|
|
|
|
app = FastAPI(
|
|
title="Aramesh Building Group API",
|
|
description=(
|
|
"بکاند سایت گروه ساختمانی آرامش — API محتوای سایت، فرم تماس و خبرنامه، "
|
|
"و پنل مدیریت با احراز هویت JWT."
|
|
),
|
|
version="1.0.0",
|
|
docs_url="/docs",
|
|
redoc_url="/redoc",
|
|
)
|
|
|
|
app.add_middleware(
|
|
CORSMiddleware,
|
|
allow_origins=settings.cors_origins,
|
|
allow_credentials=False,
|
|
allow_methods=["*"],
|
|
allow_headers=["*"],
|
|
)
|
|
|
|
app.include_router(public.router, prefix="/api", tags=["عمومی"])
|
|
app.include_router(forms.router, prefix="/api", tags=["فرمها"])
|
|
app.include_router(admin.auth_router, prefix="/api", tags=["احراز هویت"])
|
|
app.include_router(admin.router, prefix="/api/admin", tags=["پنل مدیریت"])
|
|
|
|
|
|
@app.get("/")
|
|
def root():
|
|
return {
|
|
"app": "Aramesh Building Group API",
|
|
"docs": "/docs",
|
|
"health": "/api/health",
|
|
}
|