From dbd9f05c066a097dad206c394e785bb30d176fe4 Mon Sep 17 00:00:00 2001 From: Unknwon Date: Sat, 18 Feb 2017 11:22:44 -0500 Subject: vendor: update github.com/go-xorm/* --- vendor/github.com/go-xorm/xorm/session_iterate.go | 42 +++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 vendor/github.com/go-xorm/xorm/session_iterate.go (limited to 'vendor/github.com/go-xorm/xorm/session_iterate.go') 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 +} -- cgit v1.2.3