PowerEngine/wave_record/database/influxdb_init.go

37 lines
984 B
Go

// Package database define database operation functions
package database
import (
"sync"
influxdb2 "github.com/influxdata/influxdb-client-go/v2"
)
var (
influxDBOnce sync.Once
_globalInfluxDBClient *influxdb2.Client
_globalInfluxDBMu sync.RWMutex
)
// InfluxDBClient returns the global InfluxDB client.It's safe for concurrent use.
func InfluxDBClient() *influxdb2.Client {
_globalInfluxDBMu.RLock()
client := _globalInfluxDBClient
_globalInfluxDBMu.RUnlock()
return client
}
// GetInfluxDBInstance return instance of InfluxDB client
func GetInfluxDBInstance(influxDBURL, token string) *influxdb2.Client {
mongoOnce.Do(func() {
_globalInfluxDBClient = initInfluxDBClient(influxDBURL, token)
})
return _globalInfluxDBClient
}
// initInfluxDBClient return successfully initialized InfluxDB client
func initInfluxDBClient(influxDBURL, token string) *influxdb2.Client {
influxDBClient := influxdb2.NewClient(influxDBURL, token)
return &influxDBClient
}