Save lost storage.go file
This commit is contained in:
parent
3ca1f29272
commit
34c64210a2
|
@ -14,14 +14,21 @@ func (stor *Storage) init() error {
|
|||
// initialization
|
||||
sql_table := `
|
||||
CREATE TABLE IF NOT EXISTS geopoints (
|
||||
device VARCHAR(256), timestamp INTEGER, lon REAL, lat REAL, alt REAL, acc REAL, velocity REAL, bearing REAL, PRIMARY KEY(owner, timestamp)
|
||||
device VARCHAR(256), timestamp INTEGER, lon REAL, lat REAL, alt REAL, acc REAL, velocity REAL, bearing REAL, PRIMARY KEY(device, timestamp)
|
||||
);
|
||||
`
|
||||
if _, err := stor.db.Exec(sql_table); err != nil {
|
||||
tx, err := stor.db.Begin()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if _, err := tx.Exec(sql_table); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
|
||||
return nil
|
||||
func (stor *Storage) IsReady() bool {
|
||||
return stor.db != nil
|
||||
}
|
||||
|
||||
func CreateDatabase(filename string) (Storage, error) {
|
||||
|
@ -40,13 +47,37 @@ func (stor *Storage) InsertLocation(device string, loc Location) error {
|
|||
if err != nil {
|
||||
return err
|
||||
}
|
||||
sql := "INSERT INTO geopoints (device, timestamp, lon, lat, alt, acc, velocity, bearing) VALUES (?,?,?,?,?,?,?)"
|
||||
sql := "INSERT INTO geopoints (device, timestamp, lon, lat, alt, acc, velocity, bearing) VALUES (?,?,?,?,?,?,?,?)"
|
||||
stmt, err := tx.Prepare(sql)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer stmt.Close()
|
||||
stmt.Exec(device, loc.Timestamp, loc.Lon, loc.Lat, loc.Alt, loc.Velocity, loc.Bearing)
|
||||
|
||||
_, err = stmt.Exec(device, loc.Timestamp, loc.Lon, loc.Lat, loc.Alt, loc.Acc, loc.Velocity, loc.Bearing)
|
||||
if err != nil {
|
||||
stmt.Close()
|
||||
return err
|
||||
}
|
||||
if err := stmt.Close(); err != nil {
|
||||
return err
|
||||
}
|
||||
return tx.Commit()
|
||||
}
|
||||
func (stor *Storage) GetLastLocation(device string) (Location, error) {
|
||||
var loc Location
|
||||
sql := "SELECT timestamp, lon, lat, alt, acc, velocity, bearing FROM geopoints WHERE device LIKE ? ORDER BY timestamp DESC LIMIT 1"
|
||||
stmt, err := stor.db.Prepare(sql)
|
||||
if err != nil {
|
||||
return loc, err
|
||||
}
|
||||
defer stmt.Close()
|
||||
rows, err := stmt.Query(device)
|
||||
if err != nil {
|
||||
return loc, err
|
||||
}
|
||||
defer rows.Close()
|
||||
if rows.Next() {
|
||||
err := rows.Scan(&loc.Timestamp, &loc.Lon, &loc.Lat, &loc.Alt, &loc.Acc, &loc.Velocity, &loc.Bearing)
|
||||
return loc, err
|
||||
}
|
||||
return loc, nil
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue