@@ -11,30 +11,38 @@ export class MeikoStephensLoader implements Loader {
11
11
async loadData ( ) : Promise < MediaItem [ ] > {
12
12
const credits = await this . loadCredits ( ) ;
13
13
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 ) {
16
17
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
+ }
19
26
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
+ ) ;
21
30
22
- return [ ... mediaItems . values ( ) ] ;
31
+ return Array . from ( mediaMap . values ( ) ) ;
23
32
}
24
33
25
34
async loadMediaItems ( ) : Promise < MediaItem [ ] > {
26
35
const mediaItems = [ ] ;
27
36
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 ( ) ) ;
30
39
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 , [ ] ) ) ;
33
42
}
34
43
return mediaItems ;
35
44
}
36
45
37
-
38
46
async loadCredits ( ) : Promise < Credit [ ] > {
39
47
const credits = [ ] ;
40
48
const readable = fs
@@ -46,4 +54,4 @@ export class MeikoStephensLoader implements Loader {
46
54
}
47
55
return credits ;
48
56
}
49
- }
57
+ }
0 commit comments