Break find code into sql.go file

This commit is contained in:
Jinzhu 2013-10-26 11:59:58 +08:00
parent 69f53a4b41
commit 0491675ae8
2 changed files with 27 additions and 16 deletions

17
orm.go
View File

@ -2,8 +2,6 @@ package gorm
import ( import (
"errors" "errors"
"fmt"
"reflect"
"strconv" "strconv"
@ -116,23 +114,12 @@ func (s *Orm) Exec(sql ...string) *Orm {
} }
func (s *Orm) First(out interface{}) *Orm { func (s *Orm) First(out interface{}) *Orm {
s.setModel(out) s.explain(out, "Query").query(out)
rows, err := s.db.Query("SELECT * from users limit 1")
s.Error = err
for rows.Next() {
dest := reflect.ValueOf(out).Elem()
fmt.Printf("%+v", dest)
columns, _ := rows.Columns()
var values []interface{}
for _, value := range columns {
values = append(values, dest.FieldByName(value).Addr().Interface())
}
s.Error = rows.Scan(values...)
}
return s return s
} }
func (s *Orm) Find(out interface{}) *Orm { func (s *Orm) Find(out interface{}) *Orm {
s.explain(out, "Query").query(out)
return s return s
} }

26
sql.go
View File

@ -1,18 +1,42 @@
package gorm package gorm
import ( import (
"reflect"
"strings" "strings"
"fmt" "fmt"
) )
func (s *Orm) explain(value interface{}, operation string) { func (s *Orm) explain(value interface{}, operation string) *Orm {
s.setModel(value) s.setModel(value)
switch operation { switch operation {
case "Save": case "Save":
s.saveSql(value) s.saveSql(value)
case "Delete": case "Delete":
s.deleteSql(value) s.deleteSql(value)
case "Query":
s.querySql(value)
}
return s
}
func (s *Orm) querySql(out interface{}) {
s.Sql = "SELECT * from users limit 1"
return
}
func (s *Orm) query(out interface{}) {
rows, err := s.db.Query(s.Sql)
s.Error = err
for rows.Next() {
dest := reflect.ValueOf(out).Elem()
fmt.Printf("%+v", dest)
columns, _ := rows.Columns()
var values []interface{}
for _, value := range columns {
values = append(values, dest.FieldByName(value).Addr().Interface())
}
s.Error = rows.Scan(values...)
} }
return return
} }