mirror of
https://github.com/safing/portbase
synced 2025-09-01 18:19:57 +00:00
50 lines
978 B
Go
50 lines
978 B
Go
package database
|
|
|
|
// Maintain runs the Maintain method on all storages.
|
|
func Maintain() (err error) {
|
|
controllers := duplicateControllers()
|
|
for _, c := range controllers {
|
|
err = c.Maintain()
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// MaintainThorough runs the MaintainThorough method on all storages.
|
|
func MaintainThorough() (err error) {
|
|
controllers := duplicateControllers()
|
|
for _, c := range controllers {
|
|
err = c.MaintainThorough()
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
// Shutdown shuts down the whole database system.
|
|
func Shutdown() (err error) {
|
|
shuttingDown.Set()
|
|
|
|
controllers := duplicateControllers()
|
|
for _, c := range controllers {
|
|
err = c.Shutdown()
|
|
if err != nil {
|
|
return
|
|
}
|
|
}
|
|
return
|
|
}
|
|
|
|
func duplicateControllers() (controllers []*Controller) {
|
|
databasesLock.Lock()
|
|
defer databasesLock.Unlock()
|
|
|
|
for _, c := range databases {
|
|
controllers = append(controllers, c)
|
|
}
|
|
|
|
return
|
|
}
|