76 lines
2.5 KiB
Go
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;
|
|
`
|