37 lines
984 B
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
|
|
}
|