summaryrefslogtreecommitdiff
path: root/vendor/github.com/uptrace/bun/schema
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/uptrace/bun/schema')
-rw-r--r--vendor/github.com/uptrace/bun/schema/append.go15
-rw-r--r--vendor/github.com/uptrace/bun/schema/append_value.go15
-rw-r--r--vendor/github.com/uptrace/bun/schema/field.go4
-rw-r--r--vendor/github.com/uptrace/bun/schema/scan.go3
-rw-r--r--vendor/github.com/uptrace/bun/schema/sqltype.go14
-rw-r--r--vendor/github.com/uptrace/bun/schema/table.go18
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 != "" {