updated data inserts
This commit is contained in:
parent
fa64395c4d
commit
dbe0564ec0
@ -30,16 +30,23 @@ func main() {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
// Processes data for 'Global'
|
||||
_, err = db.Exec(cfg.DbSchemaGlobal)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
_, err = db.Exec(cfg.DbSchemaPays)
|
||||
|
||||
err = cr.InsertGlobalData(cfg, *db)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
err = cr.InsertData(cfg, *db)
|
||||
// Processes data for 'Pays'
|
||||
_, err = db.Exec(cfg.DbSchemaPays)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
err = cr.InsertPaysData(cfg, *db)
|
||||
if err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
@ -32,11 +32,11 @@ func (config *Config) GetConfig() (err error) {
|
||||
|
||||
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 IGNORE INTO coronaglobaldata (date, infection, deces, guerisons, tauxdeces, tauxguerison, tauxinfection) VALUES ('%s', %d, %d , %d, %g, %g, %g);"
|
||||
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.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 IGNORE INTO coronapaysdata (date, pays, infection, deces, guerisons, tauxdeces, tauxguerison, tauxinfection) VALUES ('%s', '%s', %d, %d , %d, %g, %g, %g);"
|
||||
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;"
|
||||
|
||||
return
|
||||
}
|
||||
|
@ -2,7 +2,6 @@ package coronafana
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"io/ioutil"
|
||||
"net/http"
|
||||
"strings"
|
||||
@ -34,48 +33,75 @@ func GetData(cfg config.Config) (cr Coronafana, err error) {
|
||||
return
|
||||
}
|
||||
|
||||
// InsertData insert data to MySQL / MariaDB
|
||||
func (cr Coronafana) InsertData(cfg config.Config, db sqlx.DB) (err error) {
|
||||
tx := db.MustBegin()
|
||||
// InsertGlobalData insert data to MySQL / MariaDB
|
||||
func (cr Coronafana) InsertGlobalData(cfg config.Config, db sqlx.DB) (err error) {
|
||||
var tx *sqlx.Tx
|
||||
tx = db.MustBegin()
|
||||
txStmtglobal, err := tx.PrepareNamed(cfg.DbInsertGlobal)
|
||||
for _, dt := range cr.GlobalData {
|
||||
query := fmt.Sprintf(cfg.DbInsertGlobal, dt.Date, dt.Infection, dt.Deces, dt.Guerisons, dt.TauxDeces, dt.TauxGuerison, dt.TauxInfection)
|
||||
tx.MustExec(query)
|
||||
_, err = txStmtglobal.Exec(&dt)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
for _, dt := range cr.PaysData {
|
||||
query := fmt.Sprintf(cfg.DbInsertPays, dt.Date, strings.Replace(dt.Pays, `'`, `\'`, -1), dt.Infection, dt.Deces, dt.Guerisons, dt.TauxDeces, dt.TauxGuerison, dt.TauxInfection)
|
||||
tx.MustExec(query)
|
||||
}
|
||||
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
return err
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// InsertPaysData insert data to MySQL / MariaDB
|
||||
func (cr Coronafana) InsertPaysData(cfg config.Config, db sqlx.DB) (err error) {
|
||||
var tx *sqlx.Tx
|
||||
tx = db.MustBegin()
|
||||
cr.ReplacePaysQuotes()
|
||||
txStmtpays, err := tx.PrepareNamed(cfg.DbInsertPays)
|
||||
for _, dt := range cr.PaysData {
|
||||
_, err = txStmtpays.Exec(&dt)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
}
|
||||
err = tx.Commit()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
// ReplacePaysQuotes escapes quotes in Pays names
|
||||
func (cr Coronafana) ReplacePaysQuotes() (err error) {
|
||||
for _, pad := range cr.PaysData {
|
||||
pad.Pays = strings.Replace(pad.Pays, `'`, `\'`, -1)
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
// Coronafana is the main struct
|
||||
type Coronafana struct {
|
||||
Source string `json:"Source"`
|
||||
Information string `json:"Information"`
|
||||
Utilisation string `json:"Utilisation"`
|
||||
GlobalData []struct {
|
||||
Date string `json:"Date" gorm:"primary_key"`
|
||||
Infection int `json:"Infection"`
|
||||
Deces int `json:"Deces"`
|
||||
Guerisons int `json:"Guerisons"`
|
||||
TauxDeces float64 `json:"TauxDeces"`
|
||||
TauxGuerison float64 `json:"TauxGuerison"`
|
||||
TauxInfection float64 `json:"TauxInfection"`
|
||||
Date string `json:"Date" gorm:"primary_key" db:"date"`
|
||||
Infection int `json:"Infection" db:"infection"`
|
||||
Deces int `json:"Deces" db:"deces"`
|
||||
Guerisons int `json:"Guerisons" db:"guerisons"`
|
||||
TauxDeces float64 `json:"TauxDeces" db:"tauxdeces"`
|
||||
TauxGuerison float64 `json:"TauxGuerison" db:"tauxguerison"`
|
||||
TauxInfection float64 `json:"TauxInfection" db:"tauxinfection"`
|
||||
} `json:"GlobalData"`
|
||||
PaysData []struct {
|
||||
Date string `json:"Date" gorm:"primary_key"`
|
||||
Pays string `json:"Pays"`
|
||||
Infection int `json:"Infection"`
|
||||
Deces int `json:"Deces"`
|
||||
Guerisons int `json:"Guerisons"`
|
||||
TauxDeces float64 `json:"TauxDeces"`
|
||||
TauxGuerison float64 `json:"TauxGuerison"`
|
||||
TauxInfection float64 `json:"TauxInfection"`
|
||||
Date string `json:"Date" gorm:"primary_key" db:"date"`
|
||||
Pays string `json:"Pays" db:"pays"`
|
||||
Infection int `json:"Infection" db:"infection"`
|
||||
Deces int `json:"Deces" db:"deces"`
|
||||
Guerisons int `json:"Guerisons" db:"guerisons"`
|
||||
TauxDeces float64 `json:"TauxDeces" db:"tauxdeces"`
|
||||
TauxGuerison float64 `json:"TauxGuerison" db:"tauxguerison"`
|
||||
TauxInfection float64 `json:"TauxInfection" db:"tauxinfection"`
|
||||
} `json:"PaysData"`
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user