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/vehicle.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
}
}