feat: refactor configuration management to use viper for environment variables
This commit is contained in:
parent
95323b9f65
commit
db82ad3364
12
cmd/main.go
12
cmd/main.go
|
|
@ -33,6 +33,7 @@ import (
|
|||
"github.com/Caknoooo/go-gin-clean-starter/modules/warehouse"
|
||||
"github.com/Caknoooo/go-gin-clean-starter/modules/zona"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/viper"
|
||||
swaggerFiles "github.com/swaggo/files"
|
||||
ginSwagger "github.com/swaggo/gin-swagger"
|
||||
|
||||
|
|
@ -58,13 +59,13 @@ func args(injector *do.Injector) bool {
|
|||
func run(server *gin.Engine) {
|
||||
server.Static("/assets", "./assets")
|
||||
|
||||
port := os.Getenv("GOLANG_PORT")
|
||||
port := viper.GetString("GOLANG_PORT")
|
||||
if port == "" {
|
||||
port = "8888"
|
||||
}
|
||||
|
||||
var serve string
|
||||
if os.Getenv("APP_ENV") == "localhost" {
|
||||
if viper.GetString("APP_ENV") == "localhost" {
|
||||
serve = "0.0.0.0:" + port
|
||||
} else {
|
||||
serve = ":" + port
|
||||
|
|
@ -102,6 +103,13 @@ func run(server *gin.Engine) {
|
|||
// @externalDocs.description OpenAPI
|
||||
// @externalDocs.url https://swagger.io/resources/open-api/
|
||||
func main() {
|
||||
viper.SetConfigFile(".env")
|
||||
|
||||
err := viper.ReadInConfig()
|
||||
if err != nil {
|
||||
log.Fatal("Error loading .env file")
|
||||
}
|
||||
viper.AutomaticEnv()
|
||||
|
||||
var (
|
||||
injector = do.New()
|
||||
|
|
|
|||
|
|
@ -2,10 +2,10 @@ package config
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"os"
|
||||
|
||||
"github.com/Caknoooo/go-gin-clean-starter/pkg/constants"
|
||||
"github.com/joho/godotenv"
|
||||
"github.com/spf13/viper"
|
||||
"gorm.io/driver/postgres"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
|
@ -15,18 +15,18 @@ func RunExtension(db *gorm.DB) {
|
|||
}
|
||||
|
||||
func SetUpDatabaseConnection() *gorm.DB {
|
||||
if os.Getenv("APP_ENV") != constants.ENUM_RUN_PRODUCTION {
|
||||
if viper.GetString("APP_ENV") != constants.ENUM_RUN_PRODUCTION {
|
||||
err := godotenv.Load(".env")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
|
||||
dbUser := os.Getenv("DB_USER")
|
||||
dbPass := os.Getenv("DB_PASS")
|
||||
dbHost := os.Getenv("DB_HOST")
|
||||
dbName := os.Getenv("DB_NAME")
|
||||
dbPort := os.Getenv("DB_PORT")
|
||||
dbUser := viper.GetString("DB_USER")
|
||||
dbPass := viper.GetString("DB_PASS")
|
||||
dbHost := viper.GetString("DB_HOST")
|
||||
dbName := viper.GetString("DB_NAME")
|
||||
dbPort := viper.GetString("DB_PORT")
|
||||
|
||||
dsn := fmt.Sprintf("host=%v user=%v password=%v dbname=%v port=%v", dbHost, dbUser, dbPass, dbName, dbPort)
|
||||
|
||||
|
|
|
|||
|
|
@ -14,6 +14,7 @@ type EmailConfig struct {
|
|||
|
||||
func NewEmailConfig() (*EmailConfig, error) {
|
||||
viper.SetConfigFile(".env")
|
||||
|
||||
|
||||
if err := viper.ReadInConfig(); err != nil {
|
||||
return nil, err
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import (
|
|||
|
||||
amqp "github.com/rabbitmq/amqp091-go"
|
||||
"github.com/sirupsen/logrus"
|
||||
"github.com/spf13/viper"
|
||||
"gorm.io/gorm/logger"
|
||||
)
|
||||
|
||||
|
|
@ -70,12 +71,12 @@ func SetupLoggerLogrus() *logrus.Logger {
|
|||
|
||||
// ✔️ Pasang RabbitMQ Hook kalau channel berhasil connect
|
||||
if RabbitChannel != nil {
|
||||
queue := os.Getenv("RABBITMQ_LOG_QUEUE") // contoh: log_queue
|
||||
queue := viper.GetString("RABBITMQ_LOG_QUEUE") // contoh: log_queue
|
||||
hook := NewRabbitMQHook(RabbitChannel, queue)
|
||||
logger.AddHook(hook)
|
||||
}
|
||||
|
||||
logLevel := strings.ToLower(os.Getenv("LOG_LEVEL"))
|
||||
logLevel := strings.ToLower(viper.GetString("LOG_LEVEL"))
|
||||
if logLevel == "production" {
|
||||
logger.SetLevel(logrus.WarnLevel)
|
||||
} else {
|
||||
|
|
|
|||
|
|
@ -3,20 +3,20 @@ package config
|
|||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
|
||||
amqp "github.com/rabbitmq/amqp091-go"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
var RabbitConn *amqp.Connection
|
||||
var RabbitChannel *amqp.Channel
|
||||
|
||||
func InitRabbitMQ() {
|
||||
host := os.Getenv("RABBITMQ_HOST")
|
||||
port := os.Getenv("RABBITMQ_PORT")
|
||||
user := os.Getenv("RABBITMQ_USER")
|
||||
pass := os.Getenv("RABBITMQ_PASSWORD")
|
||||
queue := os.Getenv("RABBITMQ_LOG_QUEUE") // contoh: log_queue
|
||||
host := viper.GetString("RABBITMQ_HOST")
|
||||
port := viper.GetString("RABBITMQ_PORT")
|
||||
user := viper.GetString("RABBITMQ_USER")
|
||||
pass := viper.GetString("RABBITMQ_PASSWORD")
|
||||
queue := viper.GetString("RABBITMQ_LOG_QUEUE") // contoh: log_queue
|
||||
|
||||
uri := fmt.Sprintf("amqp://%s:%s@%s:%s/",
|
||||
user, pass, host, port,
|
||||
|
|
|
|||
|
|
@ -5,10 +5,10 @@ import (
|
|||
"encoding/base64"
|
||||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"time"
|
||||
|
||||
"github.com/golang-jwt/jwt/v4"
|
||||
"github.com/spf13/viper"
|
||||
)
|
||||
|
||||
type UserTokenInfo struct {
|
||||
|
|
@ -51,7 +51,7 @@ func NewJWTService() JWTService {
|
|||
}
|
||||
|
||||
func getSecretKey() string {
|
||||
secretKey := os.Getenv("JWT_SECRET")
|
||||
secretKey := viper.GetString("JWT_SECRET")
|
||||
if secretKey == "" {
|
||||
secretKey = "WMS-WareifySecretKey"
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue