| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 1 | package model |
| 2 | |||||
| 3 | const ( | ||||
| 4 | databaseDriverPostgres = "postgres" | ||||
| 5 | defaultDataSource = "postgres://user:test@localhost/pcloud_test?sslmode=disable&connect_timeout=10" | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 6 | |
| 7 | defaultHTTPHost = "0.0.0.0" | ||||
| 8 | defaultHTTPPort = 9086 | ||||
| 9 | defaultHTTPReadTimeout = 5 | ||||
| 10 | defaultHTTPWriteTimeout = 10 | ||||
| 11 | defaultHTTPIdleTimeout = 120 | ||||
| 12 | |||||
| 13 | defaultGRPCPort = 9087 | ||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 14 | ) |
| 15 | |||||
| 16 | type Config struct { | ||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 17 | SQL SQLConfig |
| 18 | HTTP HTTPConfig | ||||
| 19 | GRPC GRPCConfig | ||||
| iomodo | 352127d | 2021-03-26 20:10:32 +0400 | [diff] [blame] | 20 | App AppConfig |
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 21 | } |
| 22 | |||||
| iomodo | c6abf5b | 2021-02-19 14:48:03 +0400 | [diff] [blame] | 23 | func NewConfig() *Config { |
| 24 | config := &Config{} | ||||
| 25 | config.SetDefaults() | ||||
| 26 | return config | ||||
| 27 | } | ||||
| 28 | |||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 29 | func (c *Config) SetDefaults() { |
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 30 | c.SQL.SetDefaults() |
| 31 | c.HTTP.SetDefaults() | ||||
| 32 | c.GRPC.SetDefaults() | ||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 33 | } |
| 34 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 35 | type SQLConfig struct { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 36 | DriverName string |
| 37 | DataSource string | ||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 38 | } |
| 39 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 40 | func (s *SQLConfig) SetDefaults() { |
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 41 | if s.DriverName == "" { |
| 42 | s.DriverName = databaseDriverPostgres | ||||
| 43 | } | ||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 44 | if s.DataSource == "" { |
| 45 | s.DataSource = defaultDataSource | ||||
| 46 | } | ||||
| 47 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 48 | |
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 49 | type HTTPConfig struct { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 50 | Host string |
| 51 | Port int | ||||
| 52 | ReadTimeout int | ||||
| 53 | WriteTimeout int | ||||
| 54 | IdleTimeout int | ||||
| 55 | } | ||||
| 56 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 57 | func (s *HTTPConfig) SetDefaults() { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 58 | if s.Host == "" { |
| 59 | s.Host = defaultHTTPHost | ||||
| 60 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 61 | if s.Port == 0 { |
| 62 | s.Port = defaultHTTPPort | ||||
| 63 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 64 | if s.ReadTimeout == 0 { |
| 65 | s.ReadTimeout = defaultHTTPReadTimeout | ||||
| 66 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 67 | if s.WriteTimeout == 0 { |
| 68 | s.WriteTimeout = defaultHTTPWriteTimeout | ||||
| 69 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 70 | if s.IdleTimeout == 0 { |
| 71 | s.IdleTimeout = defaultHTTPIdleTimeout | ||||
| 72 | } | ||||
| 73 | } | ||||
| 74 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 75 | type GRPCConfig struct { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 76 | Port int |
| 77 | } | ||||
| 78 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 79 | func (s *GRPCConfig) SetDefaults() { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 80 | if s.Port == 0 { |
| 81 | s.Port = defaultGRPCPort | ||||
| 82 | } | ||||
| 83 | } | ||||
| iomodo | 352127d | 2021-03-26 20:10:32 +0400 | [diff] [blame] | 84 | |
| 85 | type AppConfig struct { | ||||
| 86 | EnableSignUp *bool | ||||
| 87 | } | ||||
| 88 | |||||
| 89 | func (s *AppConfig) SetDefaults() { | ||||
| 90 | if s.EnableSignUp == nil { | ||||
| 91 | s.EnableSignUp = NewBool(true) | ||||
| 92 | } | ||||
| 93 | } | ||||
| 94 | |||||
| 95 | func NewBool(b bool) *bool { return &b } | ||||