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
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
}