59 lines
1.6 KiB
Go
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")
|
|
}
|
|
}
|