Files
aramesh-backend/backend/migrations/versions/0004_article_project_updated_at.py
T
aramesh-site deploy 14660586c4
CI / tests (push) Waiting to run
CI / images (push) Blocked by required conditions
chore: همگام‌سازی وضعیت زندهٔ سرور با مخزن
شامل کارهای چند نشست موازی که تا این‌جا فقط روی سرور بود:
- نقشهٔ دفتر مرکزی در فوتر (LazyOfficeMap) + MapViewport/LazyMaps/mapProjects
- صفحهٔ مدیریت مقالات (AdminArticlesPage) + میان‌بر ویرایش پیش‌نویس در وبلاگ
- مهاجرت ۰۰۰۴: updated_at مقالات/پروژه‌ها
- chatbot/Dockerfile: نصب دومرحله‌ای torch (کاربردی برای PyPI فیلترشده)
- seed: خالی‌کردن آمارهای دموی story
- docker-compose: اصلاح پسوند @file میان‌افزارهای Traefik
- حذف فایل موقت frontend/.tmp-style.json و اصلاحات جزئی UI

با این کامیت، آن‌چه روی سرور اجرا می‌شود Exactly همان چیزی است که در مخزن ثبت شده.
2026-10-26 12:28:28 +00:00

40 lines
1.5 KiB
Python

"""زمان آخرین به‌روزرسانی مقاله‌ها و پروژه‌ها — ستون updated_at برای lastmod نقشه سایت.
نقشه سایت lastmod معتبر لازم دارد که آخرین تغییر معنادار محتوا را نشان دهد؛
تاریخ نمایشی مقاله‌ها (شمسی دست‌نویس) برای این کار مناسب نیست. ردیف‌های قدیمی
NULL می‌مانند و lastmod فقط برای ردیف‌هایی صادر می‌شود که بعداً در پنل ذخیره شده‌اند —
تاریخ جعلی همگن (همه = امروز) به‌عنوان سیگنال منفی شناخته می‌شود.
Revision ID: 0004
Revises: 0003
Create Date: 2026-10-11
"""
from typing import Sequence, Union
import sqlalchemy as sa
from alembic import op
revision: str = "0004"
down_revision: Union[str, None] = "0003"
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None
_TABLES = ("articles", "projects")
def upgrade() -> None:
for table in _TABLES:
cols = {c["name"] for c in sa.inspect(op.get_bind()).get_columns(table)}
if "updated_at" not in cols:
op.add_column(
table,
sa.Column("updated_at", sa.DateTime(timezone=True), nullable=True),
)
def downgrade() -> None:
for table in _TABLES:
cols = {c["name"] for c in sa.inspect(op.get_bind()).get_columns(table)}
if "updated_at" in cols:
op.drop_column(table, "updated_at")