some change
Showing
5 changed files
with
19 additions
and
11 deletions
| ... | @@ -21,7 +21,11 @@ const ( | ... | @@ -21,7 +21,11 @@ const ( |
| 21 | 21 | ||
| 22 | var ( | 22 | var ( |
| 23 | dataBaseCache = &_dbCache{cache: make(map[string]*alias)} | 23 | dataBaseCache = &_dbCache{cache: make(map[string]*alias)} |
| 24 | drivers = make(map[string]driverType) | 24 | drivers = map[string]driverType{ |
| 25 | "mysql": DR_MySQL, | ||
| 26 | "postgres": DR_Postgres, | ||
| 27 | "sqlite3": DR_Sqlite, | ||
| 28 | } | ||
| 25 | dbBasers = map[driverType]dbBaser{ | 29 | dbBasers = map[driverType]dbBaser{ |
| 26 | DR_MySQL: newdbBaseMysql(), | 30 | DR_MySQL: newdbBaseMysql(), |
| 27 | DR_Sqlite: newdbBaseSqlite(), | 31 | DR_Sqlite: newdbBaseSqlite(), |
| ... | @@ -122,9 +126,3 @@ func RegisterDriver(name string, typ driverType) { | ... | @@ -122,9 +126,3 @@ func RegisterDriver(name string, typ driverType) { |
| 122 | } | 126 | } |
| 123 | } | 127 | } |
| 124 | } | 128 | } |
| 125 | |||
| 126 | func init() { | ||
| 127 | RegisterDriver("mysql", DR_MySQL) | ||
| 128 | RegisterDriver("postgres", DR_Postgres) | ||
| 129 | RegisterDriver("sqlite3", DR_Sqlite) | ||
| 130 | } | ... | ... |
| ... | @@ -58,12 +58,19 @@ type Manager struct { | ... | @@ -58,12 +58,19 @@ type Manager struct { |
| 58 | // } | 58 | // } |
| 59 | // } | 59 | // } |
| 60 | 60 | ||
| 61 | func (m *Manager) Init(model Modeler) Modeler { | 61 | func (m *Manager) Init(model Modeler, args ...interface{}) Modeler { |
| 62 | if m.inited { | 62 | if m.inited { |
| 63 | return m.ins | 63 | return m.ins |
| 64 | } | 64 | } |
| 65 | m.inited = true | 65 | m.inited = true |
| 66 | m.ins = model | 66 | m.ins = model |
| 67 | skipInitial := false | ||
| 68 | if len(args) > 0 { | ||
| 69 | if b, ok := args[0].(bool); ok && b { | ||
| 70 | skipInitial = true | ||
| 71 | } | ||
| 72 | } | ||
| 73 | _ = skipInitial | ||
| 67 | return model | 74 | return model |
| 68 | } | 75 | } |
| 69 | 76 | ... | ... |
| ... | @@ -27,6 +27,7 @@ type orm struct { | ... | @@ -27,6 +27,7 @@ type orm struct { |
| 27 | } | 27 | } |
| 28 | 28 | ||
| 29 | func (o *orm) Object(md Modeler) ObjectSeter { | 29 | func (o *orm) Object(md Modeler) ObjectSeter { |
| 30 | md.Init(md, true) | ||
| 30 | name := md.GetTableName() | 31 | name := md.GetTableName() |
| 31 | if mi, ok := modelCache.get(name); ok { | 32 | if mi, ok := modelCache.get(name); ok { |
| 32 | return newObject(o, mi, md) | 33 | return newObject(o, mi, md) |
| ... | @@ -38,8 +39,9 @@ func (o *orm) QueryTable(ptrStructOrTableName interface{}) QuerySeter { | ... | @@ -38,8 +39,9 @@ func (o *orm) QueryTable(ptrStructOrTableName interface{}) QuerySeter { |
| 38 | name := "" | 39 | name := "" |
| 39 | if table, ok := ptrStructOrTableName.(string); ok { | 40 | if table, ok := ptrStructOrTableName.(string); ok { |
| 40 | name = snakeString(table) | 41 | name = snakeString(table) |
| 41 | } else if m, ok := ptrStructOrTableName.(Modeler); ok { | 42 | } else if md, ok := ptrStructOrTableName.(Modeler); ok { |
| 42 | name = m.GetTableName() | 43 | md.Init(md, true) |
| 44 | name = md.GetTableName() | ||
| 43 | } | 45 | } |
| 44 | if mi, ok := modelCache.get(name); ok { | 46 | if mi, ok := modelCache.get(name); ok { |
| 45 | return newQuerySet(o, mi) | 47 | return newQuerySet(o, mi) | ... | ... |
| ... | @@ -17,6 +17,7 @@ func (o *insertSet) Insert(md Modeler) (int64, error) { | ... | @@ -17,6 +17,7 @@ func (o *insertSet) Insert(md Modeler) (int64, error) { |
| 17 | if o.closed { | 17 | if o.closed { |
| 18 | return 0, ErrStmtClosed | 18 | return 0, ErrStmtClosed |
| 19 | } | 19 | } |
| 20 | md.Init(md, true) | ||
| 20 | val := reflect.ValueOf(md) | 21 | val := reflect.ValueOf(md) |
| 21 | ind := reflect.Indirect(val) | 22 | ind := reflect.Indirect(val) |
| 22 | if val.Type() != o.mi.addrField.Type() { | 23 | if val.Type() != o.mi.addrField.Type() { | ... | ... |
| ... | @@ -14,7 +14,7 @@ type Fielder interface { | ... | @@ -14,7 +14,7 @@ type Fielder interface { |
| 14 | } | 14 | } |
| 15 | 15 | ||
| 16 | type Modeler interface { | 16 | type Modeler interface { |
| 17 | Init(Modeler) Modeler | 17 | Init(Modeler, ...interface{}) Modeler |
| 18 | IsInited() bool | 18 | IsInited() bool |
| 19 | Clean() IFieldErrors | 19 | Clean() IFieldErrors |
| 20 | CleanFields(string) IFieldErrors | 20 | CleanFields(string) IFieldErrors | ... | ... |
-
Please register or sign in to post a comment