workshop/internal/models/vehicle.go
Dmitry Sirotkin 2534bd9e7f
Some checks failed
Deploy to Server (Docker) / deploy (push) Failing after 1m0s
1 +
2 +-
3
4
5
2025-03-25 21:30:30 +03:00

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
}