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