From 2e2534ccacf1b1904e6dee905a1313d5b0c5ce8c Mon Sep 17 00:00:00 2001 From: CREDO23 Date: Wed, 14 Jan 2026 14:37:29 +0200 Subject: [PATCH] migration: add user profile columns --- .../versions/62_add_user_profile_columns.py | 72 +++++++++++++++++++ 1 file changed, 72 insertions(+) create mode 100644 surfsense_backend/alembic/versions/62_add_user_profile_columns.py diff --git a/surfsense_backend/alembic/versions/62_add_user_profile_columns.py b/surfsense_backend/alembic/versions/62_add_user_profile_columns.py new file mode 100644 index 000000000..a6fef0c5b --- /dev/null +++ b/surfsense_backend/alembic/versions/62_add_user_profile_columns.py @@ -0,0 +1,72 @@ +"""Add display_name and avatar_url columns to user table + +This migration adds: +- display_name column for user's full name from OAuth +- avatar_url column for user's profile picture URL from OAuth + +Revision ID: 62 +Revises: 61 +""" + +from collections.abc import Sequence + +from alembic import op + +# revision identifiers, used by Alembic. +revision: str = "62" +down_revision: str | None = "61" +branch_labels: str | Sequence[str] | None = None +depends_on: str | Sequence[str] | None = None + + +def upgrade() -> None: + """Add display_name and avatar_url columns to user table.""" + + # Add display_name column (nullable for existing users) + op.execute( + """ + DO $$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'user' AND column_name = 'display_name' + ) THEN + ALTER TABLE "user" + ADD COLUMN display_name VARCHAR; + END IF; + END$$; + """ + ) + + # Add avatar_url column (nullable for existing users) + op.execute( + """ + DO $$ + BEGIN + IF NOT EXISTS ( + SELECT 1 FROM information_schema.columns + WHERE table_name = 'user' AND column_name = 'avatar_url' + ) THEN + ALTER TABLE "user" + ADD COLUMN avatar_url VARCHAR; + END IF; + END$$; + """ + ) + + +def downgrade() -> None: + """Remove display_name and avatar_url columns from user table.""" + + op.execute( + """ + ALTER TABLE "user" + DROP COLUMN IF EXISTS avatar_url; + """ + ) + op.execute( + """ + ALTER TABLE "user" + DROP COLUMN IF EXISTS display_name; + """ + )