summaryrefslogtreecommitdiff
path: root/vendor/github.com/go-pg/pg/v10/orm/field.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/go-pg/pg/v10/orm/field.go')
-rw-r--r--vendor/github.com/go-pg/pg/v10/orm/field.go146
1 files changed, 0 insertions, 146 deletions
diff --git a/vendor/github.com/go-pg/pg/v10/orm/field.go b/vendor/github.com/go-pg/pg/v10/orm/field.go
deleted file mode 100644
index fe9b4abea..000000000
--- a/vendor/github.com/go-pg/pg/v10/orm/field.go
+++ /dev/null
@@ -1,146 +0,0 @@
-package orm
-
-import (
- "fmt"
- "reflect"
-
- "github.com/go-pg/pg/v10/types"
- "github.com/go-pg/zerochecker"
-)
-
-const (
- PrimaryKeyFlag = uint8(1) << iota
- ForeignKeyFlag
- NotNullFlag
- UseZeroFlag
- UniqueFlag
- ArrayFlag
-)
-
-type Field struct {
- Field reflect.StructField
- Type reflect.Type
- Index []int
-
- GoName string // struct field name, e.g. Id
- SQLName string // SQL name, .e.g. id
- Column types.Safe // escaped SQL name, e.g. "id"
- SQLType string
- UserSQLType string
- Default types.Safe
- OnDelete string
- OnUpdate string
-
- flags uint8
-
- append types.AppenderFunc
- scan types.ScannerFunc
-
- isZero zerochecker.Func
-}
-
-func indexEqual(ind1, ind2 []int) bool {
- if len(ind1) != len(ind2) {
- return false
- }
- for i, ind := range ind1 {
- if ind != ind2[i] {
- return false
- }
- }
- return true
-}
-
-func (f *Field) Clone() *Field {
- cp := *f
- cp.Index = cp.Index[:len(f.Index):len(f.Index)]
- return &cp
-}
-
-func (f *Field) setFlag(flag uint8) {
- f.flags |= flag
-}
-
-func (f *Field) hasFlag(flag uint8) bool {
- return f.flags&flag != 0
-}
-
-func (f *Field) Value(strct reflect.Value) reflect.Value {
- return fieldByIndexAlloc(strct, f.Index)
-}
-
-func (f *Field) HasZeroValue(strct reflect.Value) bool {
- return f.hasZeroValue(strct, f.Index)
-}
-
-func (f *Field) hasZeroValue(v reflect.Value, index []int) bool {
- for _, idx := range index {
- if v.Kind() == reflect.Ptr {
- if v.IsNil() {
- return true
- }
- v = v.Elem()
- }
- v = v.Field(idx)
- }
- return f.isZero(v)
-}
-
-func (f *Field) NullZero() bool {
- return !f.hasFlag(UseZeroFlag)
-}
-
-func (f *Field) AppendValue(b []byte, strct reflect.Value, quote int) []byte {
- fv, ok := fieldByIndex(strct, f.Index)
- if !ok {
- return types.AppendNull(b, quote)
- }
-
- if f.NullZero() && f.isZero(fv) {
- return types.AppendNull(b, quote)
- }
- if f.append == nil {
- panic(fmt.Errorf("pg: AppendValue(unsupported %s)", fv.Type()))
- }
- return f.append(b, fv, quote)
-}
-
-func (f *Field) ScanValue(strct reflect.Value, rd types.Reader, n int) error {
- if f.scan == nil {
- return fmt.Errorf("pg: ScanValue(unsupported %s)", f.Type)
- }
-
- var fv reflect.Value
- if n == -1 {
- var ok bool
- fv, ok = fieldByIndex(strct, f.Index)
- if !ok {
- return nil
- }
- } else {
- fv = fieldByIndexAlloc(strct, f.Index)
- }
-
- return f.scan(fv, rd, n)
-}
-
-type Method struct {
- Index int
-
- flags int8
-
- appender func([]byte, reflect.Value, int) []byte
-}
-
-func (m *Method) Has(flag int8) bool {
- return m.flags&flag != 0
-}
-
-func (m *Method) Value(strct reflect.Value) reflect.Value {
- return strct.Method(m.Index).Call(nil)[0]
-}
-
-func (m *Method) AppendValue(dst []byte, strct reflect.Value, quote int) []byte {
- mv := m.Value(strct)
- return m.appender(dst, mv, quote)
-}