Refactor(ADN): Migración de tools/bitacoras-db y tools/config/database.yml hacia tools/adn/db para afianzar la arquitectura modular y autosuficiencia del ADN

This commit is contained in:
Ricardo Monla
2026-03-10 20:10:56 -03:00
parent 427b000aac
commit 937bff070a
16 changed files with 22 additions and 580 deletions
+72
View File
@@ -0,0 +1,72 @@
# frozen_string_literal: true
# tools/adn/db/cli/exportar_todo.rb
# ==========================================
# Exporta TODAS las bitácoras de la DB a archivos .md
# Uso: ruby tools/adn/db/cli/exportar_todo.rb [--dir DIRECTORIO]
# — o vía enjambre —
# ./tools/adn/run db exportar:md --todo
require 'date'
require 'optparse'
require_relative '../core/bitacora_db'
require_relative '../exporters/md_exporter'
module BitacorasDB
module CLI
class ExportarTodo
def initialize(bitacoras_dir, logger = nil)
@bitacoras_dir = bitacoras_dir
@logger = logger || default_logger
@resultados = { ok: 0, error: 0 }
end
def ejecutar
@logger.info("Exportando todas las bitácoras de DB a MD...")
BitacorasDB::BitacoraDB.with_connection do |db|
bitacoras = db.list_bitacoras(limit: 500)
if bitacoras.empty?
@logger.info("No hay bitácoras en la base de datos.")
return
end
exporter = BitacorasDB::Exporters::MDExporter.new(db, @logger)
bitacoras.each do |b|
fecha = b['fecha'].to_s
fecha = fecha.split('T').first if fecha.include?('T')
archivo = File.join(@bitacoras_dir, "#{fecha}.md")
if exporter.exportar_bitacora(fecha, archivo)
@resultados[:ok] += 1
else
@resultados[:error] += 1
end
end
end
@logger.info("📊 Exportación masiva completada:")
@logger.info(" ✅ Exitosas: #{@resultados[:ok]}")
@logger.info(" ❌ Errores: #{@resultados[:error]}") if @resultados[:error] > 0
end
private
def default_logger
Class.new do
def info(msg); puts "[INFO] #{msg}"; end
def error(msg); puts "[ERROR] #{msg}"; end
def exito(msg); puts "[OK] #{msg}"; end
end.new
end
end
end
end
# Ejecución directa
if __FILE__ == $0
bitacoras_dir = File.expand_path('../../../docs/bitacoras', __dir__)
BitacorasDB::CLI::ExportarTodo.new(bitacoras_dir).ejecutar
end