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 } }