"""add user soft delete fields for GDPR compliance

Revision ID: add_user_soft_delete_fields
Revises: 
Create Date: 2025-12-04 00:00:00.000000

"""
from alembic import op
import sqlalchemy as sa


# revision identifiers, used by Alembic.
revision = 'add_user_soft_delete_fields'
down_revision = '5884eae7a65f'  # Latest migration: add_preferences_json_column_to_user_
branch_labels = None
depends_on = None


def upgrade():
    """Add soft delete and data retention fields to users table"""
    # Add soft delete fields
    op.add_column('users', sa.Column('is_deleted', sa.Boolean(), nullable=False, server_default='false'))
    op.add_column('users', sa.Column('deleted_at', sa.DateTime(), nullable=True))
    op.add_column('users', sa.Column('anonymised_at', sa.DateTime(), nullable=True))
    op.add_column('users', sa.Column('scheduled_hard_delete_at', sa.DateTime(), nullable=True))
    
    # Add index for soft delete queries
    op.create_index('ix_users_is_deleted', 'users', ['is_deleted'], unique=False)


def downgrade():
    """Remove soft delete fields"""
    op.drop_index('ix_users_is_deleted', table_name='users')
    op.drop_column('users', 'scheduled_hard_delete_at')
    op.drop_column('users', 'anonymised_at')
    op.drop_column('users', 'deleted_at')
    op.drop_column('users', 'is_deleted')
