""" Inicializacao de banco de dados. Cria tabelas e executa seed inicial em ambos os bancos. """ from app.core.settings import settings from app.db.database import Base, engine from app.db.mock_database import MockBase, mock_engine from app.db.models import Tool from app.db.mock_models import Customer, Order, ReviewSchedule, Vehicle from app.db.mock_seed import seed_mock_data from app.db.tool_seed import seed_tools def init_db(): """Cria tabelas e executa seed inicial em ambos os bancos.""" print("Inicializando bancos...") failures: list[str] = [] try: print("Criando tabelas MySQL (tools)...") Base.metadata.create_all(bind=engine) if settings.auto_seed_tools: print("Populando tools iniciais...") seed_tools() else: print("Seed de tools desabilitada por configuracao.") print("MySQL tools OK.") except Exception as exc: print(f"Aviso: falha no MySQL (tools): {exc}") failures.append(f"tools={exc}") try: print("Criando tabelas MySQL (dados ficticios)...") MockBase.metadata.create_all(bind=mock_engine) if settings.auto_seed_mock and settings.mock_seed_enabled: print("Populando dados ficticios iniciais...") seed_mock_data() else: print("Seed mock desabilitada por configuracao.") print("MySQL mock OK.") except Exception as exc: print(f"Aviso: falha no MySQL mock: {exc}") failures.append(f"mock={exc}") if failures: raise RuntimeError( "Falha ao inicializar bancos do orquestrador: " + " | ".join(failures) ) print("Bancos inicializados com sucesso!") if __name__ == "__main__": init_db()