Saltar a contenido

gSQLConnect

El paquete gSQLConnect proporciona una forma cómoda de crear una conexión de base de datos utilizando GORM para MySQL y Microsoft SQL Server. También incluye comprobaciones de estado para ambas bases de datos e instrumentación APM para ambos controladores.

Installation

Para instalar el paquete, basta con ejecutar el siguiente comando:

go get github.com/architecture-it/gSQLConnect

Usage

El paquete proporciona la funcion NewRepository para crear una nueva instancia de la interfaz DataRepository:

NewRepository(connection string, dialect string, hcheck ...health.Health) DataRepository

Puedes utilizar esta función para crear una nueva instancia de la interfaz DataRepository. La función toma tres argumentos: - connection: La cadena de conexión a la base de datos. - dialect: El dialecto de la base de datos. Puede ser mysql o mssql. - hcheck: Una instancia de health.Health opcional. Si se proporciona una instancia de health.Health, el repositorio registrará automáticamente una comprobación de salud para la conexión.

Adicionalmente a el dialect, se puede instanciar mas de un mismo dialecto, por ejemplo, si se necesita conectar a dos bases de datos SqlServer, se puede poner una "_" y un numero, letre o palabre que identifique a la base de datos, de la siguiente manera:

    dsn := os.Getenv("SQLSERVER_DSN")
    repo := gSQLConnect.NewRepository(dsn, "mssql_1", h)
    db := repo.GetDB(context.Background())

    dsn2 := os.Getenv("SQLSERVER_DSN2")
    repo2 := gSQLConnect.NewRepository(dsn2, "mssql_2", h)
    db2 := repo2.GetDB(context.Background())

La interfaz DataRepository define un único método:

GetDB(ctx context.Context) *gorm.DB

Puedes utilizar este método para obtener una conexión a una base de datos. El método toma un context.Context como argumento y devuelve una instancia de *gorm.DB.

Ejemplo de uso:

import "github.com/architecture-it/gSQLConnect"

repo := gSQLConnect.NewRepository("user:password@tcp(127.0.0.1:3306)/database")
db := repo.GetDB(context.Background())

// Use the db variable to perform database operations
adicionalmente,

Health Checks

El paquete incluye comprobaciones de estado tanto para MySQL como para Microsoft SQL Server. Los Health Checks son proporcionados por la librería health-go.

Para utilizar las comprobaciones de estado, debe inicializar la instancia Health. He aquí un ejemplo:

Opcionalmente, puedes proporcionar una instancia de health.Health para habilitar comprobaciones de salud para la conexión de una base SQL. Si se proporciona una instancia de health.Health, el repositorio registrará automáticamente una comprobación de salud para la conexión:

func NewDB(h health.Health) *gorm.DB {

    dsn := os.Getenv("SQLSERVER_DSN")
    repo := gSQLConnect.NewRepository(dsn, "mssql", h)
    db := repo.GetDB(context.Background())

    return db
}