aboutsummaryrefslogtreecommitdiff
path: root/vendor/github.com/go-xorm/xorm/session_iterate.go
diff options
context:
space:
mode:
authorUnknwon <u@gogs.io>2017-02-18 11:22:44 -0500
committerUnknwon <u@gogs.io>2017-02-18 11:22:44 -0500
commitdbd9f05c066a097dad206c394e785bb30d176fe4 (patch)
tree0e37784031c36882aea798de336fa203bb75644c /vendor/github.com/go-xorm/xorm/session_iterate.go
parent77757f6d39e2c8af3f13405bc1500dc9c03813fd (diff)
vendor: update github.com/go-xorm/*
Diffstat (limited to 'vendor/github.com/go-xorm/xorm/session_iterate.go')
-rw-r--r--vendor/github.com/go-xorm/xorm/session_iterate.go42
1 files changed, 42 insertions, 0 deletions
diff --git a/vendor/github.com/go-xorm/xorm/session_iterate.go b/vendor/github.com/go-xorm/xorm/session_iterate.go
new file mode 100644
index 00000000..7c148095
--- /dev/null
+++ b/vendor/github.com/go-xorm/xorm/session_iterate.go
@@ -0,0 +1,42 @@
+// Copyright 2016 The Xorm Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package xorm
+
+import "reflect"
+
+// IterFunc only use by Iterate
+type IterFunc func(idx int, bean interface{}) error
+
+// Rows return sql.Rows compatible Rows obj, as a forward Iterator object for iterating record by record, bean's non-empty fields
+// are conditions.
+func (session *Session) Rows(bean interface{}) (*Rows, error) {
+ return newRows(session, bean)
+}
+
+// Iterate record by record handle records from table, condiBeans's non-empty fields
+// are conditions. beans could be []Struct, []*Struct, map[int64]Struct
+// map[int64]*Struct
+func (session *Session) Iterate(bean interface{}, fun IterFunc) error {
+ rows, err := session.Rows(bean)
+ if err != nil {
+ return err
+ }
+ defer rows.Close()
+
+ i := 0
+ for rows.Next() {
+ b := reflect.New(rows.beanType).Interface()
+ err = rows.Scan(b)
+ if err != nil {
+ return err
+ }
+ err = fun(i, b)
+ if err != nil {
+ return err
+ }
+ i++
+ }
+ return err
+}