This repository has been archived on 2020-08-21. You can view files and clone it, but cannot push or open issues or pull requests.
filicop/server/models/mission.go

96 lines
2.7 KiB
Go

package filicop
import (
"time"
)
type Mission struct {
Id int64 `json:"id"`
IdRequestor int64 `json:"id_requestor"`
IdVehicle *int64 `json:"id_vehicle"`
Creation time.Time `json:"creation"`
LocationFrom Point `json:"from"`
LocationTo Point `json:"to"`
}
func GetMissions() (missions []Mission, err error) {
if rows, errr := DBQuery("SELECT id_mission, id_requestor, id_vehicle, creation, location_source, location_destination FROM missions"); errr != nil {
return nil, errr
} else {
defer rows.Close()
for rows.Next() {
var m Mission
if err = rows.Scan(&m.Id, &m.IdRequestor, &m.IdVehicle, &m.Creation, &m.LocationFrom, &m.LocationTo); err != nil {
return
}
missions = append(missions, m)
}
if err = rows.Err(); err != nil {
return
}
return
}
}
func GetMission(id int64) (m Mission, err error) {
err = DBQueryRow("SELECT id_mission, id_requestor, id_vehicle, creation, location_source,location_destination FROM missions WHERE id_mission = ?", id).Scan(&m.Id, &m.IdRequestor, &m.IdVehicle, &m.Creation, &m.LocationFrom, &m.LocationTo)
return
}
func (r Requestor) NewMission(from Point, to Point, vehicle *Vehicle) (Mission, error) {
var vid *int64 = nil
if vehicle != nil {
vid = &vehicle.Id
}
if res, err := DBExec("INSERT INTO missions (id_requestor, id_vehicle, location_source, location_destination) VALUES (?, ?, ?, ?)", r.Id, vid, from, to); err != nil {
return Mission{}, err
} else if mid, err := res.LastInsertId(); err != nil {
return Mission{}, err
} else {
return Mission{mid, r.Id, vid, time.Now(), from, to}, nil
}
}
func (m Mission) Update() (int64, error) {
if res, err := DBExec("UPDATE missions SET id_requestor = ?, creation = ?, location_source = ?, location_destination = ? WHERE id_mission = ?", m.IdRequestor, m.Creation, m.LocationFrom, m.LocationTo, m.Id); err != nil {
return 0, err
} else if nb, err := res.RowsAffected(); err != nil {
return 0, err
} else {
return nb, err
}
}
func (m Mission) Delete() (int64, error) {
if res, err := DBExec("DELETE FROM missions WHERE id_mission = ?", m.Id); err != nil {
return 0, err
} else if nb, err := res.RowsAffected(); err != nil {
return 0, err
} else {
return nb, err
}
}
func ClearMissions() (int64, error) {
if res, err := DBExec("DELETE FROM missions"); err != nil {
return 0, err
} else if nb, err := res.RowsAffected(); err != nil {
return 0, err
} else {
return nb, err
}
}
func (r Requestor) ClearMissions() (int64, error) {
if res, err := DBExec("DELETE FROM missions WHERE id_requestor = ?", r.Id); err != nil {
return 0, err
} else if nb, err := res.RowsAffected(); err != nil {
return 0, err
} else {
return nb, err
}
}