package config

import "sync"

// ===================================================
//	This class has to be updated everytime
//	a new configuration variable is defined
//	in a componant that imports oc-lib
// ===================================================

type Config struct {
	NATSUrl       string
	MongoUrl      string
	MongoDatabase string
	Host          string
	Port          string
	LokiUrl       string
	LogLevel      string
}

func (c Config) GetUrl() string {
	return c.MongoUrl
}

func (c Config) GetDatabase() string {
	return c.MongoDatabase
}

var instance *Config
var once sync.Once

func GetConfig() *Config {
	once.Do(func() {
		instance = &Config{}
	})
	return instance
}

func SetConfig(mongoUrl string, database string, natsUrl string, lokiUrl string, logLevel string) *Config {
	/*once.Do(func() {
		instance = &Config{
			MongoUrl:      mongoUrl,
			MongoDatabase: database,
			NATSUrl:       natsUrl,
			LokiUrl:       lokiUrl,
			LogLevel:      logLevel,
		}
	})*/
	GetConfig().MongoUrl = mongoUrl
	GetConfig().MongoDatabase = database
	GetConfig().NATSUrl = natsUrl
	GetConfig().LokiUrl = lokiUrl
	GetConfig().LogLevel = logLevel
	return GetConfig()
}
