@@ -23,30 +23,68 @@ public static async Task Main()
2323[ Table ( "series" ) ]
2424public sealed class Series
2525{
26- [ PrimaryKey , Column ( "series_id" ) ] public ulong SeriesId { get ; init ; }
27- [ Column ( "title" ) , NotNull ] public string Title { get ; init ; } = null ! ;
28- [ Column ( "series_info" ) ] public string ? SeriesInfo { get ; init ; }
29- [ Column ( "release_date" ) , DataType ( DataType . Date ) ] public DateTime ReleaseDate { get ; init ; }
26+ [ PrimaryKey ]
27+ [ Column ( "series_id" ) ]
28+ public ulong SeriesId { get ; init ; }
29+
30+ [ Column ( "title" ) ]
31+ [ NotNull ]
32+ public string Title { get ; init ; } = null ! ;
33+
34+ [ Column ( "series_info" ) ]
35+ public string ? SeriesInfo { get ; init ; }
36+
37+ [ Column ( "release_date" ) ]
38+ [ DataType ( DataType . Date ) ]
39+ public DateTime ReleaseDate { get ; init ; }
3040}
3141
3242[ Table ( "seasons" ) ]
3343public sealed class Season
3444{
35- [ PrimaryKey , Column ( "series_id" ) ] public ulong SeriesId { get ; init ; }
36- [ PrimaryKey , Column ( "season_id" ) ] public ulong SeasonId { get ; init ; }
37- [ Column ( "title" ) , NotNull ] public string Title { get ; init ; } = null ! ;
38- [ Column ( "first_aired" ) , DataType ( DataType . Date ) ] public DateTime FirstAired { get ; init ; }
39- [ Column ( "last_aired" ) , DataType ( DataType . Date ) ] public DateTime LastAired { get ; init ; }
45+ [ PrimaryKey ]
46+ [ Column ( "series_id" ) ]
47+ public ulong SeriesId { get ; init ; }
48+
49+ [ PrimaryKey ]
50+ [ Column ( "season_id" ) ]
51+ public ulong SeasonId { get ; init ; }
52+
53+ [ Column ( "title" ) ]
54+ [ NotNull ]
55+ public string Title { get ; init ; } = null ! ;
56+
57+ [ Column ( "first_aired" ) ]
58+ [ DataType ( DataType . Date ) ]
59+ public DateTime FirstAired { get ; init ; }
60+
61+ [ Column ( "last_aired" ) ]
62+ [ DataType ( DataType . Date ) ]
63+ public DateTime LastAired { get ; init ; }
4064}
4165
4266[ Table ( "episodes" ) ]
4367public sealed class Episode
4468{
45- [ PrimaryKey , Column ( "series_id" ) ] public ulong SeriesId { get ; init ; }
46- [ PrimaryKey , Column ( "season_id" ) ] public ulong SeasonId { get ; init ; }
47- [ PrimaryKey , Column ( "episode_id" ) ] public ulong EpisodeId { get ; init ; }
48- [ Column ( "title" ) , NotNull ] public string Title { get ; init ; } = null ! ;
49- [ Column ( "air_date" ) , DataType ( DataType . Date ) ] public DateTime AirDate { get ; init ; }
69+ [ PrimaryKey ]
70+ [ Column ( "series_id" ) ]
71+ public ulong SeriesId { get ; init ; }
72+
73+ [ PrimaryKey ]
74+ [ Column ( "season_id" ) ]
75+ public ulong SeasonId { get ; init ; }
76+
77+ [ PrimaryKey ]
78+ [ Column ( "episode_id" ) ]
79+ public ulong EpisodeId { get ; init ; }
80+
81+ [ Column ( "title" ) ]
82+ [ NotNull ]
83+ public string Title { get ; init ; } = null ! ;
84+
85+ [ Column ( "air_date" ) ]
86+ [ DataType ( DataType . Date ) ]
87+ public DateTime AirDate { get ; init ; }
5088}
5189
5290#endregion
@@ -143,39 +181,39 @@ private async Task LoadData()
143181
144182 var seasons = new List < Season >
145183 {
146- new ( ) { SeriesId = 1 , SeasonId = 1 , Title = "Season 1" , FirstAired = new DateTime ( 2006 , 02 , 03 ) , LastAired = new DateTime ( 2006 , 03 , 03 ) } ,
147- new ( ) { SeriesId = 1 , SeasonId = 2 , Title = "Season 2" , FirstAired = new DateTime ( 2007 , 08 , 24 ) , LastAired = new DateTime ( 2007 , 09 , 28 ) } ,
148- new ( ) { SeriesId = 1 , SeasonId = 3 , Title = "Season 3" , FirstAired = new DateTime ( 2008 , 11 , 21 ) , LastAired = new DateTime ( 2008 , 12 , 26 ) } ,
149- new ( ) { SeriesId = 1 , SeasonId = 4 , Title = "Season 4" , FirstAired = new DateTime ( 2010 , 06 , 25 ) , LastAired = new DateTime ( 2010 , 07 , 30 ) } ,
150- new ( ) { SeriesId = 2 , SeasonId = 1 , Title = "Season 1" , FirstAired = new DateTime ( 2014 , 04 , 06 ) , LastAired = new DateTime ( 2014 , 06 , 01 ) } ,
151- new ( ) { SeriesId = 2 , SeasonId = 2 , Title = "Season 2" , FirstAired = new DateTime ( 2015 , 04 , 12 ) , LastAired = new DateTime ( 2015 , 06 , 14 ) } ,
152- new ( ) { SeriesId = 2 , SeasonId = 3 , Title = "Season 3" , FirstAired = new DateTime ( 2016 , 04 , 24 ) , LastAired = new DateTime ( 2016 , 06 , 26 ) } ,
153- new ( ) { SeriesId = 2 , SeasonId = 4 , Title = "Season 4" , FirstAired = new DateTime ( 2017 , 04 , 23 ) , LastAired = new DateTime ( 2017 , 06 , 25 ) } ,
154- new ( ) { SeriesId = 2 , SeasonId = 5 , Title = "Season 5" , FirstAired = new DateTime ( 2018 , 03 , 25 ) , LastAired = new DateTime ( 2018 , 05 , 13 ) } ,
184+ new Season { SeriesId = 1 , SeasonId = 1 , Title = "Season 1" , FirstAired = new DateTime ( 2006 , 02 , 03 ) , LastAired = new DateTime ( 2006 , 03 , 03 ) } ,
185+ new Season { SeriesId = 1 , SeasonId = 2 , Title = "Season 2" , FirstAired = new DateTime ( 2007 , 08 , 24 ) , LastAired = new DateTime ( 2007 , 09 , 28 ) } ,
186+ new Season { SeriesId = 1 , SeasonId = 3 , Title = "Season 3" , FirstAired = new DateTime ( 2008 , 11 , 21 ) , LastAired = new DateTime ( 2008 , 12 , 26 ) } ,
187+ new Season { SeriesId = 1 , SeasonId = 4 , Title = "Season 4" , FirstAired = new DateTime ( 2010 , 06 , 25 ) , LastAired = new DateTime ( 2010 , 07 , 30 ) } ,
188+ new Season { SeriesId = 2 , SeasonId = 1 , Title = "Season 1" , FirstAired = new DateTime ( 2014 , 04 , 06 ) , LastAired = new DateTime ( 2014 , 06 , 01 ) } ,
189+ new Season { SeriesId = 2 , SeasonId = 2 , Title = "Season 2" , FirstAired = new DateTime ( 2015 , 04 , 12 ) , LastAired = new DateTime ( 2015 , 06 , 14 ) } ,
190+ new Season { SeriesId = 2 , SeasonId = 3 , Title = "Season 3" , FirstAired = new DateTime ( 2016 , 04 , 24 ) , LastAired = new DateTime ( 2016 , 06 , 26 ) } ,
191+ new Season { SeriesId = 2 , SeasonId = 4 , Title = "Season 4" , FirstAired = new DateTime ( 2017 , 04 , 23 ) , LastAired = new DateTime ( 2017 , 06 , 25 ) } ,
192+ new Season { SeriesId = 2 , SeasonId = 5 , Title = "Season 5" , FirstAired = new DateTime ( 2018 , 03 , 25 ) , LastAired = new DateTime ( 2018 , 05 , 13 ) }
155193 } ;
156194 await db . BulkCopyAsync ( seasons ) ;
157195
158196 var eps = new List < Episode >
159197 {
160- new ( ) { SeriesId = 1 , SeasonId = 1 , EpisodeId = 1 , Title = "Yesterday's Jam" , AirDate = new DateTime ( 2006 , 02 , 03 ) } ,
161- new ( ) { SeriesId = 1 , SeasonId = 1 , EpisodeId = 2 , Title = "Calamity Jen" , AirDate = new DateTime ( 2006 , 02 , 03 ) } ,
162- new ( ) { SeriesId = 1 , SeasonId = 1 , EpisodeId = 3 , Title = "Fifty-Fifty" , AirDate = new DateTime ( 2006 , 02 , 10 ) } ,
163- new ( ) { SeriesId = 1 , SeasonId = 1 , EpisodeId = 4 , Title = "The Red Door" , AirDate = new DateTime ( 2006 , 02 , 17 ) } ,
164- new ( ) { SeriesId = 1 , SeasonId = 2 , EpisodeId = 1 , Title = "The Work Outing" , AirDate = new DateTime ( 2007 , 08 , 24 ) } ,
165- new ( ) { SeriesId = 1 , SeasonId = 2 , EpisodeId = 2 , Title = "Return of the Golden Child" , AirDate = new DateTime ( 2007 , 08 , 31 ) } ,
166- new ( ) { SeriesId = 1 , SeasonId = 3 , EpisodeId = 1 , Title = "From Hell" , AirDate = new DateTime ( 2008 , 11 , 21 ) } ,
167- new ( ) { SeriesId = 1 , SeasonId = 3 , EpisodeId = 2 , Title = "Are We Not Men?" , AirDate = new DateTime ( 2008 , 11 , 28 ) } ,
168- new ( ) { SeriesId = 1 , SeasonId = 4 , EpisodeId = 1 , Title = "Jen The Fredo" , AirDate = new DateTime ( 2010 , 06 , 25 ) } ,
169- new ( ) { SeriesId = 1 , SeasonId = 4 , EpisodeId = 2 , Title = "The Final Countdown" , AirDate = new DateTime ( 2010 , 07 , 02 ) } ,
170- new ( ) { SeriesId = 2 , SeasonId = 2 , EpisodeId = 1 , Title = "Minimum Viable Product" , AirDate = new DateTime ( 2014 , 04 , 06 ) } ,
171- new ( ) { SeriesId = 2 , SeasonId = 2 , EpisodeId = 2 , Title = "The Cap Table" , AirDate = new DateTime ( 2014 , 04 , 13 ) } ,
172- new ( ) { SeriesId = 2 , SeasonId = 1 , EpisodeId = 3 , Title = "Articles of Incorporation" , AirDate = new DateTime ( 2014 , 04 , 20 ) } ,
173- new ( ) { SeriesId = 2 , SeasonId = 1 , EpisodeId = 4 , Title = "Fiduciary Duties" , AirDate = new DateTime ( 2014 , 04 , 27 ) } ,
198+ new Episode { SeriesId = 1 , SeasonId = 1 , EpisodeId = 1 , Title = "Yesterday's Jam" , AirDate = new DateTime ( 2006 , 02 , 03 ) } ,
199+ new Episode { SeriesId = 1 , SeasonId = 1 , EpisodeId = 2 , Title = "Calamity Jen" , AirDate = new DateTime ( 2006 , 02 , 03 ) } ,
200+ new Episode { SeriesId = 1 , SeasonId = 1 , EpisodeId = 3 , Title = "Fifty-Fifty" , AirDate = new DateTime ( 2006 , 02 , 10 ) } ,
201+ new Episode { SeriesId = 1 , SeasonId = 1 , EpisodeId = 4 , Title = "The Red Door" , AirDate = new DateTime ( 2006 , 02 , 17 ) } ,
202+ new Episode { SeriesId = 1 , SeasonId = 2 , EpisodeId = 1 , Title = "The Work Outing" , AirDate = new DateTime ( 2007 , 08 , 24 ) } ,
203+ new Episode { SeriesId = 1 , SeasonId = 2 , EpisodeId = 2 , Title = "Return of the Golden Child" , AirDate = new DateTime ( 2007 , 08 , 31 ) } ,
204+ new Episode { SeriesId = 1 , SeasonId = 3 , EpisodeId = 1 , Title = "From Hell" , AirDate = new DateTime ( 2008 , 11 , 21 ) } ,
205+ new Episode { SeriesId = 1 , SeasonId = 3 , EpisodeId = 2 , Title = "Are We Not Men?" , AirDate = new DateTime ( 2008 , 11 , 28 ) } ,
206+ new Episode { SeriesId = 1 , SeasonId = 4 , EpisodeId = 1 , Title = "Jen The Fredo" , AirDate = new DateTime ( 2010 , 06 , 25 ) } ,
207+ new Episode { SeriesId = 1 , SeasonId = 4 , EpisodeId = 2 , Title = "The Final Countdown" , AirDate = new DateTime ( 2010 , 07 , 02 ) } ,
208+ new Episode { SeriesId = 2 , SeasonId = 2 , EpisodeId = 1 , Title = "Minimum Viable Product" , AirDate = new DateTime ( 2014 , 04 , 06 ) } ,
209+ new Episode { SeriesId = 2 , SeasonId = 2 , EpisodeId = 2 , Title = "The Cap Table" , AirDate = new DateTime ( 2014 , 04 , 13 ) } ,
210+ new Episode { SeriesId = 2 , SeasonId = 1 , EpisodeId = 3 , Title = "Articles of Incorporation" , AirDate = new DateTime ( 2014 , 04 , 20 ) } ,
211+ new Episode { SeriesId = 2 , SeasonId = 1 , EpisodeId = 4 , Title = "Fiduciary Duties" , AirDate = new DateTime ( 2014 , 04 , 27 ) }
174212 } ;
175213 await db . BulkCopyAsync ( eps ) ;
176214
177215 _ = series [ 0 ] . ReleaseDate . Ticks + ( series [ 0 ] . SeriesInfo ? . Length ?? 0 ) ;
178- _ = seasons [ 0 ] . FirstAired . Ticks + seasons [ 0 ] . LastAired . Ticks ;
216+ _ = seasons [ 0 ] . FirstAired . Ticks + seasons [ 0 ] . LastAired . Ticks ;
179217
180218 logger . LogInformation ( "Loaded data" ) ;
181219 }
@@ -198,9 +236,11 @@ private async Task SelectWithParameters()
198236
199237 logger . LogInformation ( "Selected rows:" ) ;
200238 foreach ( var r in rows )
239+ {
201240 logger . LogInformation (
202241 "series_id: {series_id}, season_id: {season_id}, episode_id: {episode_id}, air_date: {air_date}, title: {title}" ,
203242 r . SeriesId , r . SeasonId , r . EpisodeId , r . AirDate , r . Title ) ;
243+ }
204244 }
205245
206246 private async Task RetryPolicy ( )
@@ -223,8 +263,10 @@ await policy.ExecuteAsync(async () =>
223263 . ThenBy ( x => x . SeasonId ) ;
224264
225265 foreach ( var x in stats )
266+ {
226267 logger . LogInformation ( "series_id: {series_id}, season_id: {season_id}, cnt: {cnt}" ,
227268 x . SeriesId , x . SeasonId , x . Cnt ) ;
269+ }
228270 } ) ;
229271 }
230272
@@ -266,13 +308,16 @@ private async Task TlsConnectionExample()
266308 . Where ( sa => sa . SeriesId == 1 )
267309 . Join ( db . Series , sa => sa . SeriesId , sr => sr . SeriesId ,
268310 ( sa , sr ) => new { SeasonTitle = sa . Title , SeriesTitle = sr . Title , sr . SeriesId , sa . SeasonId } )
269- . OrderBy ( x => x . SeriesId ) . ThenBy ( x => x . SeasonId )
311+ . OrderBy ( x => x . SeriesId )
312+ . ThenBy ( x => x . SeasonId )
270313 . ToListAsync ( ) ;
271314
272315 foreach ( var r in rows )
316+ {
273317 logger . LogInformation (
274318 "season_title: {SeasonTitle}, series_title: {SeriesTitle}, series_id: {SeriesId}, season_id: {SeasonId}" ,
275319 r . SeasonTitle , r . SeriesTitle , r . SeriesId , r . SeasonId ) ;
320+ }
276321 }
277322
278323 private async Task ConnectionWithLoggerFactory ( )
@@ -297,24 +342,9 @@ private async Task ConnectionWithLoggerFactory()
297342 await using var db = new MyYdb ( options ) ;
298343
299344 logger . LogInformation ( "Dropping tables of examples" ) ;
300- try { await db . DropTableAsync < Episode > ( ) ; }
301- catch
302- {
303- // ignored
304- }
305-
306- try { await db . DropTableAsync < Season > ( ) ; }
307- catch
308- {
309- // ignored
310- }
311-
312- try { await db . DropTableAsync < Series > ( ) ; }
313- catch
314- {
315- // ignored
316- }
317-
345+ try { await db . DropTableAsync < Episode > ( ) ; } catch { /* ignored */ }
346+ try { await db . DropTableAsync < Season > ( ) ; } catch { /* ignored */ }
347+ try { await db . DropTableAsync < Series > ( ) ; } catch { /* ignored */ }
318348 logger . LogInformation ( "Dropped tables of examples" ) ;
319349 }
320350}
0 commit comments