Skip to content

Instantly share code, notes, and snippets.

@Dostonlv
Created February 4, 2025 05:59
Show Gist options
  • Save Dostonlv/28d20278626f6fb8b0f0067c0996fd25 to your computer and use it in GitHub Desktop.
Save Dostonlv/28d20278626f6fb8b0f0067c0996fd25 to your computer and use it in GitHub Desktop.
package config
import (
"fmt"
"genproto/geo_service"
"os"
"github.com/joho/godotenv"
"github.com/spf13/cast"
)
// Config ...
type Config struct { // buyoda env dan nimalar olsangiz
Environment string // develop, staging, production
ServiceName string
PostgresHost string
PostgresPort int
PostgresDatabase string
PostgresUser string
PostgresPassword string
RedisHost string
RedisPort int
RedisPassword string
LogLevel string
RPCPort string
FareServiceHost string
FareServicePort string
CronSetting string
CDN string
MapURL string
MapKey string
OrderServiceHost string
OrderServicePort string
GeoServiceHost string
GeoServicePort string
CourierServiceHost string
CourierServicePort string
CatalogServiceV2Host string
CatalogServiceV2Port string
CrmServiceHost string
CrmServicePort string
BillingServiceV2Host string
BillingServiceV2Port string
ContentServiceHost string
ContentServicePort string
SmsServiceHost string
SmsServicePort string
AuthServiceHost string
AuthServicePort string
WebSocketServiceHost string
WebSocketServicePort string
CloudFlareBearerToken string
CloudFlareContentIp string
JowiAPIKey string
JowiAPISecret string
MaxConnections int
JaegerURL string
}
// Load loads environment vars and inflates Config
func Load() Config {
c := Config{}
if err := godotenv.Load("/app/.env"); err != nil {
fmt.Println("No .env file found")
}
c.Environment = cast.ToString(getOrReturnDefault("ENVIRONMENT", "develop"))
c.ServiceName = cast.ToString(getOrReturnDefault("SERVICE_NAME", ""))
c.PostgresHost = cast.ToString(getOrReturnDefault("POSTGRES_HOST", ""))
c.PostgresPort = cast.ToInt(getOrReturnDefault("POSTGRES_PORT", 5432))
c.PostgresDatabase = cast.ToString(getOrReturnDefault("POSTGRES_DATABASE", ""))
c.PostgresUser = cast.ToString(getOrReturnDefault("POSTGRES_USER", ""))
c.PostgresPassword = cast.ToString(getOrReturnDefault("POSTGRES_PASSWORD", ""))
c.RedisHost = cast.ToString(getOrReturnDefault("REDIS_HOST", ""))
c.RedisPort = cast.ToInt(getOrReturnDefault("REDIS_PORT", ))
c.RedisPassword = cast.ToString(getOrReturnDefault("REDIS_PASSWORD", ""))
c.OrderServiceHost = cast.ToString(getOrReturnDefault("ORDER_SERVICE_HOST", ""))
c.OrderServicePort = cast.ToString(getOrReturnDefault("ORDER_GRPC_PORT", ""))
c.GeoServiceHost = cast.ToString(getOrReturnDefault("GEO_SERVICE_HOST", ""))
c.GeoServicePort = cast.ToString(getOrReturnDefault("GEO_GRPC_PORT", ""))
c.CourierServiceHost = cast.ToString(getOrReturnDefault("COURIER_SERVICE_HOST", ""))
c.CourierServicePort = cast.ToString(getOrReturnDefault("COURIER_GRPC_PORT", ""))
c.CatalogServiceV2Host = cast.ToString(getOrReturnDefault("CATALOG_SERVICE_V2_HOST", ""))
c.CatalogServiceV2Port = cast.ToString(getOrReturnDefault("CATALOG_GRPC_PORT", ""))
c.CrmServiceHost = cast.ToString(getOrReturnDefault("CRM_SERVICE_HOST", ""))
c.CrmServicePort = cast.ToString(getOrReturnDefault("CRM_GRPC_PORT", "="))
c.BillingServiceV2Host = cast.ToString(getOrReturnDefault("BILLING_NEW_SERVICE_HOST", ""))
c.BillingServiceV2Port = cast.ToString(getOrReturnDefault("BILLING_NEW_GRPC_PORT", ""))
c.ContentServiceHost = cast.ToString(getOrReturnDefault("CONTENT_SERVICE_HOST", ""))
c.ContentServicePort = cast.ToString(getOrReturnDefault("CONTENT_GRPC_PORT", ""))
c.SmsServiceHost = cast.ToString(getOrReturnDefault("SMS_SERVICE_HOST", ""))
c.SmsServicePort = cast.ToString(getOrReturnDefault("SMS_GRPC_PORT", ""))
// bo'sh turgan joylarga get or default da oziznikini berasiz .env bolsa oqiydi bolmasa defauldnikidan oqiydi
return c
}
func getOrReturnDefault(key string, defaultValue interface{}) interface{} {
if os.Getenv(key) == "" {
return defaultValue
}
return os.Getenv(key)
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment