diff --git a/.env.example b/.env.example index 7580023..9a888a7 100644 --- a/.env.example +++ b/.env.example @@ -2,6 +2,7 @@ APP_ENV=dev APP_DEBUG=true WEB_URL=http://localhost:3000 +DB_CONNECT=true DB_HOST=localhost DB_PORT=3306 DB_DATABASE=tonic @@ -9,6 +10,7 @@ DB_USERNAME=root DB_PASSWORD= DB_LOGGING=true +OS_CONNECT=true OS_HOST=http://localhost:9200 OS_USERNAME=admin -OS_PASSWORD=admin \ No newline at end of file +OS_PASSWORD=admin diff --git a/database/database.go b/database/database.go index 0609a51..f3e622a 100644 --- a/database/database.go +++ b/database/database.go @@ -33,33 +33,38 @@ func DURL() string { func Setup() { var err error var logMode = logger.Error + if setting.Database.Logging == "true" { logMode = logger.Info } - Db, err = gorm.Open( - mysql.New(mysql.Config{ - DSN: DSN()}, - ), - &gorm.Config{ - Logger: logger.Default.LogMode(logMode), - }, - ) - if err != nil { - log.Fatalf("gorm.DB err: %v", err) + if setting.Database.Connect == "true" { + Db, err = gorm.Open( + mysql.New(mysql.Config{ + DSN: DSN()}, + ), + &gorm.Config{ + Logger: logger.Default.LogMode(logMode), + }, + ) + if err != nil { + log.Fatalf("gorm.DB err: %v", err) + } } - Os, err = opensearch.NewClient(opensearch.Config{ - Transport: &http.Transport{ - TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, - }, - Addresses: []string{setting.Opensearch.Address}, - Username: setting.Opensearch.Username, - Password: setting.Opensearch.Password, - }) + if setting.Opensearch.Connect == "true" { + Os, err = opensearch.NewClient(opensearch.Config{ + Transport: &http.Transport{ + TLSClientConfig: &tls.Config{InsecureSkipVerify: true}, + }, + Addresses: []string{setting.Opensearch.Address}, + Username: setting.Opensearch.Username, + Password: setting.Opensearch.Password, + }) - if err != nil { - log.Fatalf("opensearch.NewClient err: %v", err) + if err != nil { + log.Fatalf("opensearch.NewClient err: %v", err) + } } } diff --git a/readme.md b/readme.md index 2e19b9d..e1ac826 100644 --- a/readme.md +++ b/readme.md @@ -16,6 +16,14 @@ Tonic is a web application framework that supplies tools and libraries on top of ## Getting Started +### environment variables + +Take a look at [.env.example](https://github.com/fumeapp/tonic/blob/main/.env.example) for an example of how to set up environment variables. Copy it to `.env` and modify them to your needs +* Any ENV variable you do not set will default to what is in `.env.example` +* Make sure to set DB_CONNECT=true if you want to use the MySQL database +* Make sure to set OS_CONNECT=true if you want to use the Opensearch database + + ### Endpoint Configuration Define an endpoint that you can call locally and remotely. * In this example we bind `/` to a standard JSON response diff --git a/setting/database.go b/setting/database.go index 547ca37..d8ddcb4 100644 --- a/setting/database.go +++ b/setting/database.go @@ -1,7 +1,7 @@ package setting type DatabaseSetting struct { - Driver string + Connect string Host string Database string Username string @@ -14,8 +14,8 @@ var Database = &DatabaseSetting{} func DatabaseSetup() *DatabaseSetting { + Database.Connect = env("DB_CONNECT", "false") Database.Logging = env("DB_LOGGING", "false") - Database.Driver = env("DB_DRIVER", "mysql") Database.Host = env("DB_HOST", "localhost") Database.Database = env("DB_DATABASE", "tonic") Database.Username = env("DB_USERNAME", "root") diff --git a/setting/opensearch.go b/setting/opensearch.go index 687f6f6..2225cdb 100644 --- a/setting/opensearch.go +++ b/setting/opensearch.go @@ -1,6 +1,7 @@ package setting type OpensearchSetting struct { + Connect string Address string Username string Password string @@ -10,6 +11,7 @@ var Opensearch = &OpensearchSetting{} func OpensearchSetup() *OpensearchSetting { + Opensearch.Connect = env("OS_CONNECT", "false") Opensearch.Address = env("OS_HOST", "http://localhost:9200") Opensearch.Username = env("OS_USERNAME", "admin") Opensearch.Password = env("OS_PASSWORD", "admin") diff --git a/setting/setting.go b/setting/setting.go index 5fd4637..9b4c8ac 100644 --- a/setting/setting.go +++ b/setting/setting.go @@ -14,8 +14,7 @@ func env(key string, config string) string { } func Setup() (*CoreSetting, *DatabaseSetting, *OpensearchSetting) { - if err := godotenv.Load(); err != nil { - } + _ = godotenv.Load() return CoreSetup(), DatabaseSetup(), OpensearchSetup() } @@ -25,3 +24,7 @@ func IsDev() bool { func IsDebug() bool { return env("APP_DEBUG", "false") == "true" } + +func GetWebUrl() string { + return env("WEB_URL", "http://localhost:3000") +}