4ee6cc30 by slene

Merge pull request #312 from bronze1man/pr-orm-querytable-nil-ptr-struct

[orm] QueryTable with nil ptr struct
2 parents a0dff914 ceb4aa9e
...@@ -274,9 +274,7 @@ func (o *orm) QueryTable(ptrStructOrTableName interface{}) (qs QuerySeter) { ...@@ -274,9 +274,7 @@ func (o *orm) QueryTable(ptrStructOrTableName interface{}) (qs QuerySeter) {
274 qs = newQuerySet(o, mi) 274 qs = newQuerySet(o, mi)
275 } 275 }
276 } else { 276 } else {
277 val := reflect.ValueOf(ptrStructOrTableName) 277 name = getFullName(indirectType(reflect.TypeOf(ptrStructOrTableName)))
278 ind := reflect.Indirect(val)
279 name = getFullName(ind.Type())
280 if mi, ok := modelCache.getByFN(name); ok { 278 if mi, ok := modelCache.getByFN(name); ok {
281 qs = newQuerySet(o, mi) 279 qs = newQuerySet(o, mi)
282 } 280 }
......
...@@ -473,6 +473,7 @@ The program—and web server—godoc processes Go source files to extract docume ...@@ -473,6 +473,7 @@ The program—and web server—godoc processes Go source files to extract docume
473 func TestExpr(t *testing.T) { 473 func TestExpr(t *testing.T) {
474 user := &User{} 474 user := &User{}
475 qs := dORM.QueryTable(user) 475 qs := dORM.QueryTable(user)
476 qs = dORM.QueryTable((*User)(nil))
476 qs = dORM.QueryTable("User") 477 qs = dORM.QueryTable("User")
477 qs = dORM.QueryTable("user") 478 qs = dORM.QueryTable("user")
478 num, err := qs.Filter("UserName", "slene").Filter("user_name", "slene").Filter("profile__Age", 28).Count() 479 num, err := qs.Filter("UserName", "slene").Filter("user_name", "slene").Filter("profile__Age", 28).Count()
......
...@@ -231,3 +231,13 @@ func timeParse(dateString, format string) (time.Time, error) { ...@@ -231,3 +231,13 @@ func timeParse(dateString, format string) (time.Time, error) {
231 func timeFormat(t time.Time, format string) string { 231 func timeFormat(t time.Time, format string) string {
232 return t.Format(format) 232 return t.Format(format)
233 } 233 }
234
235 func indirectType(v reflect.Type) reflect.Type {
236 switch v.Kind() {
237 case reflect.Ptr:
238 return indirectType(v.Elem())
239 default:
240 return v
241 }
242 return v
243 }
......
Styling with Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!