@@ -13,30 +13,36 @@ public static DuckDBValue ToDuckDBValue(this object value) =>
1313 value switch
1414 {
1515 bool val => NativeMethods . Value . DuckDBCreateBool ( val ) ,
16+
1617 sbyte val => NativeMethods . Value . DuckDBCreateInt8 ( val ) ,
1718 short val => NativeMethods . Value . DuckDBCreateInt16 ( val ) ,
1819 int val => NativeMethods . Value . DuckDBCreateInt32 ( val ) ,
20+ long val => NativeMethods . Value . DuckDBCreateInt64 ( val ) ,
21+
1922 byte val => NativeMethods . Value . DuckDBCreateUInt8 ( val ) ,
2023 ushort val => NativeMethods . Value . DuckDBCreateUInt16 ( val ) ,
2124 uint val => NativeMethods . Value . DuckDBCreateUInt32 ( val ) ,
22- long val => NativeMethods . Value . DuckDBCreateInt64 ( val ) ,
2325 ulong val => NativeMethods . Value . DuckDBCreateUInt64 ( val ) ,
26+
2427 float val => NativeMethods . Value . DuckDBCreateFloat ( val ) ,
2528 double val => NativeMethods . Value . DuckDBCreateDouble ( val ) ,
26- string val => StringToDuckDBValue ( val ) ,
29+
2730 decimal val => DecimalToDuckDBValue ( val ) ,
28- Guid val => GuidToDuckDBValue ( val ) ,
2931 BigInteger val => NativeMethods . Value . DuckDBCreateHugeInt ( new DuckDBHugeInt ( val ) ) ,
30- byte [ ] val => NativeMethods . Value . DuckDBCreateBlob ( val , val . Length ) ,
31- TimeSpan val => NativeMethods . Value . DuckDBCreateInterval ( val ) ,
32+
33+ string val => StringToDuckDBValue ( val ) ,
34+ Guid val => GuidToDuckDBValue ( val ) ,
3235 DateTime val => NativeMethods . Value . DuckDBCreateTimestamp ( NativeMethods . DateTimeHelpers . DuckDBToTimestamp ( DuckDBTimestamp . FromDateTime ( val ) ) ) ,
33- DateTimeOffset val => DateTimeOffsetToDuckDBValue ( val ) ,
36+ TimeSpan val => NativeMethods . Value . DuckDBCreateInterval ( val ) ,
3437 DuckDBDateOnly val => NativeMethods . Value . DuckDBCreateDate ( NativeMethods . DateTimeHelpers . DuckDBToDate ( val ) ) ,
3538 DuckDBTimeOnly val => NativeMethods . Value . DuckDBCreateTime ( NativeMethods . DateTimeHelpers . DuckDBToTime ( val ) ) ,
3639#if NET6_0_OR_GREATER
3740 DateOnly val => NativeMethods . Value . DuckDBCreateDate ( NativeMethods . DateTimeHelpers . DuckDBToDate ( val ) ) ,
3841 TimeOnly val => NativeMethods. Value . DuckDBCreateTime ( NativeMethods . DateTimeHelpers . DuckDBToTime ( val ) ) ,
3942#endif
43+ DateTimeOffset val => DateTimeOffsetToDuckDBValue( val ) ,
44+ byte [ ] val => NativeMethods . Value . DuckDBCreateBlob ( val , val . Length ) ,
45+
4046 ICollection val => CreateCollectionValue ( val ) ,
4147 _ => throw new InvalidCastException ( $ "Cannot convert value of type { value . GetType ( ) . FullName } to DuckDBValue.")
4248 } ;
@@ -73,28 +79,32 @@ private static DuckDBValue CreateCollectionValue(ICollection collection)
7379 ICollection < bool > items => CreateCollectionValue ( DuckDBType . Boolean , items ) ,
7480
7581 ICollection < sbyte > items => CreateCollectionValue ( DuckDBType . TinyInt , items ) ,
76- ICollection < byte > items => CreateCollectionValue ( DuckDBType . UnsignedTinyInt , items ) ,
7782 ICollection < short > items => CreateCollectionValue ( DuckDBType . SmallInt , items ) ,
78- ICollection < ushort > items => CreateCollectionValue ( DuckDBType . UnsignedSmallInt , items ) ,
7983 ICollection < int > items => CreateCollectionValue ( DuckDBType . Integer , items ) ,
80- ICollection < uint > items => CreateCollectionValue ( DuckDBType . UnsignedInteger , items ) ,
8184 ICollection < long > items => CreateCollectionValue ( DuckDBType . BigInt , items ) ,
85+
86+ ICollection < byte > items => CreateCollectionValue ( DuckDBType . UnsignedTinyInt , items ) ,
87+ ICollection < ushort > items => CreateCollectionValue ( DuckDBType . UnsignedSmallInt , items ) ,
88+ ICollection < uint > items => CreateCollectionValue ( DuckDBType . UnsignedInteger , items ) ,
8289 ICollection < ulong > items => CreateCollectionValue ( DuckDBType . UnsignedBigInt , items ) ,
90+
8391 ICollection < float > items => CreateCollectionValue ( DuckDBType . Float , items ) ,
8492 ICollection < double > items => CreateCollectionValue ( DuckDBType . Double , items ) ,
85- ICollection < BigInteger > items => CreateCollectionValue ( DuckDBType . HugeInt , items ) ,
93+
8694 ICollection < decimal > items => CreateCollectionValue ( DuckDBType . Varchar , items ) ,
87- ICollection < Guid > items => CreateCollectionValue ( DuckDBType . Varchar , items ) ,
95+ ICollection < BigInteger > items => CreateCollectionValue ( DuckDBType . HugeInt , items ) ,
96+
8897 ICollection < string > items => CreateCollectionValue ( DuckDBType . Varchar , items ) ,
98+ ICollection < Guid > items => CreateCollectionValue ( DuckDBType . Varchar , items ) ,
8999 ICollection < DateTime > items => CreateCollectionValue ( DuckDBType . Date , items ) ,
90- ICollection < DateTimeOffset > items => CreateCollectionValue ( DuckDBType . TimeTz , items ) ,
91100 ICollection < TimeSpan > items => CreateCollectionValue ( DuckDBType . Interval , items ) ,
92101 ICollection < DuckDBDateOnly > items => CreateCollectionValue ( DuckDBType . Date , items ) ,
93102 ICollection < DuckDBTimeOnly > items => CreateCollectionValue ( DuckDBType . Time , items ) ,
94103#if NET6_0_OR_GREATER
95104 ICollection < DateOnly > items => CreateCollectionValue ( DuckDBType . Date , items ) ,
96105 ICollection< TimeOnly > items => CreateCollectionValue ( DuckDBType . Time , items ) ,
97106#endif
107+ ICollection< DateTimeOffset > items => CreateCollectionValue ( DuckDBType . TimeTz , items ) ,
98108 _ => throw new InvalidOperationException ( $ "Cannot convert collection type { collection . GetType ( ) . FullName } to DuckDBValue.")
99109 } ;
100110 }
0 commit comments