| 
							- // Copyright 2017 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"
 - 	"strings"
 - 	"time"
 - 
 - 	"xorm.io/core"
 - )
 - 
 - func setColumnInt(bean interface{}, col *core.Column, t int64) {
 - 	v, err := col.ValueOf(bean)
 - 	if err != nil {
 - 		return
 - 	}
 - 	if v.CanSet() {
 - 		switch v.Type().Kind() {
 - 		case reflect.Int, reflect.Int64, reflect.Int32:
 - 			v.SetInt(t)
 - 		case reflect.Uint, reflect.Uint64, reflect.Uint32:
 - 			v.SetUint(uint64(t))
 - 		}
 - 	}
 - }
 - 
 - func setColumnTime(bean interface{}, col *core.Column, t time.Time) {
 - 	v, err := col.ValueOf(bean)
 - 	if err != nil {
 - 		return
 - 	}
 - 	if v.CanSet() {
 - 		switch v.Type().Kind() {
 - 		case reflect.Struct:
 - 			v.Set(reflect.ValueOf(t).Convert(v.Type()))
 - 		case reflect.Int, reflect.Int64, reflect.Int32:
 - 			v.SetInt(t.Unix())
 - 		case reflect.Uint, reflect.Uint64, reflect.Uint32:
 - 			v.SetUint(uint64(t.Unix()))
 - 		}
 - 	}
 - }
 - 
 - func getFlagForColumn(m map[string]bool, col *core.Column) (val bool, has bool) {
 - 	if len(m) == 0 {
 - 		return false, false
 - 	}
 - 
 - 	n := len(col.Name)
 - 
 - 	for mk := range m {
 - 		if len(mk) != n {
 - 			continue
 - 		}
 - 		if strings.EqualFold(mk, col.Name) {
 - 			return m[mk], true
 - 		}
 - 	}
 - 
 - 	return false, false
 - }
 - 
 - func col2NewCols(columns ...string) []string {
 - 	newColumns := make([]string, 0, len(columns))
 - 	for _, col := range columns {
 - 		col = strings.Replace(col, "`", "", -1)
 - 		col = strings.Replace(col, `"`, "", -1)
 - 		ccols := strings.Split(col, ",")
 - 		for _, c := range ccols {
 - 			newColumns = append(newColumns, strings.TrimSpace(c))
 - 		}
 - 	}
 - 	return newColumns
 - }
 - 
 - // Incr provides a query string like "count = count + 1"
 - func (session *Session) Incr(column string, arg ...interface{}) *Session {
 - 	session.statement.Incr(column, arg...)
 - 	return session
 - }
 - 
 - // Decr provides a query string like "count = count - 1"
 - func (session *Session) Decr(column string, arg ...interface{}) *Session {
 - 	session.statement.Decr(column, arg...)
 - 	return session
 - }
 - 
 - // SetExpr provides a query string like "column = {expression}"
 - func (session *Session) SetExpr(column string, expression interface{}) *Session {
 - 	session.statement.SetExpr(column, expression)
 - 	return session
 - }
 - 
 - // Select provides some columns to special
 - func (session *Session) Select(str string) *Session {
 - 	session.statement.Select(str)
 - 	return session
 - }
 - 
 - // Cols provides some columns to special
 - func (session *Session) Cols(columns ...string) *Session {
 - 	session.statement.Cols(columns...)
 - 	return session
 - }
 - 
 - // AllCols ask all columns
 - func (session *Session) AllCols() *Session {
 - 	session.statement.AllCols()
 - 	return session
 - }
 - 
 - // MustCols specify some columns must use even if they are empty
 - func (session *Session) MustCols(columns ...string) *Session {
 - 	session.statement.MustCols(columns...)
 - 	return session
 - }
 - 
 - // UseBool automatically retrieve condition according struct, but
 - // if struct has bool field, it will ignore them. So use UseBool
 - // to tell system to do not ignore them.
 - // If no parameters, it will use all the bool field of struct, or
 - // it will use parameters's columns
 - func (session *Session) UseBool(columns ...string) *Session {
 - 	session.statement.UseBool(columns...)
 - 	return session
 - }
 - 
 - // Distinct use for distinct columns. Caution: when you are using cache,
 - // distinct will not be cached because cache system need id,
 - // but distinct will not provide id
 - func (session *Session) Distinct(columns ...string) *Session {
 - 	session.statement.Distinct(columns...)
 - 	return session
 - }
 - 
 - // Omit Only not use the parameters as select or update columns
 - func (session *Session) Omit(columns ...string) *Session {
 - 	session.statement.Omit(columns...)
 - 	return session
 - }
 - 
 - // Nullable Set null when column is zero-value and nullable for update
 - func (session *Session) Nullable(columns ...string) *Session {
 - 	session.statement.Nullable(columns...)
 - 	return session
 - }
 - 
 - // NoAutoTime means do not automatically give created field and updated field
 - // the current time on the current session temporarily
 - func (session *Session) NoAutoTime() *Session {
 - 	session.statement.UseAutoTime = false
 - 	return session
 - }
 
 
  |