mirror of
https://github.com/astaxie/beego.git
synced 2024-11-25 20:10:56 +00:00
add type modelRegister interface into Ormer
This commit is contained in:
parent
e54dbabf0b
commit
7574b91760
@ -30,6 +30,18 @@ var _ Ormer = new(DoNothingOrm)
|
|||||||
type DoNothingOrm struct {
|
type DoNothingOrm struct {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (d *DoNothingOrm) RegisterModels(models ...interface{}) (err error) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DoNothingOrm) RegisterModelsWithPrefix(prefix string, models ...interface{}) (err error) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (d *DoNothingOrm) RegisterModelsWithSuffix(suffix string, models ...interface{}) (err error) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
func (d *DoNothingOrm) Read(md interface{}, cols ...string) error {
|
func (d *DoNothingOrm) Read(md interface{}, cols ...string) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ var _ TxOrmer = new(filterOrmDecorator)
|
|||||||
|
|
||||||
type filterOrmDecorator struct {
|
type filterOrmDecorator struct {
|
||||||
ormer
|
ormer
|
||||||
|
modelRegister
|
||||||
TxBeginner
|
TxBeginner
|
||||||
TxCommitter
|
TxCommitter
|
||||||
|
|
||||||
@ -42,6 +43,18 @@ type filterOrmDecorator struct {
|
|||||||
txName string
|
txName string
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (f *filterOrmDecorator) RegisterModels(models ...interface{}) (err error) {
|
||||||
|
return f.modelRegister.RegisterModels(models...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *filterOrmDecorator) RegisterModelsWithPrefix(prefix string, models ...interface{}) (err error) {
|
||||||
|
return f.modelRegister.RegisterModelsWithPrefix(prefix, models...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (f *filterOrmDecorator) RegisterModelsWithSuffix(suffix string, models ...interface{}) (err error) {
|
||||||
|
return f.modelRegister.RegisterModelsWithSuffix(suffix, models...)
|
||||||
|
}
|
||||||
|
|
||||||
func NewFilterOrmDecorator(delegate Ormer, filterChains ...FilterChain) Ormer {
|
func NewFilterOrmDecorator(delegate Ormer, filterChains ...FilterChain) Ormer {
|
||||||
res := &filterOrmDecorator{
|
res := &filterOrmDecorator{
|
||||||
ormer: delegate,
|
ormer: delegate,
|
||||||
|
@ -39,6 +39,15 @@ var (
|
|||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
type modelRegister interface {
|
||||||
|
//RegisterModels register models without prefix or suffix
|
||||||
|
RegisterModels(models ...interface{}) (err error)
|
||||||
|
//RegisterModelsWithPrefix register models with prefix
|
||||||
|
RegisterModelsWithPrefix(prefix string, models ...interface{}) (err error)
|
||||||
|
//RegisterModelsWithSuffix register models with suffix
|
||||||
|
RegisterModelsWithSuffix(suffix string, models ...interface{}) (err error)
|
||||||
|
}
|
||||||
|
|
||||||
// model info collection
|
// model info collection
|
||||||
type _modelCache struct {
|
type _modelCache struct {
|
||||||
sync.RWMutex // only used outsite for bootStrap
|
sync.RWMutex // only used outsite for bootStrap
|
||||||
@ -48,6 +57,20 @@ type _modelCache struct {
|
|||||||
done bool
|
done bool
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var _ modelRegister = new(_modelCache)
|
||||||
|
|
||||||
|
func (mc *_modelCache) RegisterModels(models ...interface{}) (err error) {
|
||||||
|
return mc.register(``, true, models...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mc *_modelCache) RegisterModelsWithPrefix(prefix string, models ...interface{}) (err error) {
|
||||||
|
return mc.register(prefix, true, models...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (mc *_modelCache) RegisterModelsWithSuffix(suffix string, models ...interface{}) (err error) {
|
||||||
|
return mc.register(suffix, false, models...)
|
||||||
|
}
|
||||||
|
|
||||||
// get all model info
|
// get all model info
|
||||||
func (mc *_modelCache) all() map[string]*modelInfo {
|
func (mc *_modelCache) all() map[string]*modelInfo {
|
||||||
m := make(map[string]*modelInfo, len(mc.cache))
|
m := make(map[string]*modelInfo, len(mc.cache))
|
||||||
|
@ -14,15 +14,8 @@
|
|||||||
|
|
||||||
package orm
|
package orm
|
||||||
|
|
||||||
import (
|
|
||||||
"fmt"
|
|
||||||
)
|
|
||||||
|
|
||||||
// RegisterModel register models
|
// RegisterModel register models
|
||||||
func RegisterModel(models ...interface{}) {
|
func RegisterModel(models ...interface{}) {
|
||||||
if modelCache.done {
|
|
||||||
panic(fmt.Errorf("RegisterModel must be run before BootStrap"))
|
|
||||||
}
|
|
||||||
RegisterModelWithPrefix("", models...)
|
RegisterModelWithPrefix("", models...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -498,10 +498,23 @@ func (o *ormBase) DBStats() *sql.DBStats {
|
|||||||
|
|
||||||
type orm struct {
|
type orm struct {
|
||||||
ormBase
|
ormBase
|
||||||
|
modelRegister
|
||||||
}
|
}
|
||||||
|
|
||||||
var _ Ormer = new(orm)
|
var _ Ormer = new(orm)
|
||||||
|
|
||||||
|
func (o *orm) RegisterModels(models ...interface{}) (err error) {
|
||||||
|
return o.modelRegister.RegisterModels(models)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *orm) RegisterModelsWithPrefix(prefix string, models ...interface{}) (err error) {
|
||||||
|
return o.modelRegister.RegisterModelsWithPrefix(prefix, models...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o *orm) RegisterModelsWithSuffix(suffix string, models ...interface{}) (err error) {
|
||||||
|
return o.modelRegister.RegisterModelsWithSuffix(suffix, models...)
|
||||||
|
}
|
||||||
|
|
||||||
func (o *orm) Begin() (TxOrmer, error) {
|
func (o *orm) Begin() (TxOrmer, error) {
|
||||||
return o.BeginWithCtx(context.Background())
|
return o.BeginWithCtx(context.Background())
|
||||||
}
|
}
|
||||||
|
@ -214,6 +214,7 @@ type ormer interface {
|
|||||||
|
|
||||||
type Ormer interface {
|
type Ormer interface {
|
||||||
ormer
|
ormer
|
||||||
|
modelRegister
|
||||||
TxBeginner
|
TxBeginner
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user