Spaces:
Running
Running
Commit ·
b5d72d9
1
Parent(s): a5edc40
Deploy files from GitHub repository
Browse files- config/env_config.go +17 -16
- provider/config_provider.go +0 -5
- provider/provider.go +2 -0
- utils/utils.go +21 -0
config/env_config.go
CHANGED
|
@@ -5,6 +5,7 @@ import (
|
|
| 5 |
"strconv"
|
| 6 |
"strings"
|
| 7 |
|
|
|
|
| 8 |
"github.com/joho/godotenv"
|
| 9 |
)
|
| 10 |
|
|
@@ -40,23 +41,23 @@ func NewEnvConfig(timezone string) EnvConfig {
|
|
| 40 |
}
|
| 41 |
|
| 42 |
func (e *envConfig) GetTCPAddress() string {
|
| 43 |
-
return
|
| 44 |
}
|
| 45 |
|
| 46 |
func (e *envConfig) GetLogPath() string {
|
| 47 |
-
return
|
| 48 |
}
|
| 49 |
|
| 50 |
func (e *envConfig) GetHostAddress() string {
|
| 51 |
-
return
|
| 52 |
}
|
| 53 |
|
| 54 |
func (e *envConfig) GetHostPort() string {
|
| 55 |
-
return
|
| 56 |
}
|
| 57 |
|
| 58 |
func (e *envConfig) GetEmailVerificationDuration() int {
|
| 59 |
-
duration, err := strconv.Atoi(
|
| 60 |
if err != nil {
|
| 61 |
return 0 // Default value if parsing fails
|
| 62 |
}
|
|
@@ -64,27 +65,27 @@ func (e *envConfig) GetEmailVerificationDuration() int {
|
|
| 64 |
}
|
| 65 |
|
| 66 |
func (e *envConfig) GetDatabaseHost() string {
|
| 67 |
-
return
|
| 68 |
}
|
| 69 |
|
| 70 |
func (e *envConfig) GetDatabasePort() string {
|
| 71 |
-
return
|
| 72 |
}
|
| 73 |
|
| 74 |
func (e *envConfig) GetDatabaseUser() string {
|
| 75 |
-
return
|
| 76 |
}
|
| 77 |
|
| 78 |
func (e *envConfig) GetDatabasePassword() string {
|
| 79 |
-
return
|
| 80 |
}
|
| 81 |
|
| 82 |
func (e *envConfig) GetDatabaseName() string {
|
| 83 |
-
return
|
| 84 |
}
|
| 85 |
|
| 86 |
func (e *envConfig) GetSalt() string {
|
| 87 |
-
salt :=
|
| 88 |
if salt == "" {
|
| 89 |
return "Def4u|7" // Default salt value
|
| 90 |
}
|
|
@@ -92,21 +93,21 @@ func (e *envConfig) GetSalt() string {
|
|
| 92 |
}
|
| 93 |
|
| 94 |
func (e *envConfig) GetSupabaseURL() string {
|
| 95 |
-
return strings.TrimSpace(
|
| 96 |
}
|
| 97 |
|
| 98 |
func (e *envConfig) GetSupabaseKey() string {
|
| 99 |
-
return strings.TrimSpace(
|
| 100 |
}
|
| 101 |
|
| 102 |
func (e *envConfig) GetSupabaseBucket() string {
|
| 103 |
-
return strings.TrimSpace(
|
| 104 |
}
|
| 105 |
|
| 106 |
func (e *envConfig) GetXenditAPIKey() string {
|
| 107 |
-
return strings.TrimSpace(
|
| 108 |
}
|
| 109 |
|
| 110 |
func (e *envConfig) GetXenditCallbackToken() string {
|
| 111 |
-
return strings.TrimSpace(
|
| 112 |
}
|
|
|
|
| 5 |
"strconv"
|
| 6 |
"strings"
|
| 7 |
|
| 8 |
+
"abdanhafidz.com/go-boilerplate/utils"
|
| 9 |
"github.com/joho/godotenv"
|
| 10 |
)
|
| 11 |
|
|
|
|
| 41 |
}
|
| 42 |
|
| 43 |
func (e *envConfig) GetTCPAddress() string {
|
| 44 |
+
return utils.GetEnv("HOST_ADDRESS") + ":" + utils.GetEnv("HOST_PORT")
|
| 45 |
}
|
| 46 |
|
| 47 |
func (e *envConfig) GetLogPath() string {
|
| 48 |
+
return utils.GetEnv("LOG_PATH")
|
| 49 |
}
|
| 50 |
|
| 51 |
func (e *envConfig) GetHostAddress() string {
|
| 52 |
+
return utils.GetEnv("HOST_ADDRESS")
|
| 53 |
}
|
| 54 |
|
| 55 |
func (e *envConfig) GetHostPort() string {
|
| 56 |
+
return utils.GetEnv("HOST_PORT")
|
| 57 |
}
|
| 58 |
|
| 59 |
func (e *envConfig) GetEmailVerificationDuration() int {
|
| 60 |
+
duration, err := strconv.Atoi(utils.GetEnv("EMAIL_VERIFICATION_DURATION"))
|
| 61 |
if err != nil {
|
| 62 |
return 0 // Default value if parsing fails
|
| 63 |
}
|
|
|
|
| 65 |
}
|
| 66 |
|
| 67 |
func (e *envConfig) GetDatabaseHost() string {
|
| 68 |
+
return utils.GetEnv("DB_HOST")
|
| 69 |
}
|
| 70 |
|
| 71 |
func (e *envConfig) GetDatabasePort() string {
|
| 72 |
+
return utils.GetEnv("DB_PORT")
|
| 73 |
}
|
| 74 |
|
| 75 |
func (e *envConfig) GetDatabaseUser() string {
|
| 76 |
+
return utils.GetEnv("DB_USER")
|
| 77 |
}
|
| 78 |
|
| 79 |
func (e *envConfig) GetDatabasePassword() string {
|
| 80 |
+
return utils.GetEnv("DB_PASSWORD")
|
| 81 |
}
|
| 82 |
|
| 83 |
func (e *envConfig) GetDatabaseName() string {
|
| 84 |
+
return utils.GetEnv("DB_NAME")
|
| 85 |
}
|
| 86 |
|
| 87 |
func (e *envConfig) GetSalt() string {
|
| 88 |
+
salt := utils.GetEnv("SALT")
|
| 89 |
if salt == "" {
|
| 90 |
return "Def4u|7" // Default salt value
|
| 91 |
}
|
|
|
|
| 93 |
}
|
| 94 |
|
| 95 |
func (e *envConfig) GetSupabaseURL() string {
|
| 96 |
+
return strings.TrimSpace(utils.GetEnv("SUPABASE_URL"))
|
| 97 |
}
|
| 98 |
|
| 99 |
func (e *envConfig) GetSupabaseKey() string {
|
| 100 |
+
return strings.TrimSpace(utils.GetEnv("SUPABASE_SERVICE_KEY"))
|
| 101 |
}
|
| 102 |
|
| 103 |
func (e *envConfig) GetSupabaseBucket() string {
|
| 104 |
+
return strings.TrimSpace(utils.GetEnv("SUPABASE_BUCKET_NAME"))
|
| 105 |
}
|
| 106 |
|
| 107 |
func (e *envConfig) GetXenditAPIKey() string {
|
| 108 |
+
return strings.TrimSpace(utils.GetEnv("XENDIT_API_KEY"))
|
| 109 |
}
|
| 110 |
|
| 111 |
func (e *envConfig) GetXenditCallbackToken() string {
|
| 112 |
+
return strings.TrimSpace(utils.GetEnv("XENDIT_CALLBACK_TOKEN"))
|
| 113 |
}
|
provider/config_provider.go
CHANGED
|
@@ -1,8 +1,6 @@
|
|
| 1 |
package provider
|
| 2 |
|
| 3 |
import (
|
| 4 |
-
"fmt"
|
| 5 |
-
|
| 6 |
"abdanhafidz.com/go-boilerplate/config"
|
| 7 |
)
|
| 8 |
|
|
@@ -26,13 +24,10 @@ type configProvider struct {
|
|
| 26 |
|
| 27 |
func NewConfigProvider() ConfigProvider {
|
| 28 |
envConfig := config.NewEnvConfig("Asia / Jakarta")
|
| 29 |
-
fmt.Println("We are here 1!")
|
| 30 |
databaseConfig := config.NewDatabaseConfig(envConfig.GetDatabaseHost(), envConfig.GetDatabaseUser(), envConfig.GetDatabasePassword(), envConfig.GetDatabaseName(), envConfig.GetDatabasePort())
|
| 31 |
-
fmt.Println("We are here 2!")
|
| 32 |
uploadConfig := config.NewUploadConfig()
|
| 33 |
supabaseConfig := config.NewSupabaseConfig(envConfig.GetSupabaseURL(), envConfig.GetSupabaseKey(), envConfig.GetSupabaseBucket())
|
| 34 |
jWTConfig := config.NewJWTConfig(envConfig.GetSalt())
|
| 35 |
-
fmt.Println("We are here!")
|
| 36 |
xenditConfig := config.NewXenditConfig(envConfig)
|
| 37 |
return &configProvider{
|
| 38 |
databaseConfig: databaseConfig,
|
|
|
|
| 1 |
package provider
|
| 2 |
|
| 3 |
import (
|
|
|
|
|
|
|
| 4 |
"abdanhafidz.com/go-boilerplate/config"
|
| 5 |
)
|
| 6 |
|
|
|
|
| 24 |
|
| 25 |
func NewConfigProvider() ConfigProvider {
|
| 26 |
envConfig := config.NewEnvConfig("Asia / Jakarta")
|
|
|
|
| 27 |
databaseConfig := config.NewDatabaseConfig(envConfig.GetDatabaseHost(), envConfig.GetDatabaseUser(), envConfig.GetDatabasePassword(), envConfig.GetDatabaseName(), envConfig.GetDatabasePort())
|
|
|
|
| 28 |
uploadConfig := config.NewUploadConfig()
|
| 29 |
supabaseConfig := config.NewSupabaseConfig(envConfig.GetSupabaseURL(), envConfig.GetSupabaseKey(), envConfig.GetSupabaseBucket())
|
| 30 |
jWTConfig := config.NewJWTConfig(envConfig.GetSalt())
|
|
|
|
| 31 |
xenditConfig := config.NewXenditConfig(envConfig)
|
| 32 |
return &configProvider{
|
| 33 |
databaseConfig: databaseConfig,
|
provider/provider.go
CHANGED
|
@@ -78,6 +78,8 @@ func NewAppProvider() AppProvider {
|
|
| 78 |
&entity.EventExamAnswer{},
|
| 79 |
&entity.EventExamAttempt{},
|
| 80 |
&entity.Result{},
|
|
|
|
|
|
|
| 81 |
&entity.EventExamProctoringLogs{},
|
| 82 |
|
| 83 |
// Academy LMS
|
|
|
|
| 78 |
&entity.EventExamAnswer{},
|
| 79 |
&entity.EventExamAttempt{},
|
| 80 |
&entity.Result{},
|
| 81 |
+
&entity.ExamConfiguration{},
|
| 82 |
+
&entity.ExamProctoring{},
|
| 83 |
&entity.EventExamProctoringLogs{},
|
| 84 |
|
| 85 |
// Academy LMS
|
utils/utils.go
CHANGED
|
@@ -1,7 +1,9 @@
|
|
| 1 |
package utils
|
| 2 |
|
| 3 |
import (
|
|
|
|
| 4 |
"regexp"
|
|
|
|
| 5 |
"time"
|
| 6 |
|
| 7 |
http_error "abdanhafidz.com/go-boilerplate/models/error"
|
|
@@ -52,3 +54,22 @@ func ValidateCode(code string) error {
|
|
| 52 |
}
|
| 53 |
return nil
|
| 54 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
package utils
|
| 2 |
|
| 3 |
import (
|
| 4 |
+
"os"
|
| 5 |
"regexp"
|
| 6 |
+
"strings"
|
| 7 |
"time"
|
| 8 |
|
| 9 |
http_error "abdanhafidz.com/go-boilerplate/models/error"
|
|
|
|
| 54 |
}
|
| 55 |
return nil
|
| 56 |
}
|
| 57 |
+
|
| 58 |
+
func GetEnv(key string) string {
|
| 59 |
+
// 1. Normal env
|
| 60 |
+
if val := os.Getenv(key); val != "" {
|
| 61 |
+
return val
|
| 62 |
+
}
|
| 63 |
+
|
| 64 |
+
// 2. File-based secret
|
| 65 |
+
if file := os.Getenv(key + "_FILE"); file != "" {
|
| 66 |
+
data, err := os.ReadFile(file)
|
| 67 |
+
if err == nil {
|
| 68 |
+
return strings.TrimSpace(string(data))
|
| 69 |
+
} else {
|
| 70 |
+
panic(err)
|
| 71 |
+
}
|
| 72 |
+
}
|
| 73 |
+
|
| 74 |
+
return ""
|
| 75 |
+
}
|