From 4e4c43930ac60ebcab8186140d2d4f7fdae53863 Mon Sep 17 00:00:00 2001 From: Levente Batuska Date: Sun, 5 Jan 2025 22:57:35 +0100 Subject: [PATCH] fix(Type): better handling for driver.Valuer interface --- type/optional.go | 7 ++++--- type/result.go | 7 ++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/type/optional.go b/type/optional.go index b801739..5fa0698 100644 --- a/type/optional.go +++ b/type/optional.go @@ -298,10 +298,11 @@ func (opt Optional[T]) Value() (driver.Value, error) { return nil, nil } - switch v := any(opt.Value).(type) { + if valuer, ok := any(opt.value).(driver.Valuer); ok { + return valuer.Value() + } - case driver.Valuer: - return v.Value() + switch v := any(opt.Value).(type) { case string, bool, int, int8, int16, int32, int64, diff --git a/type/result.go b/type/result.go index edd8227..5cca7be 100644 --- a/type/result.go +++ b/type/result.go @@ -331,10 +331,11 @@ func (res Result[T]) Value() (driver.Value, error) { return nil, nil } - switch v := any(res.Value).(type) { + if valuer, ok := any(res.value).(driver.Valuer); ok { + return valuer.Value() + } - case driver.Valuer: - return v.Value() + switch v := any(res.Value).(type) { case string, bool, int, int8, int16, int32, int64,