Add runtime module providing a simple injected DB

This commit is contained in:
Patrick Pacher 2020-09-17 13:41:28 +02:00
parent 205756e7d5
commit bcaa793123
No known key found for this signature in database
GPG key ID: E8CD2DA160925A6D
9 changed files with 683 additions and 3 deletions

42
runtime/module_api.go Normal file
View file

@ -0,0 +1,42 @@
package runtime
import (
"github.com/safing/portbase/database"
"github.com/safing/portbase/modules"
)
var (
// DefaultRegistry is the default registry
// that is used by the module-level API.
DefaultRegistry = NewRegistry()
module *modules.Module
)
func init() {
module = modules.Register("runtime", nil, startModule, nil, "database")
}
func startModule() error {
_, err := database.Register(&database.Database{
Name: "runtime",
Description: "Runtime database",
StorageType: "injected",
PrimaryAPI: "",
})
if err != nil {
return err
}
if err := DefaultRegistry.InjectAsDatabase("runtime"); err != nil {
return err
}
return nil
}
// Register is like Registry.Register but uses
// the package DefaultRegistry.
func Register(key string, provider ValueProvider) (PushFunc, error) {
return DefaultRegistry.Register(key, provider)
}