"""user source/rich fields Revision ID: 0006_user_source_fields Revises: 0005_park_settings Create Date: 2026-08-25 """ from __future__ import annotations from alembic import op import sqlalchemy as sa revision = "0006_user_source_fields" down_revision = "0005_park_settings" branch_labels = None depends_on = None def _add(table, col): conn = op.get_bind() cols = {r[1] for r in conn.execute(sa.text(f"PRAGMA table_info({table})"))} if col.name not in cols: op.add_column(table, col) def upgrade() -> None: _add("users", sa.Column("wx_unionid", sa.String, server_default="")) _add("users", sa.Column("wx_mini_openid", sa.String, server_default="")) _add("users", sa.Column("email", sa.String, server_default="")) _add("users", sa.Column("gender", sa.String, server_default="")) _add("users", sa.Column("birthday", sa.String, server_default="")) _add("users", sa.Column("source", sa.String, server_default="")) _add("users", sa.Column("auth_type", sa.String, server_default="")) _add("users", sa.Column("register_ip", sa.String, server_default="")) _add("users", sa.Column("last_login_ip", sa.String, server_default="")) _add("users", sa.Column("last_login_at", sa.String, server_default="")) _add("users", sa.Column("compute_provisioned", sa.Boolean, server_default="0")) _add("users", sa.Column("compute_username", sa.String, server_default="")) _add("users", sa.Column("compute_quota", sa.Integer, server_default="0")) _add("users", sa.Column("compute_used_quota", sa.Integer, server_default="0")) def downgrade() -> None: pass