Fix MK integration
This commit is contained in:
+36
-11
@@ -27,6 +27,11 @@ type Measurement struct {
|
||||
ResultID string `db:"result_id"`
|
||||
}
|
||||
|
||||
// SetGeoIPInfo for the Measurement
|
||||
func (m *Measurement) SetGeoIPInfo() error {
|
||||
return nil
|
||||
}
|
||||
|
||||
// CreateMeasurement writes the measurement to the database a returns a pointer
|
||||
// to the Measurement
|
||||
func CreateMeasurement(db *sqlx.DB, m Measurement) (*Measurement, error) {
|
||||
@@ -53,27 +58,47 @@ func CreateMeasurement(db *sqlx.DB, m Measurement) (*Measurement, error) {
|
||||
return &m, nil
|
||||
}
|
||||
|
||||
// Update the measurement in the database
|
||||
func (r Measurement) Update(db *sqlx.DB) error {
|
||||
// XXX implement me
|
||||
return nil
|
||||
}
|
||||
|
||||
// Result model
|
||||
type Result struct {
|
||||
ID int64 `db:"id"`
|
||||
Name string `db:"name"`
|
||||
StartTime time.Time `db:"start_time"`
|
||||
EndTime time.Time `db:"end_time"`
|
||||
Runtime float64 `db:"runtime"` // Runtime is expressed in Microseconds
|
||||
Summary string `db:"summary"` // XXX this should be JSON
|
||||
Done bool `db:"done"`
|
||||
DataUsageUp int64 `db:"data_usage_up"`
|
||||
DataUsageDown int64 `db:"data_usage_down"`
|
||||
|
||||
started time.Time
|
||||
}
|
||||
|
||||
// Update the Result in the database
|
||||
func (r Result) Update(db *sqlx.DB) error {
|
||||
// XXX implement me
|
||||
// Started marks the Result as having started
|
||||
func (r *Result) Started(db *sqlx.DB) error {
|
||||
r.started = time.Now()
|
||||
return nil
|
||||
}
|
||||
|
||||
// Finished marks the result as done and sets the runtime
|
||||
func (r *Result) Finished(db *sqlx.DB) error {
|
||||
if r.Done == true || r.Runtime != 0 {
|
||||
return errors.New("Result is already finished")
|
||||
}
|
||||
r.Runtime = float64(time.Now().Sub(r.started)) / float64(time.Microsecond)
|
||||
r.Done = true
|
||||
|
||||
res, err := db.NamedExec(`UPDATE results
|
||||
SET done = true, runtime = :runtime
|
||||
WHERE id = :id`, r)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "updating result")
|
||||
}
|
||||
count, err := res.RowsAffected()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "updating result")
|
||||
}
|
||||
if count != 1 {
|
||||
return errors.New("inconsistent update count")
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -90,7 +115,7 @@ func CreateResult(db *sqlx.DB, r Result) (*Result, error) {
|
||||
}
|
||||
id, err := res.LastInsertId()
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "creating measurement")
|
||||
return nil, errors.Wrap(err, "creating result")
|
||||
}
|
||||
r.ID = id
|
||||
return &r, nil
|
||||
|
||||
Reference in New Issue
Block a user