mirror of
https://git.rwth-aachen.de/acs/public/villas/web-backend-go/
synced 2025-03-30 00:00:12 +01:00
99 lines
No EOL
2.3 KiB
Go
99 lines
No EOL
2.3 KiB
Go
package queries
|
|
|
|
import (
|
|
"git.rwth-aachen.de/acs/public/villas/villasweb-backend-go/common"
|
|
)
|
|
|
|
func FindAllModels(simID int) ([]common.Model, int, error) {
|
|
db := common.GetDB()
|
|
var models []common.Model
|
|
sim, err := FindSimulation(simID)
|
|
if err != nil {
|
|
return models, 0, err
|
|
}
|
|
|
|
err = db.Model(sim).Related(&models, "Models").Error
|
|
|
|
return models, len(models), err
|
|
}
|
|
|
|
func FindModel(modelID int) (common.Model, error){
|
|
db := common.GetDB()
|
|
var m common.Model
|
|
err := db.First(&m, modelID).Error
|
|
return m, err
|
|
}
|
|
|
|
func AddModel(simID int, model *common.Model) error {
|
|
db := common.GetDB()
|
|
sim, err := FindSimulation(simID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
err = db.Model(&sim).Association("Models").Append(model).Error
|
|
return err
|
|
}
|
|
|
|
func CloneModel(targetSim int, modelID int) error {
|
|
|
|
// TODO TO BE IMPLEMENTED
|
|
// Check if target sim exists
|
|
// Check if model exists
|
|
|
|
// Get all Signals of Model
|
|
// Get Simulator of Model
|
|
// Get Files of model
|
|
|
|
// Add new model object to DB and associate with target sim
|
|
// Add new signal objects to DB and associate with new model object (careful with directions)
|
|
// Associate Simulator with new Model object
|
|
var err error
|
|
return err
|
|
|
|
}
|
|
|
|
func UpdateModel(modelID int , modelUpdate *common.Model) error {
|
|
db := common.GetDB()
|
|
m, err := FindModel(modelID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
// only Name and Start Params can be updated directly by the user
|
|
err = db.Model(&m).Updates(map[string]interface{}{"Name": modelUpdate.Name, "StartParameters": modelUpdate.StartParameters}).Error
|
|
return err
|
|
}
|
|
|
|
func DeleteModel(simID int , modelID int ) error {
|
|
db := common.GetDB()
|
|
sim, err := FindSimulation(simID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
m, err := FindModel(modelID)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
//remove relationship between simulation and model
|
|
err = db.Model(&sim).Association("Models").Delete(m).Error
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
// TODO remove File Associations and files on disk
|
|
// TODO remove Signal Associations and Signals in DB
|
|
// TODO how to treat simulator association?
|
|
|
|
//remove model itself from DB
|
|
//TODO: do we want this??
|
|
err = db.Delete(&m).Error
|
|
return err
|
|
}
|
|
|
|
func UpdateSimulatorOfModel(model *common.Model, simulator *common.Simulator) error {
|
|
db := common.GetDB()
|
|
err := db.Model(model).Association("Simulator").Replace(simulator).Error
|
|
return err
|
|
} |