113 lines
3.2 KiB
Go
113 lines
3.2 KiB
Go
package config
|
|
|
|
import (
|
|
"flag"
|
|
|
|
"git.paulbsd.com/paulbsd/coronafana/utils"
|
|
"gopkg.in/ini.v1"
|
|
)
|
|
|
|
// GetConfig fetch configuration
|
|
func (config *Config) GetConfig() (err error) {
|
|
var configfile string
|
|
|
|
flag.Usage = utils.Usage
|
|
|
|
flag.StringVar(&configfile, "configfile", "coronafana.ini", "Config file to use with coronafana section")
|
|
flag.Parse()
|
|
|
|
cfg, err := ini.Load(configfile)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
*config = Config{
|
|
DbHostname: "localhost",
|
|
DbName: "database",
|
|
DbUsername: "username",
|
|
DbPassword: "password",
|
|
DbTable: "corona",
|
|
CoronaURL: "https://coronavirus.politologue.com/data/coronavirus/coronacsv.aspx?format=json",
|
|
}
|
|
|
|
err = cfg.Section("coronafana").MapTo(config)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
config.DbSchemaGlobal = `
|
|
CREATE TABLE IF NOT EXISTS coronaglobaldata
|
|
(
|
|
id int(8) NOT NULL AUTO_INCREMENT,
|
|
date datetime NOT NULL,
|
|
infection int(8) DEFAULT NULL,
|
|
deces int(8) DEFAULT NULL,
|
|
guerisons varchar(50) DEFAULT NULL,
|
|
tauxdeces float(10) DEFAULT NULL,
|
|
tauxguerison float(10) DEFAULT NULL,
|
|
tauxinfection float(10) DEFAULT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY date (date) USING BTREE
|
|
)
|
|
ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
`
|
|
|
|
config.DbInsertGlobal = `
|
|
INSERT INTO coronaglobaldata (date, infection, deces, guerisons, tauxdeces, tauxguerison, tauxinfection)
|
|
VALUES (:date, :infection, :deces, :guerisons, :tauxdeces, :tauxguerison, :tauxinfection)
|
|
ON DUPLICATE KEY UPDATE date=:date,infection=:infection, deces=:deces, guerisons=:guerisons, tauxdeces=:tauxdeces, tauxguerison=:tauxguerison, tauxinfection=:tauxinfection;
|
|
`
|
|
|
|
config.DbMaxDateGlobal = `
|
|
SELECT IFNULL(SUBDATE(MAX(date), INTERVAL 3 DAY), "0001-01-01 00:00:00")
|
|
FROM coronaglobaldata;
|
|
`
|
|
|
|
config.DbSchemaPays = `
|
|
CREATE TABLE IF NOT EXISTS coronapaysdata
|
|
(
|
|
id int(8) NOT NULL AUTO_INCREMENT,
|
|
date datetime NOT NULL,
|
|
pays varchar(50) NOT NULL,
|
|
infection int(8) DEFAULT NULL,
|
|
deces int(8) DEFAULT NULL,
|
|
guerisons varchar(50) DEFAULT NULL,
|
|
tauxdeces float(10) DEFAULT NULL,
|
|
tauxguerison float(10) DEFAULT NULL,
|
|
tauxinfection float(10) DEFAULT NULL,
|
|
PRIMARY KEY (id),
|
|
UNIQUE KEY date (date,pays) USING BTREE
|
|
)
|
|
ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
|
`
|
|
|
|
config.DbInsertPays = `
|
|
INSERT INTO coronapaysdata (date, pays, infection, deces, guerisons, tauxdeces, tauxguerison, tauxinfection)
|
|
VALUES (:date, :pays, :infection, :deces, :guerisons, :tauxdeces, :tauxguerison, :tauxinfection)
|
|
ON DUPLICATE KEY UPDATE date=:date, pays=:pays,infection=:infection, deces=:deces, guerisons=:guerisons, tauxdeces=:tauxdeces, tauxguerison=:tauxguerison, tauxinfection=:tauxinfection;
|
|
`
|
|
|
|
config.DbMaxDatePays = `
|
|
SELECT IFNULL(SUBDATE(MAX(date), INTERVAL 3 DAY), "0001-01-01 00:00:00")
|
|
FROM coronapaysdata;
|
|
`
|
|
|
|
return
|
|
}
|
|
|
|
// Config is the global config of g2g
|
|
type Config struct {
|
|
DbHostname string `ini:"db_hostname"`
|
|
DbName string `ini:"db_name"`
|
|
DbUsername string `ini:"db_username"`
|
|
DbPassword string `ini:"db_password"`
|
|
DbTable string `ini:"db_table"`
|
|
DbSchemaGlobal string
|
|
DbInsertGlobal string
|
|
DbMaxDateGlobal string
|
|
DbSchemaPays string
|
|
DbInsertPays string
|
|
DbMaxDatePays string
|
|
CoronaURL string
|
|
}
|