@@ -11,30 +11,38 @@ export class MeikoStephensLoader implements Loader {
1111 async loadData ( ) : Promise < MediaItem [ ] > {
1212 const credits = await this . loadCredits ( ) ;
1313 const mediaItems = await this . loadMediaItems ( ) ;
14- const mediaMap = new Map < string , MediaItem > ( ) ;
15- mediaItems . forEach ( ( mediaItem ) => {
14+ const mediaMap = new Map < string , MediaItem > ( ) ;
15+
16+ for ( const mediaItem of mediaItems ) {
1617 mediaMap . set ( mediaItem . getId ( ) , mediaItem ) ;
17- } ) ;
18-
18+ }
19+ for ( const credit of credits ) {
20+ const mediaItem = mediaMap . get ( credit . getMediaItemId ( ) ) ;
21+
22+ if ( mediaItem ) {
23+ mediaItem . addCredit ( credit ) ;
24+ }
25+ }
1926
20- console . log ( `Loaded ${ credits . length } credits and ${ mediaItems . length } media items` , ) ;
27+ console . log (
28+ `Loaded ${ credits . length } credits and ${ mediaItems . length } media items` ,
29+ ) ;
2130
22- return [ ... mediaItems . values ( ) ] ;
31+ return Array . from ( mediaMap . values ( ) ) ;
2332 }
2433
2534 async loadMediaItems ( ) : Promise < MediaItem [ ] > {
2635 const mediaItems = [ ] ;
2736 const readable = fs
28- . createReadStream ( 'data/media_items.csv' , 'utf-8' )
29- . pipe ( csv ( ) ) ;
37+ . createReadStream ( 'data/media_items.csv' , 'utf-8' )
38+ . pipe ( csv ( ) ) ;
3039 for await ( const row of readable ) {
31- const { id, title, type, year} = row ;
32- mediaItems . push ( new MediaItem ( id , title , type , year , [ ] ) ) ;
40+ const { id, title, type, year } = row ;
41+ mediaItems . push ( new MediaItem ( id , title , type , year , [ ] ) ) ;
3342 }
3443 return mediaItems ;
3544 }
3645
37-
3846 async loadCredits ( ) : Promise < Credit [ ] > {
3947 const credits = [ ] ;
4048 const readable = fs
@@ -46,4 +54,4 @@ export class MeikoStephensLoader implements Loader {
4654 }
4755 return credits ;
4856 }
49- }
57+ }
0 commit comments