mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 20:20:56 +00:00
orm make offset simple, can use any numeric type
This commit is contained in:
parent
0372b817d1
commit
f02b286ad4
@ -2,6 +2,7 @@ package orm
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"reflect"
|
||||||
)
|
)
|
||||||
|
|
||||||
type querySet struct {
|
type querySet struct {
|
||||||
@ -33,16 +34,28 @@ func (o querySet) Exclude(expr string, args ...interface{}) QuerySeter {
|
|||||||
return &o
|
return &o
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o querySet) Limit(limit int, args ...int64) QuerySeter {
|
func (o *querySet) setOffset(num interface{}) {
|
||||||
|
val := reflect.ValueOf(num)
|
||||||
|
switch num.(type) {
|
||||||
|
case int, int8, int16, int32, int64:
|
||||||
|
o.offset = val.Int()
|
||||||
|
case uint, uint8, uint16, uint32, uint64:
|
||||||
|
o.offset = int64(val.Uint())
|
||||||
|
default:
|
||||||
|
panic(fmt.Errorf("<QuerySeter> offset value need numeric not `%T`", num))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func (o querySet) Limit(limit int, args ...interface{}) QuerySeter {
|
||||||
o.limit = limit
|
o.limit = limit
|
||||||
if len(args) > 0 {
|
if len(args) > 0 {
|
||||||
o.offset = args[0]
|
o.setOffset(args[0])
|
||||||
}
|
}
|
||||||
return &o
|
return &o
|
||||||
}
|
}
|
||||||
|
|
||||||
func (o querySet) Offset(offset int64) QuerySeter {
|
func (o querySet) Offset(offset interface{}) QuerySeter {
|
||||||
o.offset = offset
|
o.setOffset(offset)
|
||||||
return &o
|
return &o
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,8 +45,8 @@ type QuerySeter interface {
|
|||||||
Filter(string, ...interface{}) QuerySeter
|
Filter(string, ...interface{}) QuerySeter
|
||||||
Exclude(string, ...interface{}) QuerySeter
|
Exclude(string, ...interface{}) QuerySeter
|
||||||
SetCond(*Condition) QuerySeter
|
SetCond(*Condition) QuerySeter
|
||||||
Limit(int, ...int64) QuerySeter
|
Limit(int, ...interface{}) QuerySeter
|
||||||
Offset(int64) QuerySeter
|
Offset(interface{}) QuerySeter
|
||||||
OrderBy(...string) QuerySeter
|
OrderBy(...string) QuerySeter
|
||||||
RelatedSel(...interface{}) QuerySeter
|
RelatedSel(...interface{}) QuerySeter
|
||||||
Count() (int64, error)
|
Count() (int64, error)
|
||||||
|
Loading…
Reference in New Issue
Block a user