gorm/encoder.go
2018-12-10 16:09:52 -08:00

34 lines
694 B
Go

package gorm
// Encoder is a value encoding interface for complex field types
type Encoder interface {
EncodeField(column string) (interface{}, error)
DecodeField(column string, value interface{}) error
}
// decoder defers decoding until necessary
type decoder struct {
Encoder
column string
value interface{}
}
func newDecoder(encoder Encoder, scope *Scope, column string) *decoder {
return &decoder{
encoder,
column,
nil,
}
}
// Scan implements the sql.Scanner interface
func (d *decoder) Scan(src interface{}) error {
d.value = src
return nil
}
// Decode handles the decoding at a later time
func (d *decoder) Decode() error {
return d.DecodeField(d.column, d.value)
}