
Some checks failed
Deploy to Server (Docker) / deploy (push) Failing after 1m0s
2 +- 3 4 5
80 lines
1.6 KiB
Go
80 lines
1.6 KiB
Go
package models
|
|
|
|
import (
|
|
u "gocommunity.ru/workshop/internal/utils"
|
|
"fmt"
|
|
"github.com/jinzhu/gorm"
|
|
)
|
|
|
|
type Vehicle struct {
|
|
gorm.Model
|
|
ClientId int `json:"client_id"`
|
|
Brand string `json:"brand"`
|
|
Color string `json:"color"`
|
|
Services []Service `gorm:"many2many:service_vehicle;foreignkey:vehicle_id;references:Id"`
|
|
}
|
|
|
|
func (vehicle *Vehicle) ValidateVehicle() (map[string]interface{}, bool) {
|
|
|
|
if vehicle.Brand == "" {
|
|
return u.Message(false, "Name cannot be empty!"), false
|
|
}
|
|
|
|
if vehicle.Color == "" {
|
|
return u.Message(false, "Phone number cannot be empty!"), false
|
|
}
|
|
|
|
if vehicle.ClientId <= 0 {
|
|
return u.Message(false, "User not found!"), false
|
|
}
|
|
|
|
return u.Message(true, "success"), true
|
|
}
|
|
|
|
func (vehicle *Vehicle) CreateVehicle() map[string]interface{} {
|
|
|
|
if response, ok := vehicle.ValidateVehicle(); !ok {
|
|
return response
|
|
}
|
|
|
|
GetDB().Create(vehicle)
|
|
|
|
resp := u.Message(true, "success")
|
|
resp["vehicle"] = vehicle
|
|
return resp
|
|
}
|
|
|
|
func Getvehicle(id uint) *Vehicle {
|
|
|
|
vehicle := &Vehicle{}
|
|
err := GetDB().Table("vehicles").Where("id = ?", id).First(vehicle).Error
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
return vehicle
|
|
}
|
|
|
|
func Getvehicles(user uint) []*Vehicle {
|
|
|
|
vehiclesSlice := make([]*Vehicle, 0)
|
|
err := GetDB().Table("vehicles").Where("user_id = ?", user).Find(&vehiclesSlice).Error
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return nil
|
|
}
|
|
|
|
return vehiclesSlice
|
|
}
|
|
|
|
func GetvehiclesInService() []*Vehicle {
|
|
|
|
vehiclesSlice := make([]*Vehicle, 0)
|
|
err := GetDB().Table("vehicles").Joins("join service_vehicle sv on ").Where("user_id = ?").Find(&vehiclesSlice).Error
|
|
if err != nil {
|
|
fmt.Println(err)
|
|
return nil
|
|
}
|
|
|
|
return vehiclesSlice
|
|
}
|