fic: Add theme recursive deletion
This commit is contained in:
parent
995740e275
commit
1a1343596a
2 changed files with 63 additions and 2 deletions
|
|
@ -117,3 +117,55 @@ func (t Theme) Delete() (int64, error) {
|
|||
return nb, err
|
||||
}
|
||||
}
|
||||
|
||||
func (t Theme) deleteFunc(f func(Exercice) (int64, error)) (int64, error) {
|
||||
exercices, err := t.GetExercices()
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
for _, exercice := range exercices {
|
||||
_, err := f(exercice)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
}
|
||||
|
||||
return 1, nil
|
||||
}
|
||||
|
||||
// DeleteCascade the theme from the database, including inner content but not player content.
|
||||
func (t Theme) DeleteCascade() (int64, error) {
|
||||
_, err := t.deleteFunc(func(e Exercice) (int64, error) {
|
||||
return e.DeleteCascade()
|
||||
})
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return t.Delete()
|
||||
}
|
||||
|
||||
// DeleteCascadePlayer delete player content related to this theme.
|
||||
func (t Theme) DeleteCascadePlayer() (int64, error) {
|
||||
_, err := t.deleteFunc(func(e Exercice) (int64, error) {
|
||||
return e.DeleteCascadePlayer()
|
||||
})
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return 1, nil
|
||||
}
|
||||
|
||||
// DeleteDeep the theme from the database, including player content.
|
||||
func (t Theme) DeleteDeep() (int64, error) {
|
||||
_, err := t.deleteFunc(func(e Exercice) (int64, error) {
|
||||
return e.DeleteDeep()
|
||||
})
|
||||
if err != nil {
|
||||
return 0, err
|
||||
}
|
||||
|
||||
return t.Delete()
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue