Files
2026-07-15 09:41:56 +05:00

59 lines
1.6 KiB
Go

package control_case
import (
"github.com/che4web/go4rest"
"github.com/gin-gonic/gin"
"gorm.io/gorm"
)
func RegisterApp(r *gin.Engine, db *gorm.DB) {
db.AutoMigrate(&ControlCase{})
db.AutoMigrate(&InitialCondition{})
db.AutoMigrate(&Params{})
migrateParamsPrToSc(db)
controller := NewControlCaseController(db)
params := NewParamsController(db)
initialConditions := NewInitialConditionController(db)
go4rest.RegisterCRUDRoutes(r, "control_case", controller)
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)
r.POST("/api/control_case/:id/initial-condition", controller.CreateInitialCondition)
numJobs := 1
//jobs := make(chan Params, numJobs)
results := make(chan int, numJobs)
go RunControllWorker(db, results)
}
func migrateParamsPrToSc(db *gorm.DB) {
type columnInfo struct {
Name string `gorm:"column:name"`
}
var columns []columnInfo
if err := db.Raw("PRAGMA table_info(params)").Scan(&columns).Error; err != nil {
return
}
hasPr := false
hasSc := false
for _, column := range columns {
switch column.Name {
case "pr":
hasPr = true
case "sc":
hasSc = true
}
}
if hasPr && hasSc {
db.Exec("UPDATE params SET sc = pr WHERE sc IS NULL OR sc = 0")
}
}