"""project_visits.last_active_at — the heartbeat clock

Revision ID: b62f9a0d47ce
Revises: a7c04e1b93d5
Create Date: 2026-09-01

Separate from last_seen_at on purpose: that one is the newness marker and only
moves deliberately, this one moves constantly. One column would mean every
heartbeat cleared the "new since your last visit" flags.
"""
from typing import Sequence, Union

import sqlalchemy as sa
from alembic import op

revision: str = 'b62f9a0d47ce'
down_revision: Union[str, Sequence[str], None] = 'a7c04e1b93d5'
branch_labels: Union[str, Sequence[str], None] = None
depends_on: Union[str, Sequence[str], None] = None


def upgrade() -> None:
    op.add_column('project_visits',
                  sa.Column('last_active_at', sa.DateTime(timezone=True),
                            nullable=True))


def downgrade() -> None:
    op.drop_column('project_visits', 'last_active_at')
