Add file ID of selected simulation model file to simulationModel data model

This commit is contained in:
Sonja Happ 2020-02-18 13:36:05 +01:00
parent 19e8b4ad29
commit fe5ceb8d61
5 changed files with 51 additions and 38 deletions

View file

@ -91,6 +91,8 @@ type SimulationModel struct {
InputMapping []Signal `json:"-" gorm:"foreignkey:SimulationModelID"` InputMapping []Signal `json:"-" gorm:"foreignkey:SimulationModelID"`
// Files of simulation model (can be CIM and other simulation model file formats) // Files of simulation model (can be CIM and other simulation model file formats)
Files []File `json:"-" gorm:"foreignkey:SimulationModelID"` Files []File `json:"-" gorm:"foreignkey:SimulationModelID"`
// Currently selected simulation model FileID
SelectedModelFileID uint `json:"selectedModelFileID" gorm:"default:0"`
} }
// Signal data model // Signal data model

View file

@ -103,11 +103,13 @@ var ScenarioB = Scenario{
var SimulationModelA = SimulationModel{ var SimulationModelA = SimulationModel{
Name: "SimulationModel_A", Name: "SimulationModel_A",
StartParameters: postgres.Jsonb{startParametersA}, StartParameters: postgres.Jsonb{startParametersA},
SelectedModelFileID: 1,
} }
var SimulationModelB = SimulationModel{ var SimulationModelB = SimulationModel{
Name: "SimulationModel_B", Name: "SimulationModel_B",
StartParameters: postgres.Jsonb{startParametersB}, StartParameters: postgres.Jsonb{startParametersB},
SelectedModelFileID: 2,
} }
// Signals // Signals
@ -268,7 +270,6 @@ var WidgetE = Widget{
CustomProperties: postgres.Jsonb{customPropertiesLamp}, CustomProperties: postgres.Jsonb{customPropertiesLamp},
} }
func DBAddAdminUser(db *gorm.DB) error { func DBAddAdminUser(db *gorm.DB) error {
db.AutoMigrate(&User{}) db.AutoMigrate(&User{})
@ -338,7 +339,6 @@ func DBAddTestData(db *gorm.DB) error {
widgetD := WidgetD widgetD := WidgetD
widgetE := WidgetE widgetE := WidgetE
// Users // Users
err := db.Create(&user0).Error err := db.Create(&user0).Error
@ -410,8 +410,6 @@ func DBAddTestData(db *gorm.DB) error {
err = db.Model(&dashboardA).Association("Widgets").Append(&widgetD).Error err = db.Model(&dashboardA).Association("Widgets").Append(&widgetD).Error
err = db.Model(&dashboardA).Association("Widgets").Append(&widgetE).Error err = db.Model(&dashboardA).Association("Widgets").Append(&widgetE).Error
// SimulationModel HM Signals // SimulationModel HM Signals
err = db.Model(&modelA).Association("InputMapping").Append(&inSignalA).Error err = db.Model(&modelA).Association("InputMapping").Append(&inSignalA).Error
err = db.Model(&modelA).Association("InputMapping").Append(&inSignalB).Error err = db.Model(&modelA).Association("InputMapping").Append(&inSignalB).Error

View file

@ -106,6 +106,7 @@ func (m *SimulationModel) Update(modifiedSimulationModel SimulationModel) error
"Name": modifiedSimulationModel.Name, "Name": modifiedSimulationModel.Name,
"StartParameters": modifiedSimulationModel.StartParameters, "StartParameters": modifiedSimulationModel.StartParameters,
"SimulatorID": modifiedSimulationModel.SimulatorID, "SimulatorID": modifiedSimulationModel.SimulatorID,
"SelectedModelFileID": modifiedSimulationModel.SelectedModelFileID,
}).Error }).Error
return err return err

View file

@ -45,6 +45,7 @@ type SimulationModelRequest struct {
ScenarioID uint `json:"scenarioID,omitempty"` ScenarioID uint `json:"scenarioID,omitempty"`
SimulatorID uint `json:"simulatorID,omitempty"` SimulatorID uint `json:"simulatorID,omitempty"`
StartParameters postgres.Jsonb `json:"startParameters,omitempty"` StartParameters postgres.Jsonb `json:"startParameters,omitempty"`
SelectedModelFileID uint `json:"selectedModelFileID,omitempty"`
} }
type SimulatorRequest struct { type SimulatorRequest struct {
@ -158,6 +159,7 @@ func TestAddSimulationModel(t *testing.T) {
ScenarioID: scenarioID, ScenarioID: scenarioID,
SimulatorID: simulatorID, SimulatorID: simulatorID,
StartParameters: database.SimulationModelA.StartParameters, StartParameters: database.SimulationModelA.StartParameters,
SelectedModelFileID: database.SimulationModelA.SelectedModelFileID,
} }
// authenticate as normal userB who has no access to new scenario // authenticate as normal userB who has no access to new scenario
@ -259,6 +261,7 @@ func TestUpdateSimulationModel(t *testing.T) {
ScenarioID: scenarioID, ScenarioID: scenarioID,
SimulatorID: simulatorID, SimulatorID: simulatorID,
StartParameters: database.SimulationModelA.StartParameters, StartParameters: database.SimulationModelA.StartParameters,
SelectedModelFileID: database.SimulationModelA.SelectedModelFileID,
} }
code, resp, err := helper.TestEndpoint(router, token, code, resp, err := helper.TestEndpoint(router, token,
"/api/models", "POST", helper.KeyModels{"simulationModel": newSimulationModel}) "/api/models", "POST", helper.KeyModels{"simulationModel": newSimulationModel})
@ -364,6 +367,7 @@ func TestDeleteSimulationModel(t *testing.T) {
ScenarioID: scenarioID, ScenarioID: scenarioID,
SimulatorID: simulatorID, SimulatorID: simulatorID,
StartParameters: database.SimulationModelA.StartParameters, StartParameters: database.SimulationModelA.StartParameters,
SelectedModelFileID: database.SimulationModelA.SelectedModelFileID,
} }
// authenticate as normal user // authenticate as normal user
@ -442,6 +446,7 @@ func TestGetAllSimulationModelsOfScenario(t *testing.T) {
ScenarioID: scenarioID, ScenarioID: scenarioID,
SimulatorID: simulatorID, SimulatorID: simulatorID,
StartParameters: database.SimulationModelA.StartParameters, StartParameters: database.SimulationModelA.StartParameters,
SelectedModelFileID: database.SimulationModelA.SelectedModelFileID,
} }
code, resp, err := helper.TestEndpoint(router, token, code, resp, err := helper.TestEndpoint(router, token,
"/api/models", "POST", helper.KeyModels{"simulationModel": newSimulationModel}) "/api/models", "POST", helper.KeyModels{"simulationModel": newSimulationModel})

View file

@ -35,12 +35,14 @@ type validNewSimulationModel struct {
ScenarioID uint `form:"ScenarioID" validate:"required"` ScenarioID uint `form:"ScenarioID" validate:"required"`
SimulatorID uint `form:"SimulatorID" validate:"required"` SimulatorID uint `form:"SimulatorID" validate:"required"`
StartParameters postgres.Jsonb `form:"StartParameters" validate:"required"` StartParameters postgres.Jsonb `form:"StartParameters" validate:"required"`
SelectedModelFileID uint `form:"SelectedModelFilID" validate:"omitempty"`
} }
type validUpdatedSimulationModel struct { type validUpdatedSimulationModel struct {
Name string `form:"Name" validate:"omitempty"` Name string `form:"Name" validate:"omitempty"`
SimulatorID uint `form:"SimulatorID" validate:"omitempty"` SimulatorID uint `form:"SimulatorID" validate:"omitempty"`
StartParameters postgres.Jsonb `form:"StartParameters" validate:"omitempty"` StartParameters postgres.Jsonb `form:"StartParameters" validate:"omitempty"`
SelectedModelFileID uint `form:"SelectedModelFileID" validate:"omitempty"`
} }
type addSimulationModelRequest struct { type addSimulationModelRequest struct {
@ -70,6 +72,7 @@ func (r *addSimulationModelRequest) createSimulationModel() SimulationModel {
s.ScenarioID = r.SimulationModel.ScenarioID s.ScenarioID = r.SimulationModel.ScenarioID
s.SimulatorID = r.SimulationModel.SimulatorID s.SimulatorID = r.SimulationModel.SimulatorID
s.StartParameters = r.SimulationModel.StartParameters s.StartParameters = r.SimulationModel.StartParameters
s.SelectedModelFileID = r.SimulationModel.SelectedModelFileID
return s return s
} }
@ -86,6 +89,10 @@ func (r *updateSimulationModelRequest) updatedSimulationModel(oldSimulationModel
s.SimulatorID = r.SimulationModel.SimulatorID s.SimulatorID = r.SimulationModel.SimulatorID
} }
if r.SimulationModel.SelectedModelFileID != 0 {
s.SelectedModelFileID = r.SimulationModel.SelectedModelFileID
}
// only update Params if not empty // only update Params if not empty
var emptyJson postgres.Jsonb var emptyJson postgres.Jsonb
// Serialize empty json and params // Serialize empty json and params