"""زمان آخرین به‌روزرسانی مقاله‌ها و پروژه‌ها — ستون 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")