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