config

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 21, 2021 License: Apache-2.0 Imports: 6 Imported by: 0

Documentation

Overview

 Package config provides a flexible configuration management type, allowing for the usage of YAML files or environment variables.
   For details on how the environment variable based configuration works please see https://github.com/vrischmann/envconfig#how-does-it-work however a basic example is included below
	```
		var conf struct {
			Name string
			Shard struct {
				Host string
				Port int
			}
		}
	```
	The above struct will check for the following keys:
		* NAME or name
    	* SHARD_HOST, or shard_host
    	* SHARD_PORT, or shard_port

Index

Constants

This section is empty.

Variables

View Source
var (
	// ExampleConfig is primarily used to provide a template for generating the config file
	ExampleConfig = &Config{
		Database: Database{
			Type:           "sqlite",
			Host:           "localhost",
			Port:           "5432",
			User:           "postgres",
			Pass:           "password123",
			DBName:         "go-template",
			DBPath:         "",
			SSLModeDisable: false,
		},
		Logger: Logger{
			Path:  "go-template.log",
			Debug: true,
			Dev:   true,
		},
	}
)

Functions

func NewConfig

func NewConfig(path string) error

NewConfig generates a new config and stores at path

Types

type Config

type Config struct {
	Database `yaml:"database" envconfig:"optional"`
	Logger   `yaml:"logger"`
}

Config provides the base configuration type

func LoadConfig

func LoadConfig(path string) (cfg *Config, err error)

LoadConfig loads the configuration at path however if loading from path fails, we attempt to load from environment variabels

func (*Config) ZapLogger

func (c *Config) ZapLogger() (*zap.Logger, error)

ZapLogger parses the Logger configuration struct and returns a zap logger instance

type Database

type Database struct {
	// Type specifies the database type to be used
	// currently supports: sqlite, postgres
	// when using sqlite type all other options except DBName and DBPath are ignore
	Type string `yaml:"type"`
	// Host specifies the database host address
	Host string `yaml:"host"  envconfig:"optional"`
	// Port specifies the port the database is exposed on
	Port string `yaml:"port"  envconfig:"optional"`
	// User specifies the username to use for authentication
	User string `yaml:"user"  envconfig:"optional"`
	// Pass specifies the password to use for authentication
	Pass string `yaml:"pass"  envconfig:"optional"`
	// DBName specifies the name of the database
	DBName string `yaml:"db_name"`
	// DBPath specifies the path to the database file (only applicable to sqlite)
	DBPath string `yaml:"db_path"  envconfig:"optional"`
	// SSLModeDisable specifies whether or not to disable ssl connection layer security
	SSLModeDisable bool `yaml:"ssl_mode_disable"  envconfig:"optional"`
}

Database provides configuration over our database connection

type Logger

type Logger struct {
	// Path to store the configuration file
	Path string `yaml:"path" envconfig:"default=go-template.log"`
	// Debug enables displaying of debug logs
	Debug bool `yaml:"debug" envconfig:"optional"`
	// Dev enables foramtting of logs to be more human readable
	Dev bool `yaml:"dev" envconfig:"optional"`
	// FileOnly disables stdout logging and will only display log output in `Path`
	FileOnly bool `yaml:"file_only" envconfig:"optional"`
	// Fields provides optional fields to use for logging metadata
	Fields map[string]interface{} `yaml:"fields" envconfig:"optional"`
}

Logger provides configuration over zap logger

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL