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 }