1
0

Update xorm to v1 (#323)

Fix limit for databases other than sqlite

go mod tidy && go mod vendor

Remove unneeded break statements

Make everything work with the new xorm version

Fix xorm logging

Fix lint

Fix redis init

Fix using id field

Fix database init for testing

Change default database log level

Add xorm logger

Use const for postgres

go mod tidy

Merge branch 'master' into update/xorm

# Conflicts:
#	go.mod
#	go.sum
#	vendor/modules.txt

go mod vendor

Fix loading fixtures for postgres

Go mod vendor1

Update xorm to version 1

Co-authored-by: kolaente <k@knt.li>
Reviewed-on: https://kolaente.dev/vikunja/api/pulls/323
This commit is contained in:
konrad
2020-04-12 17:29:24 +00:00
parent 713560702b
commit d28f005552
430 changed files with 48291 additions and 99915 deletions

View File

@ -4,7 +4,11 @@
package xorm
import "reflect"
import (
"reflect"
"xorm.io/xorm/internal/utils"
)
// IterFunc only use by Iterate
type IterFunc func(idx int, bean interface{}) error
@ -23,11 +27,11 @@ func (session *Session) Iterate(bean interface{}, fun IterFunc) error {
defer session.Close()
}
if session.statement.lastError != nil {
return session.statement.lastError
if session.statement.LastError != nil {
return session.statement.LastError
}
if session.statement.bufferSize > 0 {
if session.statement.BufferSize > 0 {
return session.bufferIterate(bean, fun)
}
@ -55,27 +59,28 @@ func (session *Session) Iterate(bean interface{}, fun IterFunc) error {
// BufferSize sets the buffersize for iterate
func (session *Session) BufferSize(size int) *Session {
session.statement.bufferSize = size
session.statement.BufferSize = size
return session
}
func (session *Session) bufferIterate(bean interface{}, fun IterFunc) error {
if session.isAutoClose {
defer session.Close()
}
var bufferSize = session.statement.bufferSize
var limit = session.statement.LimitN
if limit > 0 && bufferSize > limit {
bufferSize = limit
var bufferSize = session.statement.BufferSize
var pLimitN = session.statement.LimitN
if pLimitN != nil && bufferSize > *pLimitN {
bufferSize = *pLimitN
}
var start = session.statement.Start
v := rValue(bean)
v := utils.ReflectValue(bean)
sliceType := reflect.SliceOf(v.Type())
var idx = 0
for {
session.autoResetStatement = false
defer func() {
session.autoResetStatement = true
}()
for bufferSize > 0 {
slice := reflect.New(sliceType)
if err := session.Limit(bufferSize, start).find(slice.Interface(), bean); err != nil {
if err := session.NoCache().Limit(bufferSize, start).find(slice.Interface(), bean); err != nil {
return err
}
@ -86,13 +91,13 @@ func (session *Session) bufferIterate(bean interface{}, fun IterFunc) error {
idx++
}
start = start + slice.Elem().Len()
if limit > 0 && idx+bufferSize > limit {
bufferSize = limit - idx
if bufferSize > slice.Elem().Len() {
break
}
if bufferSize <= 0 || slice.Elem().Len() < bufferSize || idx == limit {
break
start = start + slice.Elem().Len()
if pLimitN != nil && start+bufferSize > *pLimitN {
bufferSize = *pLimitN - start
}
}