1 +
Some checks failed
Deploy to Server (Docker) / deploy (push) Failing after 1m0s

2 +-
3
4
5
This commit is contained in:
Dmitry Sirotkin 2025-03-25 21:30:30 +03:00
parent 80a5b92d16
commit 2534bd9e7f
8 changed files with 143 additions and 7 deletions

View File

@ -12,7 +12,15 @@ func main() {
router := mux.NewRouter() router := mux.NewRouter()
router.HandleFunc("/user/new", controllers.CreateService).Methods("POST") router.HandleFunc("/service/new", controllers.CreateService).Methods("POST")
router.HandleFunc("/service/accept", controllers.AcceptVehicle).Methods("POST")
router.HandleFunc("/service/all", controllers.GetServices).Methods("GET")
//Vehicle
router.HandleFunc("/vehicle/new", controllers.CreateVehicle).Methods("POST")
router.HandleFunc("/vehicle/all", controllers.GetvehiclesInService).Methods("GET")
router.HandleFunc("/contacts/new", controllers.CreateContact).Methods("POST") router.HandleFunc("/contacts/new", controllers.CreateContact).Methods("POST")
router.HandleFunc("/me/contacts", controllers.GetContacts).Methods("GET") router.HandleFunc("/me/contacts", controllers.GetContacts).Methods("GET")

View File

@ -0,0 +1,7 @@
package api
type AcceptVehicleRequest struct {
ServiceId string `json:"service_id"`
VehicleId string `json:"vehicle_id"`
EmployeeId uint `json:"employee_id"`
}

View File

@ -8,12 +8,30 @@ import (
) )
var CreateService = func(w http.ResponseWriter, r *http.Request) { var CreateService = func(w http.ResponseWriter, r *http.Request) {
account := &models.Service{} service := &models.Service{}
err := json.NewDecoder(r.Body).Decode(account) err := json.NewDecoder(r.Body).Decode(service)
if err != nil { if err != nil {
u.Respond(w, u.Message(false, "Invalid request!")) u.Respond(w, u.Message(false, "Invalid request!"))
return return
} }
resp := account.CreateService() resp := service.CreateService()
u.Respond(w, resp)
}
var GetServices = func(w http.ResponseWriter, r *http.Request) {
data := models.GetServices()
resp := u.Message(true, "success")
resp["data"] = data
u.Respond(w, resp)
}
var AcceptVehicle = func(w http.ResponseWriter, r *http.Request) {
serviceVehicle := &models.ServiceVehicle{}
err := json.NewDecoder(r.Body).Decode(serviceVehicle)
if err != nil {
u.Respond(w, u.Message(false, "Invalid request!"))
return
}
resp := serviceVehicle.AcceptVehicle()
u.Respond(w, resp) u.Respond(w, resp)
} }

View File

@ -0,0 +1,34 @@
package controllers
import (
"gocommunity.ru/workshop/internal/models"
u "gocommunity.ru/workshop/internal/utils"
"encoding/json"
"net/http"
)
var CreateVehicle = func(w http.ResponseWriter, r *http.Request) {
vehicle := &models.Vehicle{}
err := json.NewDecoder(r.Body).Decode(vehicle)
if err != nil {
u.Respond(w, u.Message(false, "Invalid request!"))
return
}
resp := vehicle.CreateVehicle()
u.Respond(w, resp)
}
var GetvehiclesInService = func(w http.ResponseWriter, r *http.Request) {
VehicleId := r.Context().Value("id").(uint)
vehicle := &models.Vehicle{}
err := json.NewDecoder(r.Body).Decode(vehicle)
if err != nil {
u.Respond(w, u.Message(false, "Error!"))
return
}
vehicle.ID = VehicleId
resp := vehicle.CreateVehicle()
u.Respond(w, resp)
}

View File

@ -31,7 +31,7 @@ func init() {
} }
db = conn db = conn
db.Debug().AutoMigrate(&Service{}, &Bonuse{}, &Client{}) //Миграция базы данных db.Debug().AutoMigrate(&Service{}, &Bonuse{}, &Client{}, &Contact{}, &Vehicle{}) //Миграция базы данных
} }
func GetDB() *gorm.DB { func GetDB() *gorm.DB {

View File

@ -1,13 +1,14 @@
package models package models
import ( import (
u "gocommunity.ru/workshop/internal/utils" "fmt"
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
u "gocommunity.ru/workshop/internal/utils"
) )
type Service struct { type Service struct {
gorm.Model gorm.Model
Price string `json:"email"` Price int32 `json:"price"`
Name string `json:"name"` Name string `json:"name"`
Description string `json:"description"` Description string `json:"description"`
} }
@ -21,3 +22,15 @@ func (service *Service) CreateService() map[string]interface{} {
resp["service"] = service resp["service"] = service
return resp return resp
} }
func GetServices() []*Service {
servicesSlice := make([]*Service, 0)
err := GetDB().Table("services").Find(&servicesSlice).Error
if err != nil {
fmt.Println(err)
return nil
}
return servicesSlice
}

View File

@ -0,0 +1,43 @@
package models
import (
"fmt"
u "gocommunity.ru/workshop/internal/utils"
)
type ServiceVehicle struct {
ServiceId int32 `json:"service_id"`
VehicleId int32 `json:"vehicle_id"`
}
func (vehicle *ServiceVehicle) Validate() (map[string]interface{}, bool) {
if vehicle.ServiceId <= 0 {
return u.Message(false, "ServiceId can't be < 0!"), false
}
if vehicle.VehicleId <= 0 {
return u.Message(false, "VehicleId can't be < 0!"), false
}
return u.Message(true, "success"), true
}
func (serviceVehicle *ServiceVehicle) AcceptVehicle() map[string]interface{} {
if response, ok := serviceVehicle.Validate(); !ok {
return response
}
err := GetDB().Table("service_vehicle").Create(serviceVehicle).Error
if err != nil {
fmt.Println(err)
return nil
}
resp := u.Message(true, "success")
resp["serviceVehicle"] = serviceVehicle
return resp
}

View File

@ -11,6 +11,7 @@ type Vehicle struct {
ClientId int `json:"client_id"` ClientId int `json:"client_id"`
Brand string `json:"brand"` Brand string `json:"brand"`
Color string `json:"color"` Color string `json:"color"`
Services []Service `gorm:"many2many:service_vehicle;foreignkey:vehicle_id;references:Id"`
} }
func (vehicle *Vehicle) ValidateVehicle() (map[string]interface{}, bool) { func (vehicle *Vehicle) ValidateVehicle() (map[string]interface{}, bool) {
@ -64,3 +65,15 @@ func Getvehicles(user uint) []*Vehicle {
return vehiclesSlice 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
}