diff --git a/packages/v1/administrativo/repositories/firebird/firebird_schema_repository.py b/packages/v1/administrativo/repositories/firebird/firebird_schema_repository.py index 861e88f..7e319e6 100644 --- a/packages/v1/administrativo/repositories/firebird/firebird_schema_repository.py +++ b/packages/v1/administrativo/repositories/firebird/firebird_schema_repository.py @@ -3,9 +3,11 @@ import fdb from fastapi import HTTPException from pathlib import Path from typing import List, Dict, Any +from abstracts.repository import BaseRepository +import json -class FirebirdSchemaExtractor: +class FirebirdSchemaExtractor(BaseRepository): """ Classe responsável por extrair toda a estrutura de um banco Firebird 4. """ @@ -174,7 +176,13 @@ class FirebirdSchemaExtractor: # -------------------- ESTRUTURA COMPLETA -------------------- def extract_all(self): - return { + """ + Extrai toda a estrutura do banco Firebird e salva o resultado + no banco MySQL antes de retornar. + """ + + # 1. Extrai tudo do Firebird + data = { "tables": self.get_tables(), "primary_keys": self.get_primary_keys(), "foreign_keys": self.get_foreign_keys(), @@ -183,3 +191,31 @@ class FirebirdSchemaExtractor: "procedures": self.get_procedures(), "triggers": self.get_triggers(), } + + # ----------------------------- + # 2. INSERE NO BANCO MYSQL (NOVO TRECHO) + # ----------------------------- + try: + + # Dados a serem inseridos + json_data = json.dumps(data, ensure_ascii=False) + + # Preenchimento de parâmetros. + params = { + 'json_data': json_data # Deve ser None/0 para INSERT + } + + # Inserção simples + sql = """INSERT INTO firebird_schema (schema_json) VALUES (%s) """ + + # Execução do SQL. + self.run_and_return(sql, params) + + except Exception as e: + # Não interrompe o retorno, apenas registra o erro + print(f"[ERRO] Falha ao salvar no MySQL: {e}") + + # ----------------------------- + # 3. RETORNO FINAL + # ----------------------------- + return data