5
Some checks failed
Deploy to Server (Docker) / deploy (push) Failing after 59s

This commit is contained in:
Dmitry Sirotkin 2025-03-28 19:46:14 +03:00
parent 9677e0d7ab
commit 8ad58ca09d
4 changed files with 47 additions and 1 deletions

View File

@ -15,6 +15,7 @@ func main() {
router.HandleFunc("/service/new", controllers.CreateService).Methods("POST")
router.HandleFunc("/service/accept", controllers.AcceptVehicle).Methods("POST")
router.HandleFunc("/service/all", controllers.GetServices).Methods("GET")
router.HandleFunc("/service/calculate", controllers.Calculate).Methods("POST")
//Vehicle
router.HandleFunc("/vehicle/new", controllers.CreateVehicle).Methods("POST")

View File

@ -0,0 +1,5 @@
package api
type IdRequest struct {
Ids []int `json:"ids"`
}

View File

@ -1,6 +1,7 @@
package controllers
import (
"gocommunity.ru/workshop/internal/api"
"gocommunity.ru/workshop/internal/models"
u "gocommunity.ru/workshop/internal/utils"
"encoding/json"
@ -35,3 +36,21 @@ var AcceptVehicle = func(w http.ResponseWriter, r *http.Request) {
resp := serviceVehicle.AcceptVehicle()
u.Respond(w, resp)
}
var Calculate = func(w http.ResponseWriter, r *http.Request) {
ids := &api.IdRequest{}
service := &models.Service{}
err := json.NewDecoder(r.Body).Decode(ids)
if err != nil {
u.Respond(w, u.Message(false, "Invalid request!"))
return
}
data := service.Calculate(ids.Ids)
resp := u.Message(true, "success")
resp["data"] = data
u.Respond(w, resp)
}

View File

@ -34,4 +34,25 @@ func GetServices() []*Service {
}
return servicesSlice
}
}
type ServiceSum struct {
Sum int `json:"sum"`
}
func (service *Service) Calculate(ids []int) []*ServiceSum {
serviceSum := make([]*ServiceSum, 0)
err := GetDB().Table("services").
Select("sum(price) as sum").
Where("id in (?)", ids).
Find(&serviceSum).Error
if err != nil {
fmt.Println(err)
return nil
}
return serviceSum
}