package database import ( "database/sql" "fmt" "daemonService/internal/config" _ "github.com/lib/pq" ) // InitDB inicializa la conexión a la base de datos y crea las tablas si no existen. func InitDB(cfg config.Config) (*sql.DB, error) { connStr := fmt.Sprintf( "host=%s port=%d user=%s password=%s dbname=%s sslmode=%s", cfg.Database.Host, cfg.Database.Port, cfg.Database.User, cfg.Database.Password, cfg.Database.DBName, cfg.Database.SSLMode, ) db, err := sql.Open("postgres", connStr) if err != nil { return nil, err } // Verificar la conexión if err = db.Ping(); err != nil { return nil, err } // Crear tabla para tipos de documento de identidad si no existe //_, err = db.Exec(` // CREATE TABLE IF NOT EXISTS tipo_documento_identidad ( // codigo VARCHAR(10) PRIMARY KEY, // descripcion TEXT NOT NULL, // fecha_actualizacion TIMESTAMP NOT NULL // ) //`) //if err != nil { // return nil, err //} // Crear tabla para el log de sincronización //_, err = db.Exec(` // CREATE TABLE IF NOT EXISTS log_sincronizacion ( // id SERIAL PRIMARY KEY, // servicio VARCHAR(50) NOT NULL, // req_soap TEXT, // resp_soap TEXT, // req_json TEXT, // resp_json TEXT, // fecha TIMESTAMP NOT NULL // ) //`) //if err != nil { // return nil, err //} return db, nil } // package db // import ( // "database/sql" // "fmt" // "daemonService/internal/config" // _ "github.com/lib/pq" // ) // // Init inicializa la conexión a la base de datos y crea las tablas necesarias. // func Init(cfg *config.Config) (*sql.DB, error) { // connStr := fmt.Sprintf( // "host=%s port=%d user=%s password=%s dbname=%s sslmode=%s", // cfg.Database.Host, // cfg.Database.Port, // cfg.Database.User, // cfg.Database.Password, // cfg.Database.DBName, // cfg.Database.SSLMode, // ) // db, err := sql.Open("postgres", connStr) // if err != nil { // return nil, err // } // // Verificar la conexión // if err = db.Ping(); err != nil { // return nil, err // } // // Crear tabla para tipo de documento de identidad // _, err = db.Exec(` // CREATE TABLE IF NOT EXISTS tipo_documento_identidad ( // codigo VARCHAR(10) PRIMARY KEY, // descripcion TEXT NOT NULL, // fecha_actualizacion TIMESTAMP NOT NULL // ) // `) // if err != nil { // return nil, err // } // // Crear tabla de log para auditoría // _, err = db.Exec(` // CREATE TABLE IF NOT EXISTS log_sincronizacion ( // id SERIAL PRIMARY KEY, // servicio VARCHAR(50) NOT NULL, // req_soap TEXT, // resp_soap TEXT, // req_json TEXT, // resp_json TEXT, // fecha TIMESTAMP NOT NULL // ) // `) // if err != nil { // return nil, err // } // return db, nil // }