CoreInterface remodel, PluginRegistry added
This commit is contained in:
parent
c9f3abd8b9
commit
b722cb8a62
153
core/base/base.go
Normal file
153
core/base/base.go
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
package base
|
||||||
|
|
||||||
|
import (
|
||||||
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/globalsign/mgo"
|
||||||
|
"github.com/jinzhu/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
|
type Base struct{}
|
||||||
|
|
||||||
|
func (b *Base) Register() (string, error) {
|
||||||
|
if e := b.BeforeLoadPlugins(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.LoadPlugins(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.AfterLoadPlugins(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.BeforeLoadConfiguration(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.LoadConfiguration(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.AfterLoadConfiguration(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.BeforeConnectToDatabases(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.ConnectToDatabases(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.AfterConnectToDatabases(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.BeforeSetupLogger(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.SetupLogger(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.AfterSetupLogger(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.BeforeSetupRoutes(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.SetupRoutes(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.AfterSetupRoutes(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.BeforeRun(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.Run(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
if e := b.AfterRun(); e != nil {
|
||||||
|
return "", e
|
||||||
|
}
|
||||||
|
return "base", nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) UnRegister() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) BeforeLoadPlugins() error {
|
||||||
|
fmt.Println("Hello World. BeforeLoadPlugins")
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) LoadPlugins() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) AfterLoadPlugins() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) BeforeLoadConfiguration() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) LoadConfiguration() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) AfterLoadConfiguration() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) ConnectMongoDB(string) (*mgo.Session, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) ConnectGORM(string) (*gorm.DB, error) {
|
||||||
|
return nil, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) BeforeConnectToDatabases() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) ConnectToDatabases() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) AfterConnectToDatabases() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) BeforeSetupLogger() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) SetupLogger() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) AfterSetupLogger() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) BeforeSetupRoutes() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) SetupRoutes() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) AfterSetupRoutes() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) BeforeRun() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) Run() error {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (b *Base) AfterRun() error {
|
||||||
|
return nil
|
||||||
|
}
|
@ -1,45 +1,67 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/globalsign/mgo"
|
||||||
|
"github.com/jinzhu/gorm"
|
||||||
|
)
|
||||||
|
|
||||||
type CoreInterface interface {
|
type CoreInterface interface {
|
||||||
BeforeLoadPlugins()
|
Register() (string, error)
|
||||||
LoadPlugins()
|
UnRegister() error
|
||||||
AfterLoadPlugins()
|
|
||||||
|
|
||||||
BeforeLoadConfiguration()
|
BeforeLoadPlugins() error
|
||||||
LoadConfiguration()
|
LoadPlugins() error
|
||||||
AfterLoadConfiguration()
|
AfterLoadPlugins() error
|
||||||
|
|
||||||
BeforeConnectToDatabases()
|
BeforeLoadConfiguration() error
|
||||||
ConnectToDatabases()
|
LoadConfiguration() error
|
||||||
AfterConnectToDatabases()
|
AfterLoadConfiguration() error
|
||||||
|
|
||||||
BeforeSetupLogger()
|
// connection string parameter e.g. "localhost"
|
||||||
SetupLogger()
|
ConnectMongoDB(string) (*mgo.Session, error)
|
||||||
AfterSetupLogger()
|
|
||||||
|
|
||||||
BeforeSetupRoutes()
|
// connection string parameter
|
||||||
SetupRoutes()
|
ConnectGORM(string) (*gorm.DB, error)
|
||||||
AfterSetupRoutes()
|
|
||||||
|
|
||||||
BeforeRun()
|
// ConnectNeo4j
|
||||||
Run()
|
// ConnectArangoDB
|
||||||
AfterRun()
|
// ConnectCassandra
|
||||||
|
// ConnectDGraph
|
||||||
|
|
||||||
|
BeforeConnectToDatabases() error
|
||||||
|
ConnectToDatabases() error
|
||||||
|
AfterConnectToDatabases() error
|
||||||
|
|
||||||
|
BeforeSetupLogger() error
|
||||||
|
SetupLogger() error
|
||||||
|
AfterSetupLogger() error
|
||||||
|
|
||||||
|
BeforeSetupRoutes() error
|
||||||
|
SetupRoutes() error
|
||||||
|
AfterSetupRoutes() error
|
||||||
|
|
||||||
|
BeforeRun() error
|
||||||
|
Run() error
|
||||||
|
AfterRun() error
|
||||||
}
|
}
|
||||||
|
|
||||||
type HandlerInterface interface {
|
type HandlerInterface interface {
|
||||||
BeforeProcessRequest()
|
Register() (string, error)
|
||||||
ProcessRequest()
|
UnRegister() error
|
||||||
AfterProcessRequest()
|
|
||||||
|
|
||||||
BeforeLoadDataFromDatabase()
|
BeforeProcessRequest() error
|
||||||
LoadDataFromDatabase()
|
ProcessRequest() error
|
||||||
AfterLoadDataFromDatabase()
|
AfterProcessRequest() error
|
||||||
|
|
||||||
BeforeSaveDataToDatabase()
|
BeforeLoadDataFromDatabase() error
|
||||||
SaveDataToDatabase()
|
LoadDataFromDatabase() error
|
||||||
AfterSaveDataToDatabase()
|
AfterLoadDataFromDatabase() error
|
||||||
|
|
||||||
BeforeRenderOutput()
|
BeforeSaveDataToDatabase() error
|
||||||
RenderOutput()
|
SaveDataToDatabase() error
|
||||||
AfterRenderOutput()
|
AfterSaveDataToDatabase() error
|
||||||
|
|
||||||
|
BeforeRenderOutput() error
|
||||||
|
RenderOutput() error
|
||||||
|
AfterRenderOutput() error
|
||||||
}
|
}
|
||||||
|
16
main.go
16
main.go
@ -1,7 +1,17 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
|
import (
|
||||||
|
"log"
|
||||||
|
|
||||||
|
"git.icod.de/dalu/contentplatform/core/base"
|
||||||
|
)
|
||||||
|
|
||||||
|
var registry = NewPluginRegistry()
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
/*
|
|
||||||
Some way to load the core plugins and the handler plugins
|
if e := registry.RegisterCorePlugin(new(base.Base)); e != nil {
|
||||||
*/
|
log.Fatal(e.Error())
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
47
registry.go
Normal file
47
registry.go
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
package main
|
||||||
|
|
||||||
|
type PluginRegistry struct {
|
||||||
|
CorePlugin map[string]CoreInterface
|
||||||
|
HandlerPlugin map[string]HandlerInterface
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewPluginRegistry() *PluginRegistry {
|
||||||
|
r := new(PluginRegistry)
|
||||||
|
r.CorePlugin = make(map[string]CoreInterface)
|
||||||
|
r.HandlerPlugin = make(map[string]HandlerInterface)
|
||||||
|
return r
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PluginRegistry) RegisterCorePlugin(plugin CoreInterface) error {
|
||||||
|
name, e := plugin.Register()
|
||||||
|
if e != nil {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
r.CorePlugin[name] = plugin
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PluginRegistry) RegisterHandlerPlugin(plugin HandlerInterface) error {
|
||||||
|
name, e := plugin.Register()
|
||||||
|
if e != nil {
|
||||||
|
return e
|
||||||
|
}
|
||||||
|
r.HandlerPlugin[name] = plugin
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PluginRegistry) GetCorePlugin(name string) CoreInterface {
|
||||||
|
return r.CorePlugin[name]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PluginRegistry) GetHandlerPlugin(name string) HandlerInterface {
|
||||||
|
return r.HandlerPlugin[name]
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PluginRegistry) RemoveCorePlugin(name string) {
|
||||||
|
delete(r.CorePlugin, name)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (r *PluginRegistry) RemoveHandlerPlugin(name string) {
|
||||||
|
delete(r.HandlerPlugin, name)
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user