Created
February 4, 2025 05:59
-
-
Save Dostonlv/28d20278626f6fb8b0f0067c0996fd25 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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