-- JARED database tables for CORP

CREATE TABLE IF NOT EXISTS flujos_predefinidos (
    id VARCHAR(64) PRIMARY KEY,
    h_instancia VARCHAR(64) NOT NULL,
    nombre VARCHAR(100) NOT NULL,
    descripcion TEXT,
    pasos JSONB NOT NULL,
    campos_fijos JSONB DEFAULT '{}',
    campos_variables JSONB DEFAULT '[]',
    activo BOOLEAN DEFAULT true,
    created_at TIMESTAMP DEFAULT NOW(),
    updated_at TIMESTAMP DEFAULT NOW()
);

CREATE TABLE IF NOT EXISTS flujo_ejecuciones (
    id BIGSERIAL PRIMARY KEY,
    h_flujo VARCHAR(64) REFERENCES flujos_predefinidos(id),
    h_instancia VARCHAR(64) NOT NULL,
    h_ejecucion VARCHAR(64) NOT NULL UNIQUE,
    datos JSONB NOT NULL,
    estado VARCHAR(20) DEFAULT 'ok',
    destino VARCHAR(20) DEFAULT 'feldman',
    notas TEXT,
    created_at TIMESTAMP DEFAULT NOW()
);

-- Indexes
CREATE INDEX IF NOT EXISTS idx_flujos_h_instancia ON flujos_predefinidos(h_instancia);
CREATE INDEX IF NOT EXISTS idx_ejecuciones_h_instancia ON flujo_ejecuciones(h_instancia);
CREATE INDEX IF NOT EXISTS idx_ejecuciones_estado ON flujo_ejecuciones(estado);
CREATE INDEX IF NOT EXISTS idx_ejecuciones_destino ON flujo_ejecuciones(destino);

-- Permissions (run as postgres superuser)
-- GRANT ALL PRIVILEGES ON TABLE flujos_predefinidos TO corp;
-- GRANT ALL PRIVILEGES ON TABLE flujo_ejecuciones TO corp;
-- GRANT USAGE, SELECT ON ALL SEQUENCES IN SCHEMA public TO corp;
