2025-05-17 11:36:26 -04:00

76 lines
2.5 KiB
Go

package database
import (
"time"
)
// Parameter representa un parámetro en la base de datos
type Parameter struct {
ID int `db:"id"`
Key string `db:"key"`
Value string `db:"value"`
Description string `db:"description"`
Active bool `db:"active"`
CreatedAt time.Time `db:"created_at"`
UpdatedAt time.Time `db:"updated_at"`
}
// Estructura para las solicitudes SOAP
type SoapRequest struct {
ID int `db:"id"`
RequestID string `db:"request_id"`
APIID string `db:"api_id"`
OperationName string `db:"operation_name"`
RequestBody string `db:"request_body"`
ResponseBody string `db:"response_body"`
StatusCode int `db:"status_code"`
Error string `db:"error"`
RequestTime time.Time `db:"request_time"`
ResponseTime time.Time `db:"response_time"`
ProcessingTime int64 `db:"processing_time"`
CreatedAt time.Time `db:"created_at"`
}
// Inicialización de la base de datos: script SQL
const DatabaseInitSQL = `
-- Tabla de parámetros
CREATE TABLE IF NOT EXISTS parameters (
id SERIAL PRIMARY KEY,
key VARCHAR(100) NOT NULL UNIQUE,
value TEXT NOT NULL,
description TEXT,
active BOOLEAN DEFAULT TRUE,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW(),
updated_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Tabla para registro de solicitudes SOAP
CREATE TABLE IF NOT EXISTS soap_requests (
id SERIAL PRIMARY KEY,
request_id VARCHAR(36) NOT NULL,
api_id VARCHAR(50) NOT NULL,
operation_name VARCHAR(100) NOT NULL,
request_body TEXT NOT NULL,
response_body TEXT,
status_code INT,
error TEXT,
request_time TIMESTAMP WITH TIME ZONE NOT NULL,
response_time TIMESTAMP WITH TIME ZONE,
processing_time BIGINT,
created_at TIMESTAMP WITH TIME ZONE DEFAULT NOW()
);
-- Índices
CREATE INDEX IF NOT EXISTS idx_soap_requests_request_id ON soap_requests(request_id);
CREATE INDEX IF NOT EXISTS idx_soap_requests_api_id ON soap_requests(api_id);
CREATE INDEX IF NOT EXISTS idx_soap_requests_operation_name ON soap_requests(operation_name);
CREATE INDEX IF NOT EXISTS idx_soap_requests_request_time ON soap_requests(request_time);
-- Insertar parámetros iniciales
INSERT INTO parameters (key, value, description)
VALUES
('soap.api1.endpoint', 'https://api1.example.com/soap', 'Endpoint for API 1'),
('soap.api2.endpoint', 'https://api2.example.com/soap', 'Endpoint for API 2')
ON CONFLICT (key) DO NOTHING;
`