sshpiper/sshpiperd/upstream/database/plugin.go
2019-01-07 01:57:55 -08:00

60 lines
924 B
Go

package database
import (
"log"
"github.com/jinzhu/gorm"
upstreamprovider "github.com/tg123/sshpiper/sshpiperd/upstream"
)
var logger *log.Logger
type createdb interface {
create() (*gorm.DB, error)
}
type plugin struct {
createdb
db *gorm.DB
}
func (p *plugin) GetHandler() upstreamprovider.Handler {
return p.findUpstream
}
func (p *plugin) Init(glogger *log.Logger) error {
logger = glogger
db, err := p.create()
if err != nil {
return err
}
logger.Printf("upstream provider: Database driver [%v] initializing", db.Dialect().GetName())
err = db.AutoMigrate(
new(keydata),
new(privateKey),
new(hostKey),
new(server),
new(upstream),
new(authorizedKey),
new(downstream),
new(config),
).Error
if err != nil {
logger.Printf("AutoMigrate error: %v", err)
}
p.db = db
// plugin is alive within program lifecycle, close when unload added
// defer db.Close()
return nil
}