54 lines
1.9 KiB
Plaintext
54 lines
1.9 KiB
Plaintext
- 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.")
|