diff options
Diffstat (limited to 'vendor/github.com/uptrace/bun/schema')
-rw-r--r-- | vendor/github.com/uptrace/bun/schema/append.go | 15 | ||||
-rw-r--r-- | vendor/github.com/uptrace/bun/schema/append_value.go | 15 | ||||
-rw-r--r-- | vendor/github.com/uptrace/bun/schema/field.go | 4 | ||||
-rw-r--r-- | vendor/github.com/uptrace/bun/schema/scan.go | 3 | ||||
-rw-r--r-- | vendor/github.com/uptrace/bun/schema/sqltype.go | 14 | ||||
-rw-r--r-- | vendor/github.com/uptrace/bun/schema/table.go | 18 |
6 files changed, 40 insertions, 29 deletions
diff --git a/vendor/github.com/uptrace/bun/schema/append.go b/vendor/github.com/uptrace/bun/schema/append.go index 68f7071c8..57d292bfe 100644 --- a/vendor/github.com/uptrace/bun/schema/append.go +++ b/vendor/github.com/uptrace/bun/schema/append.go @@ -3,29 +3,14 @@ package schema import ( "reflect" "strconv" - "strings" "time" "github.com/vmihailenco/msgpack/v5" "github.com/uptrace/bun/dialect" - "github.com/uptrace/bun/dialect/sqltype" "github.com/uptrace/bun/internal" ) -func FieldAppender(dialect Dialect, field *Field) AppenderFunc { - if field.Tag.HasOption("msgpack") { - return appendMsgpack - } - - switch strings.ToUpper(field.UserSQLType) { - case sqltype.JSON, sqltype.JSONB: - return AppendJSONValue - } - - return dialect.Appender(field.StructField.Type) -} - func Append(fmter Formatter, b []byte, v interface{}, custom CustomAppender) []byte { switch v := v.(type) { case nil: diff --git a/vendor/github.com/uptrace/bun/schema/append_value.go b/vendor/github.com/uptrace/bun/schema/append_value.go index 948ff86af..8fe8a13b2 100644 --- a/vendor/github.com/uptrace/bun/schema/append_value.go +++ b/vendor/github.com/uptrace/bun/schema/append_value.go @@ -6,9 +6,11 @@ import ( "net" "reflect" "strconv" + "strings" "time" "github.com/uptrace/bun/dialect" + "github.com/uptrace/bun/dialect/sqltype" "github.com/uptrace/bun/extra/bunjson" "github.com/uptrace/bun/internal" ) @@ -47,6 +49,19 @@ var appenders = []AppenderFunc{ reflect.UnsafePointer: nil, } +func FieldAppender(dialect Dialect, field *Field) AppenderFunc { + if field.Tag.HasOption("msgpack") { + return appendMsgpack + } + + switch strings.ToUpper(field.UserSQLType) { + case sqltype.JSON, sqltype.JSONB: + return AppendJSONValue + } + + return dialect.Appender(field.StructField.Type) +} + func Appender(typ reflect.Type, custom CustomAppender) AppenderFunc { switch typ { case bytesType: diff --git a/vendor/github.com/uptrace/bun/schema/field.go b/vendor/github.com/uptrace/bun/schema/field.go index 1e069b82f..59990b924 100644 --- a/vendor/github.com/uptrace/bun/schema/field.go +++ b/vendor/github.com/uptrace/bun/schema/field.go @@ -101,7 +101,9 @@ func (f *Field) ScanValue(strct reflect.Value, src interface{}) error { func (f *Field) markAsPK() { f.IsPK = true f.NotNull = true - f.NullZero = true + if !f.Tag.HasOption("allowzero") { + f.NullZero = true + } } func indexEqual(ind1, ind2 []int) bool { diff --git a/vendor/github.com/uptrace/bun/schema/scan.go b/vendor/github.com/uptrace/bun/schema/scan.go index 238fde217..60ad27d53 100644 --- a/vendor/github.com/uptrace/bun/schema/scan.go +++ b/vendor/github.com/uptrace/bun/schema/scan.go @@ -207,6 +207,9 @@ func scanString(dest reflect.Value, src interface{}) error { case []byte: dest.SetString(string(src)) return nil + case time.Time: + dest.SetString(src.Format(time.RFC3339Nano)) + return nil } return fmt.Errorf("bun: can't scan %#v into %s", src, dest.Type()) } diff --git a/vendor/github.com/uptrace/bun/schema/sqltype.go b/vendor/github.com/uptrace/bun/schema/sqltype.go index 23322a1e1..72609cf7a 100644 --- a/vendor/github.com/uptrace/bun/schema/sqltype.go +++ b/vendor/github.com/uptrace/bun/schema/sqltype.go @@ -109,17 +109,23 @@ func (tm *NullTime) Scan(src interface{}) error { } switch src := src.(type) { + case time.Time: + tm.Time = src + return nil + case string: + newtm, err := internal.ParseTime(src) + if err != nil { + return err + } + tm.Time = newtm + return nil case []byte: newtm, err := internal.ParseTime(internal.String(src)) if err != nil { return err } - tm.Time = newtm return nil - case time.Time: - tm.Time = src - return nil default: return fmt.Errorf("bun: can't scan %#v into NullTime", src) } diff --git a/vendor/github.com/uptrace/bun/schema/table.go b/vendor/github.com/uptrace/bun/schema/table.go index 8bed5ed38..213f821ab 100644 --- a/vendor/github.com/uptrace/bun/schema/table.go +++ b/vendor/github.com/uptrace/bun/schema/table.go @@ -181,17 +181,17 @@ func (t *Table) initFields() { t.FieldMap = make(map[string]*Field, t.Type.NumField()) t.addFields(t.Type, nil) - if len(t.PKs) > 0 { - return - } - for _, name := range []string{"id", "uuid", "pk_" + t.ModelName} { - if field, ok := t.FieldMap[name]; ok { - field.markAsPK() - t.PKs = []*Field{field} - t.DataFields = removeField(t.DataFields, field) - break + if len(t.PKs) == 0 { + for _, name := range []string{"id", "uuid", "pk_" + t.ModelName} { + if field, ok := t.FieldMap[name]; ok { + field.markAsPK() + t.PKs = []*Field{field} + t.DataFields = removeField(t.DataFields, field) + break + } } } + if len(t.PKs) == 1 { pk := t.PKs[0] if pk.SQLDefault != "" { |