feat: add connect Non-URL
This commit is contained in:
parent
1b715daf8f
commit
b2b45866bc
3 changed files with 65 additions and 9 deletions
19
.env.example
19
.env.example
|
@ -1,11 +1,24 @@
|
|||
# Database (URL 형식과 Non-URL 형식 중 하나를 선택)
|
||||
## URL 형식
|
||||
DATABASE_URL=
|
||||
|
||||
## Non-URL 형식
|
||||
DATABASE_USERNAME=
|
||||
DATABASE_PASSWORD=
|
||||
DATABASE_HOSTNAME= # 해당 값은 도커로 실행할 때 필요하지 않음.
|
||||
DATABASE_PORT=
|
||||
DATABASE_AUTH_SOURCE= # 기본 값: admin
|
||||
|
||||
## 필수 값
|
||||
DATABASE_NAME=
|
||||
|
||||
## 데이터베이스 마이그레이션용
|
||||
PREVIOUS_DATABASE_URL=
|
||||
|
||||
# 봇
|
||||
BOT_TOKEN=
|
||||
BOT_PREFIX=
|
||||
BOT_OWNER_ID=
|
||||
|
||||
# If you need
|
||||
PREVIOUS_DATABASE_URL=
|
||||
|
||||
# 학습 (필수 아님)
|
||||
TRAIN_USER_ID=
|
3
.vscode/settings.json
vendored
Normal file
3
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,3 @@
|
|||
{
|
||||
"makefile.configureOnOpen": false
|
||||
}
|
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
"log"
|
||||
"os"
|
||||
"strconv"
|
||||
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
@ -18,11 +19,26 @@ type trainConfig struct {
|
|||
UserID string
|
||||
}
|
||||
|
||||
type databaseConfig struct {
|
||||
Name string
|
||||
URL string
|
||||
HostName string
|
||||
Username string
|
||||
Password string
|
||||
AuthSource string
|
||||
Port int
|
||||
}
|
||||
|
||||
// MuffinConfig for Muffin bot
|
||||
type MuffinConfig struct {
|
||||
Bot botConfig
|
||||
Train trainConfig
|
||||
DatabaseURL string
|
||||
Bot botConfig
|
||||
Train trainConfig
|
||||
Database databaseConfig
|
||||
|
||||
// Deprecated: Use Database.URL
|
||||
DatabaseURL string
|
||||
|
||||
// Deprecated: Use Database.Name
|
||||
DatabaseName string
|
||||
}
|
||||
|
||||
|
@ -30,7 +46,7 @@ var Config *MuffinConfig
|
|||
|
||||
func init() {
|
||||
godotenv.Load()
|
||||
Config = &MuffinConfig{Bot: botConfig{}, Train: trainConfig{}}
|
||||
Config = &MuffinConfig{Bot: botConfig{}, Train: trainConfig{}, Database: databaseConfig{}}
|
||||
setConfig(Config)
|
||||
}
|
||||
|
||||
|
@ -53,6 +69,30 @@ func setConfig(config *MuffinConfig) {
|
|||
|
||||
config.Train.UserID = getValue("TRAIN_USER_ID")
|
||||
|
||||
config.DatabaseURL = getRequiredValue("DATABASE_URL")
|
||||
config.DatabaseName = getRequiredValue("DATABASE_NAME")
|
||||
config.Database.URL = getValue("DATABASE_URL")
|
||||
config.Database.HostName = getValue("DATABASE_HOSTNAME")
|
||||
config.Database.Password = getValue("DATABASE_PASSWORD")
|
||||
config.Database.Username = getValue("DATABASE_USERNAME")
|
||||
config.Database.AuthSource = getValue("DATABASE_AUTH_SOURCE")
|
||||
config.Database.Name = getRequiredValue("DATABASE_NAME")
|
||||
port, err := strconv.Atoi(getValue("DATABASE_PORT"))
|
||||
if err != nil {
|
||||
log.Println("[goMuffin] 'DATABASE_PORT'값을 int로 파싱할 수 없어요.")
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
config.Database.Port = port
|
||||
|
||||
if config.Database.AuthSource == "" {
|
||||
config.Database.AuthSource = "admin"
|
||||
}
|
||||
|
||||
if config.Database.URL == "" {
|
||||
config.Database.URL = fmt.Sprintf("mongodb://%s:%s@%s:%d/?authSource=%s", config.Database.Username, config.Database.Password, config.Database.HostName, config.Database.Port, config.Database.AuthSource)
|
||||
}
|
||||
fmt.Println(config.Database.URL)
|
||||
|
||||
// Deprecated된 Value
|
||||
config.DatabaseURL = config.Database.URL
|
||||
config.DatabaseName = config.Database.Name
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue