mirror of
https://git.rwth-aachen.de/acs/public/villas/web-backend-go/
synced 2025-03-30 00:00:12 +01:00
Delete signals, dashboards, widgets and component configs + associated elements from DB upon DELETE (no safe-delete anymore)
This commit is contained in:
parent
70a483546d
commit
77d02ec7a7
4 changed files with 56 additions and 8 deletions
|
@ -131,7 +131,6 @@ func (m *ComponentConfiguration) delete() error {
|
|||
}
|
||||
|
||||
// remove association between ComponentConfiguration and Scenario
|
||||
// ComponentConfiguration itself is not deleted from DB, it remains as "dangling"
|
||||
err = db.Model(&so).Association("ComponentConfigurations").Delete(m).Error
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -143,6 +142,32 @@ func (m *ComponentConfiguration) delete() error {
|
|||
return err
|
||||
}
|
||||
|
||||
// Get Signals of InputMapping and delete them
|
||||
var InputMappingSignals []database.Signal
|
||||
err = db.Model(m).Related(&InputMappingSignals, "InputMapping").Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for sig, _ := range InputMappingSignals {
|
||||
err = db.Delete(&sig).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Get Signals of OutputMapping and delete them
|
||||
var OutputMappingSignals []database.Signal
|
||||
err = db.Model(m).Related(&OutputMappingSignals, "OutputMapping").Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
for sig, _ := range OutputMappingSignals {
|
||||
err = db.Delete(&sig).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// delete component configuration
|
||||
err = db.Delete(m).Error
|
||||
if err != nil {
|
||||
|
|
|
@ -30,9 +30,9 @@ type Dashboard struct {
|
|||
database.Dashboard
|
||||
}
|
||||
|
||||
func (v *Dashboard) save() error {
|
||||
func (d *Dashboard) save() error {
|
||||
db := database.GetDB()
|
||||
err := db.Create(v).Error
|
||||
err := db.Create(d).Error
|
||||
return err
|
||||
}
|
||||
|
||||
|
@ -90,8 +90,20 @@ func (d *Dashboard) delete() error {
|
|||
// remove association between Dashboard and Scenario
|
||||
err = db.Model(&sim).Association("Dashboards").Delete(d).Error
|
||||
|
||||
// Dashboard itself is not deleted from DB, it remains as "dangling"
|
||||
// TODO: delete dashboard and associated widgets
|
||||
// get all widgets of the dashboard
|
||||
var widgets []database.Widget
|
||||
err = db.Order("ID asc").Model(d).Related(&widgets, "Widgets").Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// Delete widgets
|
||||
for widget, _ := range widgets {
|
||||
err = db.Delete(&widget).Error
|
||||
}
|
||||
|
||||
// Delete dashboard
|
||||
err = db.Delete(d).Error
|
||||
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -107,7 +107,6 @@ func (s *Signal) delete() error {
|
|||
}
|
||||
|
||||
// remove association between Signal and ComponentConfiguration
|
||||
// Signal itself is not deleted from DB, it remains as "dangling"
|
||||
if s.Direction == "in" {
|
||||
err = db.Model(&m).Association("InputMapping").Delete(s).Error
|
||||
if err != nil {
|
||||
|
@ -117,6 +116,9 @@ func (s *Signal) delete() error {
|
|||
// Reduce length of mapping by 1
|
||||
var newInputLength = m.InputLength - 1
|
||||
err = db.Model(m).Update("InputLength", newInputLength).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
} else {
|
||||
err = db.Model(&m).Association("OutputMapping").Delete(s).Error
|
||||
|
@ -127,7 +129,13 @@ func (s *Signal) delete() error {
|
|||
// Reduce length of mapping by 1
|
||||
var newOutputLength = m.OutputLength - 1
|
||||
err = db.Model(m).Update("OutputLength", newOutputLength).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
// Delete signal
|
||||
err = db.Delete(s).Error
|
||||
|
||||
return err
|
||||
}
|
||||
|
|
|
@ -96,10 +96,13 @@ func (w *Widget) delete() error {
|
|||
}
|
||||
|
||||
// remove association between Dashboard and Widget
|
||||
// Widget itself is not deleted from DB, it remains as "dangling"
|
||||
err = db.Model(&dab).Association("Widgets").Delete(w).Error
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
// TODO: What about files that belong to a widget? Keep them or remove them here?
|
||||
// Delete Widget
|
||||
err = db.Delete(w).Error
|
||||
|
||||
return err
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue