Revert "types/model: remove (*Digest).Scan and Digest.Value (#3589)"

This reverts commit 42f2cc408e.
This commit is contained in:
Blake Mizerany 2024-04-11 00:45:07 -07:00
parent 42f2cc408e
commit 0efb7931c7

View file

@ -44,9 +44,32 @@ func (d Digest) LogValue() slog.Value {
}
var (
_ driver.Valuer = Digest{}
_ sql.Scanner = (*Digest)(nil)
_ slog.LogValuer = Digest{}
)
// Scan implements the sql.Scanner interface.
func (d *Digest) Scan(src any) error {
if d.IsValid() {
return errors.New("model.Digest: illegal Scan on valid Digest")
}
switch v := src.(type) {
case string:
*d = ParseDigest(v)
return nil
case []byte:
*d = ParseDigest(string(v))
return nil
}
return fmt.Errorf("model.Digest: invalid Scan source %T", src)
}
// Value implements the driver.Valuer interface.
func (d Digest) Value() (driver.Value, error) {
return d.String(), nil
}
// ParseDigest parses a string in the form of "<digest-type>-<digest>" into a
// Digest.
func ParseDigest(s string) Digest {