github.com/safing/portbase@v0.19.5/runtime/module.go (about)

     1  package runtime
     2  
     3  import (
     4  	"fmt"
     5  
     6  	"github.com/safing/portbase/database"
     7  	"github.com/safing/portbase/modules"
     8  )
     9  
    10  // DefaultRegistry is the default registry
    11  // that is used by the module-level API.
    12  var DefaultRegistry = NewRegistry()
    13  
    14  func init() {
    15  	modules.Register("runtime", nil, startModule, nil, "database")
    16  }
    17  
    18  func startModule() error {
    19  	_, err := database.Register(&database.Database{
    20  		Name:         "runtime",
    21  		Description:  "Runtime database",
    22  		StorageType:  "injected",
    23  		ShadowDelete: false,
    24  	})
    25  	if err != nil {
    26  		return err
    27  	}
    28  
    29  	if err := DefaultRegistry.InjectAsDatabase("runtime"); err != nil {
    30  		return err
    31  	}
    32  
    33  	if err := startModulesIntegration(); err != nil {
    34  		return fmt.Errorf("failed to start modules integration: %w", err)
    35  	}
    36  
    37  	return nil
    38  }
    39  
    40  // Register is like Registry.Register but uses
    41  // the package DefaultRegistry.
    42  func Register(key string, provider ValueProvider) (PushFunc, error) {
    43  	return DefaultRegistry.Register(key, provider)
    44  }