package config

import (
	"log"

	"github.com/kelseyhightower/envconfig"
)

type appConfig struct {
	Port int `envconfig:"APP_PORT"`
}

type kafkaConfig struct {
	Port int    `envconfig:"KAFKA_PORT"`
	Host string `envconfig:"KAFKA_HOST"`
}

type arangoConfig struct {
	Port     int    `envconfig:"ARANGO_PORT"`
	Host     string `envconfig:"ARANGO_HOST"`
	User     string `envconfig:"ARANGO_USER"`
	Password string `envconfig:"ARANGO_PASSWORD"`
}

type sentryConfig struct {
	DSN string `envconfig:"SENTRY_DSN"`
}

// ...
type Config struct {
	App                   appConfig
	Kafka                 kafkaConfig
	Sentry                sentryConfig
	Arango                arangoConfig
	MinutesReregistration int `envconfig:"MINUTES_REREGISTRATION"` // number of minutes until the next registration
}

func NewConfig() *Config {
	c := Config{}
	err := envconfig.Process("", &c)
	if err != nil {
		log.Fatal(err.Error())
	}

	return &c
}