@@ -35,17 +35,69 @@ public class PgsqlData
3535 [ PrimaryKey ]
3636 public Guid Id { get ; set ; }
3737
38- [ PgSqlIntArray ]
3938 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+ }
4056
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 ; }
4172 [ PgSqlTextArray ]
4273 public string [ ] Strings { get ; set ; }
4374
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+
4483 [ PgSqlIntArray ]
4584 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 ; }
4793 [ PgSqlTextArray ]
4894 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 ; }
49101 }
50102
51103 [ TestFixture ]
@@ -98,27 +150,114 @@ public void Can_save_complex_types_as_JSON()
98150 [ Test ]
99151 public void Does_save_PgSqlData ( )
100152 {
153+ OrmLiteUtils . PrintSql ( ) ;
154+
101155 using ( var db = OpenDbConnection ( ) )
102156 {
103157 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 ( ) ;
104164
105165 var data = new PgsqlData
106166 {
107167 Id = Guid . NewGuid ( ) ,
108168 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 } ,
110172 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 ( ) ,
111181 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 ( ) ,
112185 } ;
113186
114187 db . Save ( data ) ;
115188
116189 var row = db . Select < PgsqlData > ( ) [ 0 ] ;
117190 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 ) ) ;
118251 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 ) ) ;
119256 Assert . That ( row . Strings . EquivalentTo ( data . Strings ) ) ;
120257 Assert . That ( row . ListStrings . EquivalentTo ( data . ListStrings ) ) ;
121258 }
259+
260+ OrmLiteUtils . UnPrintSql ( ) ;
122261 }
123262 }
124263}
0 commit comments