diff options
author | Unknwon <u@gogs.io> | 2017-02-18 11:22:44 -0500 |
---|---|---|
committer | Unknwon <u@gogs.io> | 2017-02-18 11:22:44 -0500 |
commit | dbd9f05c066a097dad206c394e785bb30d176fe4 (patch) | |
tree | 0e37784031c36882aea798de336fa203bb75644c /vendor/github.com/go-xorm/xorm/session_iterate.go | |
parent | 77757f6d39e2c8af3f13405bc1500dc9c03813fd (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.go | 42 |
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 +} |