اولین نسخه بک‌اند آرامش پلازا

This commit is contained in:
Behrad
2026-08-27 15:15:12 +03:30
commit 854309f976
26 changed files with 1861 additions and 0 deletions
+160
View File
@@ -0,0 +1,160 @@
import enum
from datetime import datetime
from sqlalchemy import String, Integer, Text, DateTime, Boolean, Enum, JSON
from sqlalchemy.orm import Mapped, mapped_column
from app.database import Base
class ProjectStatus(str, enum.Enum):
done = "done"
progress = "progress"
class AdminUser(Base):
__tablename__ = "admin_users"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
username: Mapped[str] = mapped_column(String(64), unique=True, index=True)
hashed_password: Mapped[str] = mapped_column(String(255))
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
class Brand(Base):
"""اطلاعات کلی برند - همیشه فقط یک رکورد (id=1) دارد."""
__tablename__ = "brand"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
name: Mapped[str] = mapped_column(String(255), default="")
logo: Mapped[str] = mapped_column(String(1024), default="")
hero: Mapped[str] = mapped_column(String(1024), default="")
contact_bg: Mapped[str] = mapped_column(String(1024), default="")
phone: Mapped[str] = mapped_column(String(64), default="")
phone_href: Mapped[str] = mapped_column(String(64), default="")
email: Mapped[str] = mapped_column(String(255), default="")
address: Mapped[str] = mapped_column(String(1024), default="")
class Service(Base):
__tablename__ = "services"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
title: Mapped[str] = mapped_column(String(255))
desc: Mapped[str] = mapped_column(Text)
icon: Mapped[str] = mapped_column(String(64))
order: Mapped[int] = mapped_column(Integer, default=0)
class Project(Base):
__tablename__ = "projects"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
slug: Mapped[str] = mapped_column(String(255), unique=True, index=True)
title: Mapped[str] = mapped_column(String(255))
location: Mapped[str] = mapped_column(String(255))
year: Mapped[str] = mapped_column(String(64))
status: Mapped[ProjectStatus] = mapped_column(Enum(ProjectStatus), default=ProjectStatus.progress)
image: Mapped[str] = mapped_column(String(1024))
gallery: Mapped[list] = mapped_column(JSON, default=list)
area: Mapped[str] = mapped_column(String(128))
floors: Mapped[str] = mapped_column(String(128))
units: Mapped[str] = mapped_column(String(128))
client: Mapped[str] = mapped_column(String(255))
summary: Mapped[str] = mapped_column(Text)
body: Mapped[list] = mapped_column(JSON, default=list)
order: Mapped[int] = mapped_column(Integer, default=0)
class Stat(Base):
__tablename__ = "stats"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
value: Mapped[int] = mapped_column(Integer)
suffix: Mapped[str] = mapped_column(String(32), default="")
label: Mapped[str] = mapped_column(String(255))
order: Mapped[int] = mapped_column(Integer, default=0)
class TimelineItem(Base):
__tablename__ = "timeline_items"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
year: Mapped[str] = mapped_column(String(64))
title: Mapped[str] = mapped_column(String(255))
desc: Mapped[str] = mapped_column(Text)
image: Mapped[str] = mapped_column(String(1024))
order: Mapped[int] = mapped_column(Integer, default=0)
class WhyUsItem(Base):
__tablename__ = "why_us_items"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
title: Mapped[str] = mapped_column(String(255))
desc: Mapped[str] = mapped_column(Text)
order: Mapped[int] = mapped_column(Integer, default=0)
class Testimonial(Base):
__tablename__ = "testimonials"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
name: Mapped[str] = mapped_column(String(255))
role: Mapped[str] = mapped_column(String(255))
quote: Mapped[str] = mapped_column(Text)
order: Mapped[int] = mapped_column(Integer, default=0)
class TeamMember(Base):
__tablename__ = "team_members"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
name: Mapped[str] = mapped_column(String(255))
role: Mapped[str] = mapped_column(String(255))
bio: Mapped[str] = mapped_column(Text)
photo: Mapped[str] = mapped_column(String(1024), default="")
order: Mapped[int] = mapped_column(Integer, default=0)
class Article(Base):
__tablename__ = "articles"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
slug: Mapped[str] = mapped_column(String(255), unique=True, index=True)
title: Mapped[str] = mapped_column(String(255))
date: Mapped[str] = mapped_column(String(64))
category: Mapped[str] = mapped_column(String(128))
image: Mapped[str] = mapped_column(String(1024))
read: Mapped[str] = mapped_column(String(32))
excerpt: Mapped[str] = mapped_column(Text)
body: Mapped[list] = mapped_column(JSON, default=list)
order: Mapped[int] = mapped_column(Integer, default=0)
class Faq(Base):
__tablename__ = "faqs"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
q: Mapped[str] = mapped_column(String(512))
a: Mapped[str] = mapped_column(Text)
order: Mapped[int] = mapped_column(Integer, default=0)
class ContactLead(Base):
__tablename__ = "contact_leads"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
name: Mapped[str] = mapped_column(String(255), default="")
phone: Mapped[str] = mapped_column(String(64))
note: Mapped[str] = mapped_column(Text, default="")
is_read: Mapped[bool] = mapped_column(Boolean, default=False)
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)
class NewsletterSubscriber(Base):
__tablename__ = "newsletter_subscribers"
id: Mapped[int] = mapped_column(Integer, primary_key=True)
email: Mapped[str] = mapped_column(String(255), unique=True, index=True)
created_at: Mapped[datetime] = mapped_column(DateTime, default=datetime.utcnow)