"""Add groups and group_members tables. Revision ID: c4e812fb3a01 Revises: b78571ae9e00 Create Date: 2026-04-23 19:00:00.000000 """ from __future__ import annotations import sqlalchemy as sa from alembic import op revision = "c4e812fb3a01" down_revision = "b78571ae9e00" branch_labels = None depends_on = None def upgrade() -> None: op.create_table( "groups", sa.Column("id", sa.Uuid(), nullable=False), sa.Column("name", sa.String(128), nullable=False), sa.Column("description", sa.Text(), nullable=True), sa.Column("organization_id", sa.Uuid(), nullable=True), sa.Column("created_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False), sa.Column("updated_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False), sa.ForeignKeyConstraint(["organization_id"], ["organizations.id"]), sa.PrimaryKeyConstraint("id"), ) op.create_index("ix_groups_organization_id", "groups", ["organization_id"]) op.create_table( "group_members", sa.Column("id", sa.Uuid(), nullable=False), sa.Column("group_id", sa.Uuid(), nullable=False), sa.Column("identity_id", sa.Uuid(), nullable=True), sa.Column("display_name", sa.String(128), nullable=False), sa.Column("added_at", sa.DateTime(timezone=True), server_default=sa.func.now(), nullable=False), sa.ForeignKeyConstraint(["group_id"], ["groups.id"]), sa.ForeignKeyConstraint(["identity_id"], ["duniter_identities.id"]), sa.PrimaryKeyConstraint("id"), ) op.create_index("ix_group_members_group_id", "group_members", ["group_id"]) def downgrade() -> None: op.drop_index("ix_group_members_group_id", table_name="group_members") op.drop_table("group_members") op.drop_index("ix_groups_organization_id", table_name="groups") op.drop_table("groups")