From ad0956ac5e0551adf2d704e1fda6f01900249d3b Mon Sep 17 00:00:00 2001 From: Kotangora1 Date: Thu, 17 Oct 2024 13:35:40 +0000 Subject: [PATCH 1/2] feat: Adding homework10 - load media item implementation - Yemi --- .../libraries/src/loaders/loaders.module.ts | 3 +- .../src/loaders/oyeyemi_jimoh_loader.ts | 47 +++++++++++++++++++ 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts diff --git a/lesson_10/libraries/src/loaders/loaders.module.ts b/lesson_10/libraries/src/loaders/loaders.module.ts index fe823555e..8b65ad770 100644 --- a/lesson_10/libraries/src/loaders/loaders.module.ts +++ b/lesson_10/libraries/src/loaders/loaders.module.ts @@ -1,10 +1,11 @@ import { Module } from '@nestjs/common'; import { AnthonyMaysLoader } from './anthony_mays_loader.js'; +import { OyeyemiJimohLoader } from './oyeyemi_jimoh_loader.js'; export const Loaders = Symbol.for('Loaders'); // Add your quiz provider here. -const LOADER_PROVIDERS = [AnthonyMaysLoader]; +const LOADER_PROVIDERS = [OyeyemiJimohLoader, AnthonyMaysLoader]; @Module({ providers: [ diff --git a/lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts b/lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts new file mode 100644 index 000000000..9273f8f05 --- /dev/null +++ b/lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts @@ -0,0 +1,47 @@ +import csv from 'csv-parser'; +import fs from 'fs'; +import { Credit, MediaItem } from '../models/index.js'; +import { Loader } from './loader.js'; + +export class OyeyemiJimohLoader implements Loader { + getLoaderName(): string { + return 'oyeyemijimoh'; + } + + async loadData(): Promise { + const credits = await this.loadCredits(); + const mediaItems = await this.loadMediaItems(); + + console.log( + `Loaded ${credits.length} credits and ${mediaItems.length} media items`, + ); + + return [...mediaItems.values()]; + } + + async loadMediaItems(): Promise { + // TODO: Implement this method. + const mediaItems = []; + //const credits[] = this.loadCredits(); + const readable = fs + .createReadStream('data/media_items.csv', 'utf-8') + .pipe(csv()); + for await (const row of readable) { + const { id, type, title, year } = row; + mediaItems.push(new MediaItem(id, title, type, year, [])); + } + return mediaItems; + } + + async loadCredits(): Promise { + const credits = []; + const readable = fs + .createReadStream('data/credits.csv', 'utf-8') + .pipe(csv()); + for await (const row of readable) { + const { media_item_id, role, name } = row; + credits.push(new Credit(media_item_id, name, role)); + } + return credits; + } +} From 5d62d338b72d3c1ad7e7804221aacfd9007b8bcf Mon Sep 17 00:00:00 2001 From: Kotangora1 Date: Fri, 18 Oct 2024 13:51:51 +0000 Subject: [PATCH 2/2] feat: updated homework10 - removed all comments by Yemi --- lesson_10/libraries/src/loaders/loaders.module.ts | 1 - lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts | 2 -- 2 files changed, 3 deletions(-) diff --git a/lesson_10/libraries/src/loaders/loaders.module.ts b/lesson_10/libraries/src/loaders/loaders.module.ts index 8b65ad770..ace8993c0 100644 --- a/lesson_10/libraries/src/loaders/loaders.module.ts +++ b/lesson_10/libraries/src/loaders/loaders.module.ts @@ -4,7 +4,6 @@ import { OyeyemiJimohLoader } from './oyeyemi_jimoh_loader.js'; export const Loaders = Symbol.for('Loaders'); -// Add your quiz provider here. const LOADER_PROVIDERS = [OyeyemiJimohLoader, AnthonyMaysLoader]; @Module({ diff --git a/lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts b/lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts index 9273f8f05..a856c14a5 100644 --- a/lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts +++ b/lesson_10/libraries/src/loaders/oyeyemi_jimoh_loader.ts @@ -20,9 +20,7 @@ export class OyeyemiJimohLoader implements Loader { } async loadMediaItems(): Promise { - // TODO: Implement this method. const mediaItems = []; - //const credits[] = this.loadCredits(); const readable = fs .createReadStream('data/media_items.csv', 'utf-8') .pipe(csv());