Skip to content

Commit b145aba

Browse files
committed
feat: adds partially completed sample code
1 parent 97a570c commit b145aba

File tree

5 files changed

+31
-2
lines changed

5 files changed

+31
-2
lines changed

lesson_10/libraries/credits.csv renamed to lesson_10/libraries/data/credits.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
id,media_item_id,role,person_name
1+
id,media_item_id,role,name
22
1,1,Director,John Doe
33
2,1,Producer,Jane Smith
44
3,2,Actor,Chris Evans
Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { MediaItem } from '../models/media_item.js';
1+
import fs from 'fs';
2+
import { Credit, MediaItem } from '../models/index.js';
23
import { Loader } from './loader.js';
34

45
export class AnthonyMaysLoader implements Loader {
@@ -7,6 +8,27 @@ export class AnthonyMaysLoader implements Loader {
78
}
89

910
async loadData(): Promise<MediaItem[]> {
11+
const credits = await this.loadCredits();
12+
const mediaItems = await this.loadMediaItems();
13+
14+
console.log(
15+
`Loaded ${credits.length} credits and ${mediaItems.length} media items`,
16+
);
17+
18+
return [...mediaItems.values()];
19+
}
20+
21+
async loadMediaItems(): Promise<MediaItem[]> {
1022
return [];
1123
}
24+
25+
async loadCredits(): Promise<Credit[]> {
26+
const credits = [];
27+
const readable = fs.createReadStream('data/credits.csv');
28+
for await (const row of readable) {
29+
const [, mediaItemId, role, name] = row.split(',');
30+
credits.push({ mediaItemId, name, role });
31+
}
32+
return credits;
33+
}
1234
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import { Role } from './role.js';
22

33
export interface Credit {
4+
mediaItemId: string;
45
name: string;
56
role: Role;
67
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
export { Credit } from './credit.js';
2+
export { MediaCollection } from './media_collection.js';
3+
export { MediaItem } from './media_item.js';
4+
export { MediaType } from './media_type.js';
5+
export { Role } from './role.js';
6+
export { SearchCriteria } from './search_criteria.js';

0 commit comments

Comments
 (0)