feature/integracion-cloudrestore-targets #9

Merged
acazares merged 3 commits from feature/integracion-cloudrestore-targets into development 2026-06-09 14:58:49 +00:00
4 changed files with 0 additions and 77 deletions
Showing only changes of commit 310e0130c2 - Show all commits

View File

@@ -1,8 +0,0 @@
-- Migración 001 (DOWN): revierte la integración CloudRestoreAS.
-- Se quita primero la columna de asignación y la tabla dependiente.
ALTER TABLE a24c.database_nodes DROP COLUMN IF EXISTS restore_target_id;
DROP TABLE IF EXISTS a24c.restore_job_logs;
DROP TABLE IF EXISTS a24c.restore_targets;

View File

@@ -1,49 +0,0 @@
-- Migración 001 (UP): integración CloudRestoreAS.
-- Servidores de restauración (Alfa/Omega/Gamma) + asignación por base de datos
-- (database_nodes.restore_target_id) + bitácora de jobs. Idempotente.
-- Rollback en 001_restore_targets.down.sql.
CREATE SCHEMA IF NOT EXISTS a24c;
CREATE TABLE IF NOT EXISTS a24c.restore_targets (
id SERIAL PRIMARY KEY,
name VARCHAR(120) NOT NULL UNIQUE,
server_ip VARCHAR(255),
sql_username VARCHAR(128),
sql_password_encrypted TEXT,
data_folder VARCHAR(500),
ssh_host VARCHAR(255),
ssh_port INTEGER DEFAULT 22,
ssh_username VARCHAR(128),
ssh_password_encrypted TEXT,
remote_inbox_path VARCHAR(500),
notes TEXT,
created_at TIMESTAMPTZ NOT NULL DEFAULT now(),
updated_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
INSERT INTO a24c.restore_targets (name) VALUES ('Alfa'), ('Omega'), ('Gamma')
ON CONFLICT (name) DO NOTHING;
-- Columna de asignación en database_nodes (tabla aprovisionada por el backend a24c).
ALTER TABLE a24c.database_nodes
ADD COLUMN IF NOT EXISTS restore_target_id INTEGER
REFERENCES a24c.restore_targets (id) ON DELETE SET NULL;
CREATE TABLE IF NOT EXISTS a24c.restore_job_logs (
id SERIAL PRIMARY KEY,
filename VARCHAR(500) NOT NULL,
restore_target_id INTEGER REFERENCES a24c.restore_targets (id) ON DELETE SET NULL,
db_name VARCHAR(255),
status VARCHAR(20) NOT NULL CHECK (status IN ('completed', 'failed', 'forwarded')),
duration_ms INTEGER,
error_message TEXT,
restored_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
CREATE INDEX IF NOT EXISTS idx_a24c_restore_job_logs_target
ON a24c.restore_job_logs (restore_target_id);
CREATE INDEX IF NOT EXISTS idx_a24c_restore_job_logs_restored_at
ON a24c.restore_job_logs (restored_at);
CREATE INDEX IF NOT EXISTS idx_a24c_restore_job_logs_status
ON a24c.restore_job_logs (status);

View File

@@ -1,3 +0,0 @@
SET search_path TO a24c, public;
DROP TABLE IF EXISTS a24c.cloudrestore_status;

View File

@@ -1,17 +0,0 @@
-- Estado reportado por CloudRestoreAS (carpeta de entrada, host, versión).
-- Solo CloudRestoreAS escribe vía POST /api/restore/instance-config; el panel solo consulta.
-- Rollback en 002_cloudrestore_status.down.sql.
SET search_path TO a24c, public;
CREATE TABLE IF NOT EXISTS a24c.cloudrestore_status (
id SERIAL PRIMARY KEY,
instance_key VARCHAR(120) NOT NULL UNIQUE DEFAULT 'default',
input_folder VARCHAR(500) NOT NULL,
host_name VARCHAR(255),
app_version VARCHAR(50),
reported_at TIMESTAMPTZ NOT NULL DEFAULT now()
);
COMMENT ON TABLE a24c.cloudrestore_status IS
'Carpeta de entrada vigente reportada por CloudRestoreAS. Solo lectura en el panel.';