- Primeiro usar a copia do arquivo ou criar uma migração vazia
    alembic revision -m "Criar tabelas do schema shared"
    se usar a cópia do arquivo os outros passo são desnecessários

- Ajustar imports da migração
    from typing import Sequence, Union
    from alembic import op
    import sqlalchemy as sa
    import fastapi_users_db_sqlalchemy
    from sqlalchemy import MetaData, schema
    from app.database.models import Base

- Incluir a função para filtra os shcemas shared para criar apenas eles
    def get_shared_metadata():
    """Filtra as tabelas do schema 'shared'."""
    meta = MetaData()
    for table in Base.metadata.tables.values():
        if table.schema != "tenant":  # Filtra apenas as tabelas do schema 'shared'
            table.to_metadata(meta)
    return meta

- Ajustar função upgrade
    """Criação do schema 'shared' e tabelas associadas."""
    conn = op.get_bind()

    # Criar o schema 'shared' se não existir
    schema_exists_query = sa.text(
        "SELECT schema_name FROM information_schema.schemata WHERE schema_name = 'shared';"
    )
    result = conn.execute(schema_exists_query)
    schema_exists = result.scalar() is not None

    if not schema_exists:
        op.execute(schema.CreateSchema("shared"))
        print("Schema 'shared' criado com sucesso.")

    # Criar as tabelas do schema 'shared'
    metadata = get_shared_metadata()
    metadata.create_all(bind=conn)  # Cria as tabelas do shared
    print("Tabelas do schema 'shared' criadas com sucesso.")

- Ajustar função downgrade
    """Remoção do schema 'shared' e tabelas associadas."""
    conn = op.get_bind()

    # Remover as tabelas do schema 'shared'
    metadata = get_shared_metadata()
    metadata.drop_all(bind=conn)
    print("Tabelas do schema 'shared' removidas com sucesso.")

    # Remover o schema 'shared'
    op.execute("DROP SCHEMA IF EXISTS shared CASCADE")
    print("Schema 'shared' removido com sucesso.")
