File tree Expand file tree Collapse file tree 1 file changed +38
-0
lines changed
lesson_10/libraries/src/loaders Expand file tree Collapse file tree 1 file changed +38
-0
lines changed Original file line number Diff line number Diff line change
1
+ import csv from 'csv-parser' ;
2
+ import fs from 'fs' ;
3
+ import { Credit , MediaItem } from '../models/index.js' ;
4
+ import { Loader } from './loader.js' ;
5
+
6
+ export class KimberleeHaldaneLoader implements Loader {
7
+ getLoaderName ( ) : string {
8
+ return 'kimberleehaldane' ;
9
+ }
10
+
11
+ async loadData ( ) : Promise < MediaItem [ ] > {
12
+ const credits = await this . loadCredits ( ) ;
13
+ const mediaItems = await this . loadMediaItems ( ) ;
14
+
15
+ console . log (
16
+ `Loaded ${ credits . length } credits and ${ mediaItems . length } media items` ,
17
+ ) ;
18
+
19
+ return [ ...mediaItems . values ( ) ] ;
20
+ }
21
+
22
+ async loadMediaItems ( ) : Promise < MediaItem [ ] > {
23
+ // TODO: Implement this method.
24
+ return [ ] ;
25
+ }
26
+
27
+ async loadCredits ( ) : Promise < Credit [ ] > {
28
+ const credits = [ ] ;
29
+ const readable = fs
30
+ . createReadStream ( 'data/credits.csv' , 'utf-8' )
31
+ . pipe ( csv ( ) ) ;
32
+ for await ( const row of readable ) {
33
+ const { media_item_id, role, name } = row ;
34
+ credits . push ( new Credit ( media_item_id , name , role ) ) ;
35
+ }
36
+ return credits ;
37
+ }
38
+ }
You can’t perform that action at this time.
0 commit comments