some fix / add test

This commit is contained in:
slene
2013-08-07 19:11:44 +08:00
parent 10f4e822c3
commit 46668b811f
15 changed files with 1082 additions and 222 deletions

View File

@@ -8,7 +8,7 @@ import (
"strings"
)
func RegisterModel(model Modeler) {
func registerModel(model Modeler) {
info := newModelInfo(model)
model.Init(model)
table := model.GetTableName()
@@ -27,9 +27,10 @@ func RegisterModel(model Modeler) {
modelCache.set(table, info)
}
func BootStrap() {
modelCache.Lock()
defer modelCache.Unlock()
func bootStrap() {
if modelCache.done {
return
}
var (
err error
@@ -59,14 +60,6 @@ func BootStrap() {
}
fi.relModelInfo = mii
if fi.rel {
if mii.fields.pk.IsMulti() {
err = fmt.Errorf("field `%s` unsupport rel to multi primary key field", fi.fullName)
goto end
}
}
switch fi.fieldType {
case RelManyToMany:
if fi.relThrough != "" {
@@ -207,6 +200,25 @@ end:
fmt.Println(err)
os.Exit(2)
}
runCommand()
}
func RegisterModel(models ...Modeler) {
if modelCache.done {
panic(fmt.Errorf("RegisterModel must be run begore BootStrap"))
}
for _, model := range models {
registerModel(model)
}
}
func BootStrap() {
if modelCache.done {
return
}
modelCache.Lock()
defer modelCache.Unlock()
bootStrap()
modelCache.done = true
}