| 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 | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 20 | } |
| 21 | |||||
| iomodo | c6abf5b | 2021-02-19 14:48:03 +0400 | [diff] [blame] | 22 | func NewConfig() *Config { |
| 23 | config := &Config{} | ||||
| 24 | config.SetDefaults() | ||||
| 25 | return config | ||||
| 26 | } | ||||
| 27 | |||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 28 | func (c *Config) SetDefaults() { |
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 29 | c.SQL.SetDefaults() |
| 30 | c.HTTP.SetDefaults() | ||||
| 31 | c.GRPC.SetDefaults() | ||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 32 | } |
| 33 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 34 | type SQLConfig struct { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 35 | DriverName string |
| 36 | DataSource string | ||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 37 | } |
| 38 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 39 | func (s *SQLConfig) SetDefaults() { |
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 40 | if s.DriverName == "" { |
| 41 | s.DriverName = databaseDriverPostgres | ||||
| 42 | } | ||||
| iomodo | 48c837e | 2021-02-19 01:17:07 +0400 | [diff] [blame] | 43 | if s.DataSource == "" { |
| 44 | s.DataSource = defaultDataSource | ||||
| 45 | } | ||||
| 46 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 47 | |
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 48 | type HTTPConfig struct { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 49 | Host string |
| 50 | Port int | ||||
| 51 | ReadTimeout int | ||||
| 52 | WriteTimeout int | ||||
| 53 | IdleTimeout int | ||||
| 54 | } | ||||
| 55 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 56 | func (s *HTTPConfig) SetDefaults() { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 57 | if s.Host == "" { |
| 58 | s.Host = defaultHTTPHost | ||||
| 59 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 60 | if s.Port == 0 { |
| 61 | s.Port = defaultHTTPPort | ||||
| 62 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 63 | if s.ReadTimeout == 0 { |
| 64 | s.ReadTimeout = defaultHTTPReadTimeout | ||||
| 65 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 66 | if s.WriteTimeout == 0 { |
| 67 | s.WriteTimeout = defaultHTTPWriteTimeout | ||||
| 68 | } | ||||
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 69 | if s.IdleTimeout == 0 { |
| 70 | s.IdleTimeout = defaultHTTPIdleTimeout | ||||
| 71 | } | ||||
| 72 | } | ||||
| 73 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 74 | type GRPCConfig struct { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 75 | Port int |
| 76 | } | ||||
| 77 | |||||
| iomodo | c0479a6 | 2021-02-22 20:08:36 +0400 | [diff] [blame] | 78 | func (s *GRPCConfig) SetDefaults() { |
| iomodo | b892d07 | 2021-02-22 00:23:16 +0400 | [diff] [blame] | 79 | if s.Port == 0 { |
| 80 | s.Port = defaultGRPCPort | ||||
| 81 | } | ||||
| 82 | } | ||||