117 lines
2.8 KiB
Go
117 lines
2.8 KiB
Go
package filicop
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
)
|
|
|
|
type Vehicle struct {
|
|
Id int64 `json:"id"`
|
|
IdFleet int64 `json:"id_fleet"`
|
|
Label string `json:"label"`
|
|
}
|
|
|
|
func GetVehicles() (vehicles []Vehicle, err error) {
|
|
if rows, errr := DBQuery("SELECT id_vehicle, id_fleet, label FROM vehicles"); errr != nil {
|
|
return nil, errr
|
|
} else {
|
|
defer rows.Close()
|
|
|
|
for rows.Next() {
|
|
var v Vehicle
|
|
if err = rows.Scan(&v.Id, &v.IdFleet, &v.Label); err != nil {
|
|
return
|
|
}
|
|
vehicles = append(vehicles, v)
|
|
}
|
|
if err = rows.Err(); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
}
|
|
|
|
func (f Fleet) GetVehicles() (vehicles []Vehicle, err error) {
|
|
if rows, errr := DBQuery("SELECT id_vehicle, id_fleet, label FROM vehicles WHERE id_fleet = ?", f.Id); errr != nil {
|
|
return nil, errr
|
|
} else {
|
|
defer rows.Close()
|
|
|
|
for rows.Next() {
|
|
var v Vehicle
|
|
if err = rows.Scan(&v.Id, &v.IdFleet, &v.Label); err != nil {
|
|
return
|
|
}
|
|
vehicles = append(vehicles, v)
|
|
}
|
|
if err = rows.Err(); err != nil {
|
|
return
|
|
}
|
|
|
|
return
|
|
}
|
|
}
|
|
|
|
func GetVehicle(id int64) (v Vehicle, err error) {
|
|
err = DBQueryRow("SELECT id_vehicle, id_fleet, label FROM vehicles WHERE id_vehicle = ?", id).Scan(&v.Id, &v.IdFleet, &v.Label)
|
|
return
|
|
}
|
|
|
|
func (f Fleet) GetVehicle(id int64) (v Vehicle, err error) {
|
|
err = DBQueryRow("SELECT id_vehicle, id_fleet, label FROM vehicles WHERE id_vehicle = ? AND id_fleet = ?", id, f.Id).Scan(&v.Id, &v.IdFleet, &v.Label)
|
|
return
|
|
}
|
|
|
|
func (f Fleet) NewVehicle(v Vehicle) (Vehicle, error) {
|
|
if v.IdFleet != 0 && v.IdFleet != f.Id {
|
|
return v, errors.New(fmt.Sprintf("Vehicle fleet ID is %d, but try to add it to fleet %d.", v.IdFleet, f.Id))
|
|
}
|
|
|
|
if res, err := DBExec("INSERT INTO vehicles (id_fleet, label) VALUES (?, ?)", f.Id, v.Label); err != nil {
|
|
return v, err
|
|
} else if vid, err := res.LastInsertId(); err != nil {
|
|
return v, err
|
|
} else {
|
|
v.Id = vid
|
|
v.IdFleet = f.Id
|
|
return v, nil
|
|
}
|
|
}
|
|
|
|
func (v Vehicle) Update(uv Vehicle) (Vehicle, error) {
|
|
_, err := DBExec("UPDATE vehicles SET id_fleet = ?, label = ? WHERE id_vehicle = ?", uv.IdFleet, uv.Label, v.Id)
|
|
uv.Id = v.Id
|
|
return uv, err
|
|
}
|
|
|
|
func (v Vehicle) Delete() (int64, error) {
|
|
if res, err := DBExec("DELETE FROM vehicles WHERE id_vehicle = ?", v.Id); err != nil {
|
|
return 0, err
|
|
} else if nb, err := res.RowsAffected(); err != nil {
|
|
return 0, err
|
|
} else {
|
|
return nb, err
|
|
}
|
|
}
|
|
|
|
func ClearVehicles() (int64, error) {
|
|
if res, err := DBExec("DELETE FROM vehicles"); err != nil {
|
|
return 0, err
|
|
} else if nb, err := res.RowsAffected(); err != nil {
|
|
return 0, err
|
|
} else {
|
|
return nb, err
|
|
}
|
|
}
|
|
|
|
func (f Fleet) ClearVehicles() (int64, error) {
|
|
if res, err := DBExec("DELETE FROM vehicles WHERE id_fleet = ?", f.Id); err != nil {
|
|
return 0, err
|
|
} else if nb, err := res.RowsAffected(); err != nil {
|
|
return 0, err
|
|
} else {
|
|
return nb, err
|
|
}
|
|
}
|