79 lines
2.1 KiB
Go
79 lines
2.1 KiB
Go
package main
|
|
|
|
import (
|
|
"strings"
|
|
|
|
"github.com/spf13/viper"
|
|
)
|
|
|
|
func ReadConfig() (*viper.Viper, error) {
|
|
defaults := map[string]any{
|
|
"name": "COOPGO Carpool Service",
|
|
"dev_env": false,
|
|
"storage": map[string]any{
|
|
"db": map[string]any{
|
|
"type": "psql",
|
|
"mongodb": map[string]any{
|
|
"host": "localhost",
|
|
"port": 27017,
|
|
"db_name": "coopgo_platform",
|
|
"collections": map[string]any{
|
|
"regular_routes": "carpool_regular_routes",
|
|
"punctual_routes": "carpool_punctual_routes",
|
|
"bookings": "carpool_bookings",
|
|
"driver_candidate_journeys": "carpool_driver_candidate_journeys",
|
|
"passenger_candidate_journeys": "carpool_passenger_candidate_journeys",
|
|
"persisted_kv": "carpool_persisted_kv",
|
|
},
|
|
},
|
|
"psql": map[string]any{
|
|
"host": "localhost",
|
|
"port": 5432,
|
|
"user": "postgres",
|
|
"password": "postgres",
|
|
"dbname": "coopgo_platform",
|
|
"schema": "carpool_service",
|
|
"sslmode": "disable",
|
|
"tables": map[string]any{
|
|
"regular_routes": "regular_routes",
|
|
"regular_route_schedules": "regular_route_schedules",
|
|
"bookings": "bookings",
|
|
"journeys_cache": "journeys_cache",
|
|
},
|
|
},
|
|
},
|
|
},
|
|
"services": map[string]any{
|
|
"grpc": map[string]any{
|
|
"enable": true,
|
|
"port": 8080,
|
|
},
|
|
"ocss_api": map[string]any{
|
|
"enable": true,
|
|
"port": 80,
|
|
},
|
|
},
|
|
"interoperability": map[string]any{
|
|
"internal_operator_id": "example.coopgo.fr",
|
|
"ocss": map[string]any{
|
|
"operator_id": "example.coopgo.fr",
|
|
"web_urls": map[string]string{
|
|
"driver_journeys": "https://example.coopgo.fr/driver_journeys/%s",
|
|
"passenger_journeys": "https://example.coopgo.fr/passenger_journeys/%s",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
v := viper.New()
|
|
for key, value := range defaults {
|
|
v.SetDefault(key, value)
|
|
}
|
|
v.SetConfigName("config")
|
|
v.AddConfigPath(".")
|
|
v.SetEnvKeyReplacer(strings.NewReplacer(".", "_"))
|
|
v.AutomaticEnv()
|
|
err := v.ReadInConfig()
|
|
return v, err
|
|
}
|