This commit is contained in:
che
2026-07-15 09:41:56 +05:00
parent 6fff682f74
commit 1f0dd3afb7
26 changed files with 2402 additions and 1133 deletions
+47
View File
@@ -99,6 +99,53 @@ func (c *ControlCaseController) Launch(ctx *gin.Context) {
ctx.JSON(http.StatusCreated, controlCase)
}
func (c *ControlCaseController) Restart(ctx *gin.Context) {
id, err := strconv.ParseUint(ctx.Param("id"), 10, 32)
if err != nil {
ctx.JSON(http.StatusBadRequest, gin.H{"error": "invalid ID"})
return
}
var controlCase ControlCase
if err := c.db.Preload("Params").Preload("Params.InitialCondition").First(&controlCase, id).Error; err != nil {
ctx.JSON(http.StatusNotFound, gin.H{"error": "record not found"})
return
}
if controlCase.Status == "N" {
ctx.JSON(http.StatusConflict, gin.H{"error": "calculation is already queued or running"})
return
}
if controlCase.ParamsID == 0 {
ctx.JSON(http.StatusBadRequest, gin.H{"error": "params_id is empty"})
return
}
folderPath := filepath.Join(BASE_DIR, fmt.Sprintf("%d", controlCase.ParamsID))
if err := os.RemoveAll(folderPath); err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
if err := c.db.Transaction(func(tx *gorm.DB) error {
if err := tx.Exec("DELETE FROM analizes WHERE case_id = ?", controlCase.ID).Error; err != nil {
return err
}
return tx.Model(&ControlCase{}).Where("id = ?", controlCase.ID).Update("status", "N").Error
}); err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
if err := c.db.Preload("Params").Preload("Params.InitialCondition").First(&controlCase, controlCase.ID).Error; err != nil {
ctx.JSON(http.StatusInternalServerError, gin.H{"error": err.Error()})
return
}
ctx.JSON(http.StatusOK, controlCase)
}
type CSVSeriesResponse struct {
Columns []string `json:"columns"`
Rows [][]interface{} `json:"rows"`
+1
View File
@@ -19,6 +19,7 @@ func RegisterApp(r *gin.Engine, db *gorm.DB) {
go4rest.RegisterCRUDRoutes(r, "params", params)
go4rest.RegisterCRUDRoutes(r, "initial_condition", initialConditions)
r.POST("/api/control_case/launch", controller.Launch)
r.POST("/api/control_case/:id/restart", controller.Restart)
r.GET("/api/control_case/:id/chart-data", controller.ChartData)
r.GET("/api/control_case/:id/psi-spectrum", controller.PSISpectrum)
r.GET("/api/control_case/:id/field-map", controller.FieldMap)