2018-04-27 14:25:01 +00:00
|
|
|
package datastore
|
|
|
|
|
|
|
|
import (
|
|
|
|
"fmt"
|
|
|
|
|
|
|
|
"github.com/usefathom/fathom/pkg/models"
|
|
|
|
)
|
|
|
|
|
|
|
|
func SaveTotals(metric string, totals []*models.Total) error {
|
2018-05-02 12:52:52 +00:00
|
|
|
query := fmt.Sprintf(`INSERT INTO total_%s( value, count, count_unique, date) VALUES( ?, ?, ?, ? ) ON DUPLICATE KEY UPDATE count = ?, count_unique = ?`, metric)
|
|
|
|
query = dbx.Rebind(query)
|
2018-04-27 14:25:01 +00:00
|
|
|
|
|
|
|
tx, err := dbx.Begin()
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
stmt, err := tx.Prepare(query)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
defer stmt.Close()
|
|
|
|
|
|
|
|
for _, t := range totals {
|
|
|
|
result, err := stmt.Exec(t.Value, t.Count, t.CountUnique, t.Date, t.Count, t.CountUnique)
|
|
|
|
if err != nil {
|
|
|
|
return err
|
|
|
|
}
|
|
|
|
|
|
|
|
t.ID, _ = result.LastInsertId()
|
|
|
|
}
|
|
|
|
|
|
|
|
err = tx.Commit()
|
|
|
|
return err
|
|
|
|
}
|