@@ -35,17 +35,69 @@ public class PgsqlData
35
35
[ PrimaryKey ]
36
36
public Guid Id { get ; set ; }
37
37
38
- [ PgSqlIntArray ]
39
38
public int [ ] Ints { get ; set ; }
39
+ public long [ ] Longs { get ; set ; }
40
+ public float [ ] Floats { get ; set ; }
41
+ public double [ ] Doubles { get ; set ; }
42
+ public decimal [ ] Decimals { get ; set ; }
43
+ public string [ ] Strings { get ; set ; }
44
+ public DateTime [ ] DateTimes { get ; set ; }
45
+ public DateTimeOffset [ ] DateTimeOffsets { get ; set ; }
46
+
47
+ public List < int > ListInts { get ; set ; }
48
+ public List < long > ListLongs { get ; set ; }
49
+ public List < float > ListFloats { get ; set ; }
50
+ public List < double > ListDoubles { get ; set ; }
51
+ public List < decimal > ListDecimals { get ; set ; }
52
+ public List < string > ListStrings { get ; set ; }
53
+ public List < DateTime > ListDateTimes { get ; set ; }
54
+ public List < DateTimeOffset > ListDateTimeOffsets { get ; set ; }
55
+ }
40
56
57
+ public class PgsqlDataAnnotated
58
+ {
59
+ [ PrimaryKey ]
60
+ public Guid Id { get ; set ; }
61
+
62
+ [ PgSqlIntArray ]
63
+ public int [ ] Ints { get ; set ; }
64
+ [ PgSqlBigIntArray ]
65
+ public long [ ] Longs { get ; set ; }
66
+ [ PgSqlFloatArray ]
67
+ public float [ ] Floats { get ; set ; }
68
+ [ PgSqlDoubleArray ]
69
+ public double [ ] Doubles { get ; set ; }
70
+ [ PgSqlDecimalArray ]
71
+ public decimal [ ] Decimals { get ; set ; }
41
72
[ PgSqlTextArray ]
42
73
public string [ ] Strings { get ; set ; }
43
74
75
+ // [PgSqlTimestamp]
76
+ [ CustomField ( "timestamp[]" ) ]
77
+ public DateTime [ ] DateTimes { get ; set ; }
78
+
79
+ // [PgSqlTimestampTz]
80
+ [ CustomField ( "timestamp with time zone[]" ) ]
81
+ public DateTimeOffset [ ] DateTimeOffsets { get ; set ; }
82
+
44
83
[ PgSqlIntArray ]
45
84
public List < int > ListInts { get ; set ; }
46
-
85
+ [ PgSqlBigIntArray ]
86
+ public List < long > ListLongs { get ; set ; }
87
+ [ PgSqlFloatArray ]
88
+ public List < float > ListFloats { get ; set ; }
89
+ [ PgSqlDoubleArray ]
90
+ public List < double > ListDoubles { get ; set ; }
91
+ [ PgSqlDecimalArray ]
92
+ public List < decimal > ListDecimals { get ; set ; }
47
93
[ PgSqlTextArray ]
48
94
public List < string > ListStrings { get ; set ; }
95
+ // [PgSqlTimestamp]
96
+ [ CustomField ( "timestamp[]" ) ]
97
+ public List < DateTime > ListDateTimes { get ; set ; }
98
+ // [PgSqlTimestampTz]
99
+ [ CustomField ( "timestamp with time zone[]" ) ]
100
+ public List < DateTimeOffset > ListDateTimeOffsets { get ; set ; }
49
101
}
50
102
51
103
[ TestFixture ]
@@ -98,27 +150,114 @@ public void Can_save_complex_types_as_JSON()
98
150
[ Test ]
99
151
public void Does_save_PgSqlData ( )
100
152
{
153
+ OrmLiteUtils . PrintSql ( ) ;
154
+
101
155
using ( var db = OpenDbConnection ( ) )
102
156
{
103
157
db . DropAndCreateTable < PgsqlData > ( ) ;
158
+ long UnixEpoch = 621355968000000000L ;
159
+ var dateTimes = new DateTime [ ] {
160
+ new DateTime ( UnixEpoch , DateTimeKind . Utc ) ,
161
+ new DateTime ( 2001 , 01 , 01 , 1 , 1 , 1 , 1 , DateTimeKind . Utc ) ,
162
+ } ;
163
+ var dateTimeOffsets = dateTimes . Select ( x => new DateTimeOffset ( x , TimeSpan . Zero ) ) . ToArray ( ) ;
104
164
105
165
var data = new PgsqlData
106
166
{
107
167
Id = Guid . NewGuid ( ) ,
108
168
Ints = new [ ] { 2 , 4 , 1 } ,
109
- ListInts = new [ ] { 2 , 4 , 1 } . ToList ( ) ,
169
+ Longs = new long [ ] { 2 , 4 , 1 } ,
170
+ Floats = new float [ ] { 2 , 4 , 1 } ,
171
+ Doubles = new double [ ] { 2 , 4 , 1 } ,
110
172
Strings = new [ ] { "test string 1" , "test string 2" } ,
173
+ Decimals = new decimal [ ] { 2 , 4 , 1 } ,
174
+ DateTimes = dateTimes ,
175
+ DateTimeOffsets = dateTimeOffsets ,
176
+
177
+ ListInts = new [ ] { 2 , 4 , 1 } . ToList ( ) ,
178
+ ListLongs = new long [ ] { 2 , 4 , 1 } . ToList ( ) ,
179
+ ListFloats = new float [ ] { 2 , 4 , 1 } . ToList ( ) ,
180
+ ListDoubles = new double [ ] { 2 , 4 , 1 } . ToList ( ) ,
111
181
ListStrings = new [ ] { "test string 1" , "test string 2" } . ToList ( ) ,
182
+ ListDecimals = new decimal [ ] { 2 , 4 , 1 } . ToList ( ) ,
183
+ ListDateTimes = dateTimes . ToList ( ) ,
184
+ ListDateTimeOffsets = dateTimeOffsets . ToList ( ) ,
112
185
} ;
113
186
114
187
db . Save ( data ) ;
115
188
116
189
var row = db . Select < PgsqlData > ( ) [ 0 ] ;
117
190
Assert . That ( row . Ints . EquivalentTo ( data . Ints ) ) ;
191
+ Assert . That ( row . Longs . EquivalentTo ( data . Longs ) ) ;
192
+ Assert . That ( row . Floats . EquivalentTo ( data . Floats ) ) ;
193
+ Assert . That ( row . Doubles . EquivalentTo ( data . Doubles ) ) ;
194
+ Assert . That ( row . Decimals . EquivalentTo ( data . Decimals ) ) ;
195
+ Assert . That ( row . ListInts . EquivalentTo ( data . ListInts ) ) ;
196
+ Assert . That ( row . ListLongs . EquivalentTo ( data . ListLongs ) ) ;
197
+ Assert . That ( row . ListFloats . EquivalentTo ( data . ListFloats ) ) ;
198
+ Assert . That ( row . ListDoubles . EquivalentTo ( data . ListDoubles ) ) ;
199
+ Assert . That ( row . ListDecimals . EquivalentTo ( data . ListDecimals ) ) ;
200
+ Assert . That ( row . Strings . EquivalentTo ( data . Strings ) ) ;
201
+ Assert . That ( row . ListStrings . EquivalentTo ( data . ListStrings ) ) ;
202
+ }
203
+
204
+ OrmLiteUtils . UnPrintSql ( ) ;
205
+ }
206
+ [ Test ]
207
+ public void Does_save_PgSqlDataAnnotated ( )
208
+ {
209
+ OrmLiteUtils . PrintSql ( ) ;
210
+
211
+ using ( var db = OpenDbConnection ( ) )
212
+ {
213
+ db . DropAndCreateTable < PgsqlDataAnnotated > ( ) ;
214
+ long UnixEpoch = 621355968000000000L ;
215
+ var dateTimes = new DateTime [ ] {
216
+ new DateTime ( UnixEpoch , DateTimeKind . Utc ) ,
217
+ new DateTime ( 2001 , 01 , 01 , 1 , 1 , 1 , 1 , DateTimeKind . Utc ) ,
218
+ } ;
219
+ var dateTimeOffsets = dateTimes . Select ( x => new DateTimeOffset ( x , TimeSpan . Zero ) ) . ToArray ( ) ;
220
+
221
+ var data = new PgsqlDataAnnotated
222
+ {
223
+ Id = Guid . NewGuid ( ) ,
224
+ Ints = new [ ] { 2 , 4 , 1 } ,
225
+ Longs = new long [ ] { 2 , 4 , 1 } ,
226
+ Floats = new float [ ] { 2 , 4 , 1 } ,
227
+ Doubles = new double [ ] { 2 , 4 , 1 } ,
228
+ Strings = new [ ] { "test string 1" , "test string 2" } ,
229
+ Decimals = new decimal [ ] { 2 , 4 , 1 } ,
230
+ DateTimes = dateTimes ,
231
+ DateTimeOffsets = dateTimeOffsets ,
232
+
233
+ ListInts = new [ ] { 2 , 4 , 1 } . ToList ( ) ,
234
+ ListLongs = new long [ ] { 2 , 4 , 1 } . ToList ( ) ,
235
+ ListFloats = new float [ ] { 2 , 4 , 1 } . ToList ( ) ,
236
+ ListDoubles = new double [ ] { 2 , 4 , 1 } . ToList ( ) ,
237
+ ListStrings = new [ ] { "test string 1" , "test string 2" } . ToList ( ) ,
238
+ ListDecimals = new decimal [ ] { 2 , 4 , 1 } . ToList ( ) ,
239
+ ListDateTimes = dateTimes . ToList ( ) ,
240
+ ListDateTimeOffsets = dateTimeOffsets . ToList ( ) ,
241
+ } ;
242
+
243
+ db . Save ( data ) ;
244
+
245
+ var row = db . Select < PgsqlDataAnnotated > ( ) [ 0 ] ;
246
+ Assert . That ( row . Ints . EquivalentTo ( data . Ints ) ) ;
247
+ Assert . That ( row . Longs . EquivalentTo ( data . Longs ) ) ;
248
+ Assert . That ( row . Floats . EquivalentTo ( data . Floats ) ) ;
249
+ Assert . That ( row . Doubles . EquivalentTo ( data . Doubles ) ) ;
250
+ Assert . That ( row . Decimals . EquivalentTo ( data . Decimals ) ) ;
118
251
Assert . That ( row . ListInts . EquivalentTo ( data . ListInts ) ) ;
252
+ Assert . That ( row . ListLongs . EquivalentTo ( data . ListLongs ) ) ;
253
+ Assert . That ( row . ListFloats . EquivalentTo ( data . ListFloats ) ) ;
254
+ Assert . That ( row . ListDoubles . EquivalentTo ( data . ListDoubles ) ) ;
255
+ Assert . That ( row . ListDecimals . EquivalentTo ( data . ListDecimals ) ) ;
119
256
Assert . That ( row . Strings . EquivalentTo ( data . Strings ) ) ;
120
257
Assert . That ( row . ListStrings . EquivalentTo ( data . ListStrings ) ) ;
121
258
}
259
+
260
+ OrmLiteUtils . UnPrintSql ( ) ;
122
261
}
123
262
}
124
263
}
0 commit comments