From c9443f4ca3d6b2dc159b9492a9ccb1015b9f4931 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=90=B4=E6=96=87=E8=B1=AA?= <529280602@qq.com> Date: Sat, 12 Nov 2016 18:56:34 +0800 Subject: [PATCH] =?UTF-8?q?=E8=87=AA=E5=8A=A8=E7=94=9F=E6=88=90=E7=9A=84Ge?= =?UTF-8?q?tAllxxxx=E6=96=B9=E6=B3=95=E4=BF=AE=E6=94=B9=E7=BB=93=E6=9E=84?= =?UTF-8?q?=EF=BC=8C=E6=B7=BB=E5=8A=A0total=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- g_appcode.go | 17 ++++++++++++++--- g_model.go | 16 +++++++++++++--- 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/g_appcode.go b/g_appcode.go index 4e90107..76583fb 100644 --- a/g_appcode.go +++ b/g_appcode.go @@ -1055,7 +1055,7 @@ func Get{{modelName}}ById(id int) (v *{{modelName}}, err error) { // GetAll{{modelName}} retrieves all {{modelName}} matches certain condition. Returns empty list if // no records exist func GetAll{{modelName}}(query map[string]string, fields []string, sortby []string, order []string, - offset int64, limit int64) (ml []interface{}, err error) { + offset int64, limit int64) (ml map[string]interface{}, err error) { o := orm.NewOrm() qs := o.QueryTable(new({{modelName}})) // query k=v @@ -1105,10 +1105,17 @@ func GetAll{{modelName}}(query map[string]string, fields []string, sortby []stri var l []{{modelName}} qs = qs.OrderBy(sortFields...) + + total, err := qs.Count() + if err != nil { + panic(err) + } + if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil { + var result []interface{} if len(fields) == 0 { for _, v := range l { - ml = append(ml, v) + result = append(result, v) } } else { // trim unused fields @@ -1118,9 +1125,13 @@ func GetAll{{modelName}}(query map[string]string, fields []string, sortby []stri for _, fname := range fields { m[fname] = val.FieldByName(fname).Interface() } - ml = append(ml, m) + result = append(result, m) } } + + var ml map[string]interface{} = make(map[string]interface{}) + ml["result"] = result + ml["total"] = total return ml, nil } return nil, err diff --git a/g_model.go b/g_model.go index ae23731..c843566 100644 --- a/g_model.go +++ b/g_model.go @@ -175,7 +175,7 @@ func Get{{modelName}}ById(id int64) (v *{{modelName}}, err error) { // GetAll{{modelName}} retrieves all {{modelName}} matches certain condition. Returns empty list if // no records exist func GetAll{{modelName}}(query map[string]string, fields []string, sortby []string, order []string, - offset int64, limit int64) (ml []interface{}, err error) { + offset int64, limit int64) (ml map[string]interface{}, err error) { o := orm.NewOrm() qs := o.QueryTable(new({{modelName}})) // query k=v @@ -225,10 +225,17 @@ func GetAll{{modelName}}(query map[string]string, fields []string, sortby []stri var l []{{modelName}} qs = qs.OrderBy(sortFields...) + + total, err := qs.Count() + if err != nil { + panic(err) + } + if _, err = qs.Limit(limit, offset).All(&l, fields...); err == nil { + var result []interface{} if len(fields) == 0 { for _, v := range l { - ml = append(ml, v) + result = append(result, v) } } else { // trim unused fields @@ -238,9 +245,12 @@ func GetAll{{modelName}}(query map[string]string, fields []string, sortby []stri for _, fname := range fields { m[fname] = val.FieldByName(fname).Interface() } - ml = append(ml, m) + result = append(result, m) } } + var ml map[string]interface{} = make(map[string]interface{}) + ml["result"] = result + ml["total"] = total return ml, nil } return nil, err