/
config.go
45 lines (40 loc) · 1.88 KB
/
config.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
package config
import (
"github.com/kelseyhightower/envconfig"
"github.com/jinzhu/gorm"
_ "github.com/jinzhu/gorm/dialects/postgres"
_ "github.com/lib/pq"
)
type Settings struct {
Port string `envconfig:"port" default:"3000"`
BrokerUsername string `envconfig:"broker_username" required:"true"`
BrokerPassword string `envconfig:"broker_password" required:"true"`
DatabaseUrl string `envconfig:"database_url" required:"true"`
Email string `envconfig:"email" required:"true"`
AcmeUrl string `envconfig:"acme_url" required:"true"`
MaxRoutes int `envconfig:"max_routes" default:"24"`
Bucket string `envconfig:"bucket" required:"true"`
ALBPrefix string `envconfig:"alb_prefix" default:"domains-broker"`
IamPathPrefix string `envconfig:"iam_path_prefix" default:"/domains-broker/"`
AwsAccessKeyId string `envconfig:"aws_access_key_id"`
AwsSecretAccessKey string `envconfig:"aws_secret_access_key"`
AwsDefaultRegion string `envconfig:"aws_default_region" required:"true"`
ServerSideEncryption string `envconfig:"server_side_encryption"`
APIAddress string `envconfig:"api_address" required:"true"`
ClientID string `envconfig:"client_id" required:"true"`
ClientSecret string `envconfig:"client_secret" required:"true"`
Schedule string `envconfig:"schedule" default:"0 0 * * * *"`
RenewDays int `envconfig:"renew_days" default:"30"`
UserIdPool []string `envconfig:"user_id_pool" required:"true"`
}
func NewSettings() (Settings, error) {
var settings Settings
err := envconfig.Process("cdn", &settings)
if err != nil {
return Settings{}, err
}
return settings, nil
}
func Connect(settings Settings) (*gorm.DB, error) {
return gorm.Open("postgres", settings.DatabaseUrl)
}