fix(db): پهن‌کردن ستون‌های location/usage پروژه به ۲۵۶ نویسه

نشانی انگلیسی ترانویسی‌شده از ۱۲۸ نویسه بلندتر می‌شود (بلندترین: ۱۶۱) و درج
ترجمهٔ ۶۵ پروژه با خطای StringDataRightTruncation شکست خورد. مدل + مهاجرت
ALTER COLUMN TYPE (idempotent) اضافه شد.
This commit is contained in:
aramesh-site deploy
2026-10-13 12:48:37 +00:00
parent 66e68964f6
commit daa98d0f16
2 changed files with 19 additions and 4 deletions
+5
View File
@@ -153,6 +153,11 @@ def run_ddl_migrations() -> None:
conn.execute(
text("ALTER TABLE articles ADD COLUMN IF NOT EXISTS seo_keyphrase VARCHAR(128) NOT NULL DEFAULT ''")
)
# نشانی/کاربری پروژه: نشانی انگلیسی (ترانویسی) از ۱۲۸ نویسه بلندتر می‌شود
conn.execute(text("ALTER TABLE projects ALTER COLUMN location TYPE VARCHAR(256)"))
conn.execute(text("ALTER TABLE projects ALTER COLUMN location_en TYPE VARCHAR(256)"))
conn.execute(text("ALTER TABLE projects ALTER COLUMN usage TYPE VARCHAR(256)"))
conn.execute(text("ALTER TABLE projects ALTER COLUMN usage_en TYPE VARCHAR(256)"))
# نام نویسنده و توضیحات سئوی اختصاصی مقاله — فیلدهایی که پنل قبلاً نمایش می‌داد ولی در دیتابیس نبودند
conn.execute(
text("ALTER TABLE articles ADD COLUMN IF NOT EXISTS author VARCHAR(128) NOT NULL DEFAULT ''")
+14 -4
View File
@@ -64,8 +64,8 @@ class Project(Base):
slug: Mapped[str] = mapped_column(String(128), unique=True, index=True)
title: Mapped[str] = mapped_column(String(256))
title_en: Mapped[str] = mapped_column(String(256), default="")
location: Mapped[str] = mapped_column(String(128), default="")
location_en: Mapped[str] = mapped_column(String(128), default="")
location: Mapped[str] = mapped_column(String(256), default="")
location_en: Mapped[str] = mapped_column(String(256), default="")
year: Mapped[str] = mapped_column(String(64), default="")
year_en: Mapped[str] = mapped_column(String(64), default="")
status: Mapped[str] = mapped_column(String(16), default="done") # done | progress
@@ -85,12 +85,17 @@ class Project(Base):
# مشخصات تکمیلی پروژه — به درخواست تیم: نوع پروژه و کاربری
project_type: Mapped[str] = mapped_column(String(128), default="")
project_type_en: Mapped[str] = mapped_column(String(128), default="")
usage: Mapped[str] = mapped_column(String(128), default="")
usage_en: Mapped[str] = mapped_column(String(128), default="")
usage: Mapped[str] = mapped_column(String(256), default="")
usage_en: Mapped[str] = mapped_column(String(256), default="")
summary: Mapped[str] = mapped_column(Text, default="")
summary_en: Mapped[str] = mapped_column(Text, default="")
body: Mapped[list] = mapped_column(JSON, default=list)
body_en: Mapped[list] = mapped_column(JSON, default=list)
# آخرین به‌روزرسانی رکورد — فقط برای lastmod نقشه سایت؛ ردیف‌های قدیمی NULL می‌مانند
# تا lastmod جعلی تولید نشود (با هر ذخیرهٔ پنل پر می‌شود)
updated_at: Mapped[datetime | None] = mapped_column(
DateTime(timezone=True), default=utcnow, onupdate=utcnow, nullable=True
)
class Article(Base):
@@ -138,6 +143,11 @@ class Article(Base):
# هشتگ‌ها/برچسب‌ها — هر زبان جدا
tags: Mapped[list] = mapped_column(JSON, default=list)
tags_en: Mapped[list] = mapped_column(JSON, default=list)
# آخرین به‌روزرسانی رکورد — فقط برای lastmod نقشه سایت؛ ردیف‌های قدیمی NULL می‌مانند
# تا lastmod جعلی تولید نشود (با هر ذخیرهٔ پنل پر می‌شود)
updated_at: Mapped[datetime | None] = mapped_column(
DateTime(timezone=True), default=utcnow, onupdate=utcnow, nullable=True
)
class Testimonial(Base):