@@ -23,33 +23,47 @@ FROM deezer_artist da
2323 where lower(da.name) % lower(@name)" ;
2424
2525 await using var conn = new NpgsqlConnection ( _databaseConfiguration . ConnectionString ) ;
26-
27- var results = await conn
28- . QueryAsync < DeezerArtistModel , DeezerArtistImageLinkModel , DeezerArtistModel > ( query ,
29- ( artist , imageModel ) =>
30- {
31- if ( artist . Images == null )
32- {
33- artist . Images = new List < DeezerArtistImageLinkModel > ( ) ;
34- }
26+ await conn . OpenAsync ( ) ;
27+ var transaction = await conn . BeginTransactionAsync ( ) ;
28+ IEnumerable < DeezerArtistModel > ? results = null ;
3529
36- if ( imageModel != null )
30+ try
31+ {
32+ results = await conn
33+ . QueryAsync < DeezerArtistModel , DeezerArtistImageLinkModel , DeezerArtistModel > ( query ,
34+ ( artist , imageModel ) =>
3735 {
38- artist . Images . Add ( imageModel ) ;
39- }
36+ if ( artist . Images == null )
37+ {
38+ artist . Images = new List < DeezerArtistImageLinkModel > ( ) ;
39+ }
4040
41- return artist ;
42- } ,
43- splitOn : "artistid" ,
44- param : new
45- {
46- name ,
47- offset
48- } ) ;
41+ if ( imageModel != null )
42+ {
43+ artist . Images . Add ( imageModel ) ;
44+ }
45+
46+ return artist ;
47+ } ,
48+ splitOn : "artistid" ,
49+ param : new
50+ {
51+ name ,
52+ offset
53+ } ) ;
54+ }
55+ catch ( Exception ex )
56+ {
57+ Console . WriteLine ( ex . Message + "\r \n " + ex . StackTrace ) ;
58+ }
59+ finally
60+ {
61+ await transaction . CommitAsync ( ) ;
62+ }
4963
5064 var groupedResult = results
51- . GroupBy ( artist => artist . ArtistId )
52- . Select ( group =>
65+ ? . GroupBy ( artist => artist . ArtistId )
66+ ? . Select ( group =>
5367 {
5468 var artist = group . First ( ) ;
5569 artist . Images = group . SelectMany ( image => image . Images ) . ToList ( ) ;
@@ -139,34 +153,49 @@ FROM deezer_album album
139153 and lower(album.title) % lower(@albumName)" ;
140154
141155 await using var conn = new NpgsqlConnection ( _databaseConfiguration . ConnectionString ) ;
156+ await conn . OpenAsync ( ) ;
157+ var transaction = await conn . BeginTransactionAsync ( ) ;
158+ IEnumerable < DeezerAlbumModel > ? results = null ;
142159
143- var results = await conn
144- . QueryAsync < DeezerAlbumModel , DeezerArtistModel , DeezerAlbumImageLinkModel ? , DeezerAlbumArtistModel ? , DeezerAlbumModel > ( query ,
145- ( album , artist , imageModel , albumArtist ) =>
146- {
147- album . Artist = artist ;
148-
149- if ( imageModel != null )
160+ try
161+ {
162+ results = await conn
163+ . QueryAsync < DeezerAlbumModel , DeezerArtistModel , DeezerAlbumImageLinkModel ? , DeezerAlbumArtistModel ? , DeezerAlbumModel > ( query ,
164+ ( album , artist , imageModel , albumArtist ) =>
150165 {
151- album . Images . Add ( imageModel ) ;
152- }
153- if ( albumArtist != null )
166+ album . Artist = artist ;
167+
168+ if ( imageModel != null )
169+ {
170+ album . Images . Add ( imageModel ) ;
171+ }
172+ if ( albumArtist != null )
173+ {
174+ album . Artists . Add ( albumArtist ) ;
175+ }
176+ return album ;
177+ } ,
178+ splitOn : "albumid,artistid,albumid,albumid" ,
179+ param : new
154180 {
155- album . Artists . Add ( albumArtist ) ;
156- }
157- return album ;
158- } ,
159- splitOn : "albumid,artistid,albumid,albumid" ,
160- param : new
161- {
162- albumName ,
163- artistId ,
164- offset
165- } ) ;
181+ albumName ,
182+ artistId ,
183+ offset
184+ } ,
185+ transaction : transaction ) ;
186+ }
187+ catch ( Exception ex )
188+ {
189+ Console . WriteLine ( ex . Message + "\r \n " + ex . StackTrace ) ;
190+ }
191+ finally
192+ {
193+ await transaction . CommitAsync ( ) ;
194+ }
166195
167196 var groupedResult = results
168- . GroupBy ( album => album . AlbumId )
169- . Select ( group =>
197+ ? . GroupBy ( album => album . AlbumId )
198+ ? . Select ( group =>
170199 {
171200 var album = group . First ( ) ;
172201
@@ -316,38 +345,53 @@ FROM deezer_track dt
316345 where lower(dt.Title) % lower(@trackName)" ;
317346
318347 await using var conn = new NpgsqlConnection ( _databaseConfiguration . ConnectionString ) ;
348+ await conn . OpenAsync ( ) ;
349+ var transaction = await conn . BeginTransactionAsync ( ) ;
350+ IEnumerable < DeezerTrackModel > ? results = null ;
319351
320- var results = await conn
321- . QueryAsync < DeezerTrackModel ,
322- DeezerAlbumModel ,
323- DeezerTrackArtistModel ,
324- DeezerTrackModel > ( query ,
325- ( track , album , trackArtist ) =>
326- {
327- if ( track . Artists == null )
352+ try
353+ {
354+ results = await conn
355+ . QueryAsync < DeezerTrackModel ,
356+ DeezerAlbumModel ,
357+ DeezerTrackArtistModel ,
358+ DeezerTrackModel > ( query ,
359+ ( track , album , trackArtist ) =>
328360 {
329- track . Artists = new List < DeezerTrackArtistModel > ( ) ;
330- }
361+ if ( track . Artists == null )
362+ {
363+ track . Artists = new List < DeezerTrackArtistModel > ( ) ;
364+ }
331365
332- track . Album = album ;
366+ track . Album = album ;
333367
334- if ( trackArtist != null )
368+ if ( trackArtist != null )
369+ {
370+ track . Artists . Add ( trackArtist ) ;
371+ }
372+ return track ;
373+ } ,
374+ splitOn : "trackid,albumid,ArtistId" ,
375+ param : new
335376 {
336- track . Artists . Add ( trackArtist ) ;
337- }
338- return track ;
339- } ,
340- splitOn : "trackid,albumid,ArtistId" ,
341- param : new
342- {
343- trackName ,
344- artistId ,
345- offset
346- } ) ;
377+ trackName ,
378+ artistId ,
379+ offset
380+ } ,
381+ transaction : transaction ) ;
382+ }
383+ catch ( Exception ex )
384+ {
385+ Console . WriteLine ( ex . Message + "\r \n " + ex . StackTrace ) ;
386+ }
387+ finally
388+ {
389+ await transaction . CommitAsync ( ) ;
390+ }
347391
348392 var groupedResult = results
349- . GroupBy ( track => track . TrackId )
350- . Select ( group =>
393+ ? . GroupBy ( track => track . TrackId )
394+ ? . Select ( group =>
351395 {
352396 var track = group . First ( ) ;
353397
0 commit comments