|
|
@@ -0,0 +1,627 @@
|
|
|
+package xorm
|
|
|
+
|
|
|
+import (
|
|
|
+ "time"
|
|
|
+)
|
|
|
+
|
|
|
+type Value []byte
|
|
|
+
|
|
|
+type NullString struct {
|
|
|
+ String string
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (ns NullString) Ptr() *string {
|
|
|
+ if !ns.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &ns.String
|
|
|
+}
|
|
|
+
|
|
|
+func (ns NullString) ValueOrZero() string {
|
|
|
+ if !ns.Valid {
|
|
|
+ return ""
|
|
|
+ }
|
|
|
+ return ns.String
|
|
|
+}
|
|
|
+
|
|
|
+func (ns NullString) IsZero() bool {
|
|
|
+ return !ns.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullBool struct {
|
|
|
+ Bool bool
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nb NullBool) Ptr() *bool {
|
|
|
+ if !nb.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nb.Bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nb NullBool) ValueOrZero() bool {
|
|
|
+ if !nb.Valid {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ return nb.Bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nb NullBool) IsZero() bool {
|
|
|
+ return !nb.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullInt struct {
|
|
|
+ Int int
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt) Ptr() *int {
|
|
|
+ if !ni.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &ni.Int
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt) ValueOrZero() int {
|
|
|
+ if !ni.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return ni.Int
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt) IsZero() bool {
|
|
|
+ return !ni.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullInt8 struct {
|
|
|
+ Int8 int8
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt8) Ptr() *int8 {
|
|
|
+ if !ni.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &ni.Int8
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt8) ValueOrZero() int8 {
|
|
|
+ if !ni.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return ni.Int8
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt8) IsZero() bool {
|
|
|
+ return !ni.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullInt16 struct {
|
|
|
+ Int16 int16
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt16) Ptr() *int16 {
|
|
|
+ if !ni.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &ni.Int16
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt16) ValueOrZero() int16 {
|
|
|
+ if !ni.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return ni.Int16
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt16) IsZero() bool {
|
|
|
+ return !ni.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullInt32 struct {
|
|
|
+ Int32 int32
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt32) Ptr() *int32 {
|
|
|
+ if !ni.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &ni.Int32
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt32) ValueOrZero() int32 {
|
|
|
+ if !ni.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return ni.Int32
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt32) IsZero() bool {
|
|
|
+ return !ni.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullInt64 struct {
|
|
|
+ Int64 int64
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt64) Ptr() *int64 {
|
|
|
+ if !ni.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &ni.Int64
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt64) ValueOrZero() int64 {
|
|
|
+ if !ni.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return ni.Int64
|
|
|
+}
|
|
|
+
|
|
|
+func (ni NullInt64) IsZero() bool {
|
|
|
+ return !ni.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullUint struct {
|
|
|
+ Uint uint
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint) Ptr() *uint {
|
|
|
+ if !nu.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nu.Uint
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint) ValueOrZero() uint {
|
|
|
+ if !nu.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return nu.Uint
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint) IsZero() bool {
|
|
|
+ return !nu.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullUint8 struct {
|
|
|
+ Uint8 uint8
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint8) Ptr() *uint8 {
|
|
|
+ if !nu.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nu.Uint8
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint8) ValueOrZero() uint8 {
|
|
|
+ if !nu.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return nu.Uint8
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint8) IsZero() bool {
|
|
|
+ return !nu.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullUint16 struct {
|
|
|
+ Uint16 uint16
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint16) Ptr() *uint16 {
|
|
|
+ if !nu.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nu.Uint16
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint16) ValueOrZero() uint16 {
|
|
|
+ if !nu.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return nu.Uint16
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint16) IsZero() bool {
|
|
|
+ return !nu.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullUint32 struct {
|
|
|
+ Uint32 uint32
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint32) Ptr() *uint32 {
|
|
|
+ if !nu.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nu.Uint32
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint32) ValueOrZero() uint32 {
|
|
|
+ if !nu.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return nu.Uint32
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint32) IsZero() bool {
|
|
|
+ return !nu.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullUint64 struct {
|
|
|
+ Uint64 uint64
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint64) Ptr() *uint64 {
|
|
|
+ if !nu.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nu.Uint64
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint64) ValueOrZero() uint64 {
|
|
|
+ if !nu.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return nu.Uint64
|
|
|
+}
|
|
|
+
|
|
|
+func (nu NullUint64) IsZero() bool {
|
|
|
+ return !nu.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullFloat32 struct {
|
|
|
+ Float32 float32
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nf NullFloat32) Ptr() *float32 {
|
|
|
+ if !nf.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nf.Float32
|
|
|
+}
|
|
|
+
|
|
|
+func (nf NullFloat32) ValueOrZero() float32 {
|
|
|
+ if !nf.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return nf.Float32
|
|
|
+}
|
|
|
+
|
|
|
+func (nf NullFloat32) IsZero() bool {
|
|
|
+ return !nf.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullFloat64 struct {
|
|
|
+ Float64 float64
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nf NullFloat64) Ptr() *float64 {
|
|
|
+ if !nf.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nf.Float64
|
|
|
+}
|
|
|
+
|
|
|
+func (nf NullFloat64) ValueOrZero() float64 {
|
|
|
+ if !nf.Valid {
|
|
|
+ return 0
|
|
|
+ }
|
|
|
+ return nf.Float64
|
|
|
+}
|
|
|
+
|
|
|
+func (nf NullFloat64) IsZero() bool {
|
|
|
+ return !nf.Valid
|
|
|
+}
|
|
|
+
|
|
|
+type NullTime struct {
|
|
|
+ Time time.Time
|
|
|
+ Valid bool
|
|
|
+}
|
|
|
+
|
|
|
+func (nt NullTime) Ptr() *time.Time {
|
|
|
+ if !nt.Valid {
|
|
|
+ return nil
|
|
|
+ }
|
|
|
+ return &nt.Time
|
|
|
+}
|
|
|
+
|
|
|
+func (nt NullTime) ValueOrZero() time.Time {
|
|
|
+ if !nt.Valid {
|
|
|
+ return time.Time{}
|
|
|
+ }
|
|
|
+ return nt.Time
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Bytes() []byte {
|
|
|
+ return []byte(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) String() string {
|
|
|
+ return string(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullString() NullString {
|
|
|
+ if v == nil {
|
|
|
+ return NullString{
|
|
|
+ String: "",
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullString{
|
|
|
+ String: string(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Bool() bool {
|
|
|
+ return Bool(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullBool() NullBool {
|
|
|
+ if v == nil {
|
|
|
+ return NullBool{
|
|
|
+ Bool: false,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullBool{
|
|
|
+ Bool: Bool(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Int() int {
|
|
|
+ return Int(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullInt() NullInt {
|
|
|
+ if v == nil {
|
|
|
+ return NullInt{
|
|
|
+ Int: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullInt{
|
|
|
+ Int: Int(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Int8() int8 {
|
|
|
+ return Int8(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullInt8() NullInt8 {
|
|
|
+ if v == nil {
|
|
|
+ return NullInt8{
|
|
|
+ Int8: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullInt8{
|
|
|
+ Int8: Int8(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Int16() int16 {
|
|
|
+ return Int16(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullInt16() NullInt16 {
|
|
|
+ if v == nil {
|
|
|
+ return NullInt16{
|
|
|
+ Int16: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullInt16{
|
|
|
+ Int16: Int16(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Int32() int32 {
|
|
|
+ return Int32(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullInt32() NullInt32 {
|
|
|
+ if v == nil {
|
|
|
+ return NullInt32{
|
|
|
+ Int32: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullInt32{
|
|
|
+ Int32: Int32(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Int64() int64 {
|
|
|
+ return Int64(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullInt64() NullInt64 {
|
|
|
+ if v == nil {
|
|
|
+ return NullInt64{
|
|
|
+ Int64: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullInt64{
|
|
|
+ Int64: Int64(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Uint() uint {
|
|
|
+ return Uint(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullUint() NullUint {
|
|
|
+ if v == nil {
|
|
|
+ return NullUint{
|
|
|
+ Uint: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullUint{
|
|
|
+ Uint: Uint(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Uint8() uint8 {
|
|
|
+ return Uint8(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullUint8() NullUint8 {
|
|
|
+ if v == nil {
|
|
|
+ return NullUint8{
|
|
|
+ Uint8: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullUint8{
|
|
|
+ Uint8: Uint8(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Uint16() uint16 {
|
|
|
+ return Uint16(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullUint16() NullUint16 {
|
|
|
+ if v == nil {
|
|
|
+ return NullUint16{
|
|
|
+ Uint16: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullUint16{
|
|
|
+ Uint16: Uint16(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Uint32() uint32 {
|
|
|
+ return Uint32(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullUint32() NullUint32 {
|
|
|
+ if v == nil {
|
|
|
+ return NullUint32{
|
|
|
+ Uint32: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullUint32{
|
|
|
+ Uint32: Uint32(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Uint64() uint64 {
|
|
|
+ return Uint64(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullUint64() NullUint64 {
|
|
|
+ if v == nil {
|
|
|
+ return NullUint64{
|
|
|
+ Uint64: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullUint64{
|
|
|
+ Uint64: Uint64(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Float32() float32 {
|
|
|
+ return Float32(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullFloat32() NullFloat32 {
|
|
|
+ if v == nil {
|
|
|
+ return NullFloat32{
|
|
|
+ Float32: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullFloat32{
|
|
|
+ Float32: Float32(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Float64() float64 {
|
|
|
+ return Float64(v)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullFloat64() NullFloat64 {
|
|
|
+ if v == nil {
|
|
|
+ return NullFloat64{
|
|
|
+ Float64: 0,
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullFloat64{
|
|
|
+ Float64: Float64(v),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) Time(format string, TZLocation ...*time.Location) time.Time {
|
|
|
+ return Time(v, format, TZLocation...)
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) NullTime(format string, TZLocation ...*time.Location) NullTime {
|
|
|
+ if v == nil {
|
|
|
+ return NullTime{
|
|
|
+ Time: time.Time{},
|
|
|
+ Valid: false,
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ return NullTime{
|
|
|
+ Time: Time(v, format, TZLocation...),
|
|
|
+ Valid: true,
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+func (v Value) TimeDuration() time.Duration {
|
|
|
+ return TimeDuration(v)
|
|
|
+}
|