diff options
| -rw-r--r-- | config.go | 54 | ||||
| -rw-r--r-- | db.go | 8 | ||||
| -rw-r--r-- | main.go | 30 |
3 files changed, 92 insertions, 0 deletions
diff --git a/config.go b/config.go new file mode 100644 index 0000000..f877eba --- /dev/null +++ b/config.go @@ -0,0 +1,54 @@ +package main + +import ( + log "github.com/Sirupsen/logrus" + "github.com/spf13/viper" +) + +type Config struct { + DBDBName string + DBHost string + DBPort int + DBUser string + DBPassword string + DBOptions string +} + +// Parses the configuration and sets the configuration struct. +func (c *Config) parseConfig(configFile string) { + + viper.SetDefault("DBDBName", "alkobote") + viper.SetDefault("DBHost", "127.0.0.1") + viper.SetDefault("DBPort", 3306) + + // Name of the configuration file + viper.SetConfigName("config") + + // Where to find the config file + if configFile == "" { + viper.AddConfigPath("/etc/alkobote.de/") + viper.AddConfigPath(".") + viper.AddConfigPath("$HOME/.config/alkobote.de/") + viper.AddConfigPath("$HOME/alkobote.de/") + } else { + viper.AddConfigPath(configFile) + } + + // Env variables need to be prefixed with "ALKOBOTE_" + viper.SetEnvPrefix("ALKOBOTE") + + // Parses automatic the matching env variables + viper.AutomaticEnv() + + // Reads the config + err := viper.ReadInConfig() + if err != nil { + log.WithFields( + log.Fields{ + "error": err.Error(), + }, + ).Fatal("Fatal error config file") + } + + c.setsConfig() +} @@ -0,0 +1,8 @@ +package main + +import ( + "github.com/jmoiron/sqlx" +) + +func save_offer(W []Angebot) { +} @@ -4,8 +4,19 @@ import ( "encoding/json" "fmt" "log" + + _ "database/sql" + _ "github.com/go-sql-driver/mysql" + "github.com/jmoiron/sqlx" ) +type App struct { + Offers []Angebot + Shops []Shop + Config *Config + DB *sqlx.DB +} + type Angebot struct { Name string Shop string @@ -17,8 +28,27 @@ type Angebot struct { Valid_until string } +type Shop struct { + Name string + Url string + Logo_url string + Shipping_costs int + Free_shipping string +} + func main() { + var err error + + app := App{Config: &Config{}} + app.Config.parseConfig("") + + // Hard coded mysql driver. + app.DB, err = sqlx.Connect("mysql", app.Config.DBUser+":"+app.Config.DBPassword+"@"+app.Config.DBHost+"/"+app.Config.DBDBName+app.Config.DBOptions) + if err != nil { + log.Fatal(err) + } + W := ScrapeBottleWord() printName(W, "BottleWorld") |
