Skip to content

Commit 6037d37

Browse files
feat: adds joseph_caballero_loader.ts and modifies loaders.module.ts for lesson_10 homework -Joseph Caballero (#352)
* feat: adds joseph_caballero_loader.ts and modifies loaders.module.ts for lesson_10 homework * feat: changes to joseph_caballero_loader.ts after learning as ketyword to do exact seat: made changes to joseph_caballero_loader.ts -Joseph Caballero --------- Co-authored-by: Anthony D. Mays <[email protected]>
1 parent 8599396 commit 6037d37

File tree

2 files changed

+88
-0
lines changed

2 files changed

+88
-0
lines changed
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
import fs from 'fs';
2+
import { Credit, MediaItem, MediaType, Role } from '../models/index.js';
3+
import { Loader } from './loader.js';
4+
5+
export class JosephCaballeroLoader implements Loader {
6+
getLoaderName(): string {
7+
return 'josephcaballero';
8+
}
9+
10+
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+
mediaItems.forEach((item) => {
18+
credits.forEach((id) => {
19+
if (id.getMediaItemId() == item.getId()) {
20+
item.addCredit(id);
21+
}
22+
});
23+
});
24+
25+
return [...mediaItems.values()];
26+
}
27+
28+
async loadMediaItems(): Promise<MediaItem[]> {
29+
// TODO: Implement this method.
30+
const items = [];
31+
const load = fs
32+
.readFileSync('data/media_items.csv', {
33+
encoding: 'utf-8',
34+
})
35+
.split('\n')
36+
.map((row: string): string[] => {
37+
return row.split(',');
38+
});
39+
load.splice(0, 1);
40+
interface arrayObj {
41+
id: string;
42+
title: string;
43+
type: MediaType.Documentary | MediaType.Movie | MediaType.TVShow;
44+
year: number;
45+
}
46+
const obj: arrayObj[] = load.map((row: string[]): arrayObj => {
47+
return {
48+
id: row[0],
49+
title: row[2],
50+
type: row[1] as MediaType,
51+
year: Number(row[4]),
52+
};
53+
});
54+
for await (const row of obj) {
55+
const { id, type, title, year } = row;
56+
items.push(new MediaItem(id, title, type, year, []));
57+
}
58+
return items;
59+
}
60+
61+
async loadCredits(): Promise<Credit[]> {
62+
const credits = [];
63+
const load = fs
64+
.readFileSync('data/media_items.csv', {
65+
encoding: 'utf-8',
66+
})
67+
.split('\n')
68+
.map((row: string): string[] => {
69+
return row.split(',');
70+
});
71+
load.splice(0, 1);
72+
interface arrayObj {
73+
media_Item_Id: string;
74+
type: string;
75+
role: Role;
76+
}
77+
const obj: arrayObj[] = load.map((row: string[]): arrayObj => {
78+
return { media_Item_Id: row[0], type: row[1], role: row[2] as Role };
79+
});
80+
for await (const row of obj) {
81+
const { media_Item_Id, type, role } = row;
82+
credits.push(new Credit(media_Item_Id, type, role));
83+
}
84+
return credits;
85+
}
86+
}

lesson_10/libraries/src/loaders/loaders.module.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import { AnthonyMaysLoader } from './anthony_mays_loader.js';
44
import { DavidSmithLoader } from './david_smith_loader.js';
55
import { DwightBlueLoader } from './dwight_blue_loader.js';
66
import { JamesCapparellLoader } from './james_capparell_loader.js';
7+
import { JosephCaballeroLoader } from './joseph_caballero_loader.js';
78
import { NileJacksonLoader } from './nile_jackson_loader.js';
89
import { PabloLimonParedesLoader } from './pablo_limon_paredes_loader.js';
910
import { XavierCruzLoader } from './xavier_cruz_loader.js';
@@ -18,6 +19,7 @@ const LOADER_PROVIDERS = [
1819
DavidSmithLoader,
1920
DwightBlueLoader,
2021
JamesCapparellLoader,
22+
JosephCaballeroLoader,
2123
NileJacksonLoader,
2224
PabloLimonParedesLoader,
2325
XavierCruzLoader,

0 commit comments

Comments
 (0)