From e775677d7445f3ececc934a4c0551f3c06b0605e Mon Sep 17 00:00:00 2001 From: Yafiaha Date: Thu, 17 Oct 2024 14:43:47 +0000 Subject: [PATCH 1/3] Feat : Lesson-10 adding Yafiah Loader provider --- .../libraries/src/loaders/loaders.module.ts | 3 +- .../src/loaders/yafiah_abdullah_loader.ts | 62 +++++++++++++++++++ 2 files changed, 64 insertions(+), 1 deletion(-) create mode 100644 lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts diff --git a/lesson_10/libraries/src/loaders/loaders.module.ts b/lesson_10/libraries/src/loaders/loaders.module.ts index fe823555e..7088f094e 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 {YafiahAbdullahLoader} from './yafiah_abdullah_loader.js'; export const Loaders = Symbol.for('Loaders'); // Add your quiz provider here. -const LOADER_PROVIDERS = [AnthonyMaysLoader]; +const LOADER_PROVIDERS = [AnthonyMaysLoader, YafiahAbdullahLoader]; @Module({ providers: [ diff --git a/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts b/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts new file mode 100644 index 000000000..f5fd475a8 --- /dev/null +++ b/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts @@ -0,0 +1,62 @@ +import csv from 'csv-parser'; +import fs from 'fs'; +import { Credit, MediaItem } from '../models/index.js'; +import { Loader } from './loader.js'; + +export class YafiahAbdullahLoader implements Loader { + getLoaderName(): string { + return 'yafiahabdullah'; + } + + async loadData(): Promise { + const [credits, mediaItems] = await Promise.all([ + this.loadCredits(), + this.loadMediaItems(), + ]); + // 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 media = []; + const readable = fs + .createReadStream('data/media_items.csv', 'utf-8') + .pipe(csv()); + for await (const row of readable) { + const { id, type, title, year } = row; + media.push(new MediaItem(id, title, type, year, [])); + } + return media; + } + + // //EXTRA CREDIT + // async loadMediaItems(): Promise { + // const mediaItem = fs.readFileSync('data/media_items.csv',{ + // encoding: 'utf-8' + // }) + // .split('\n') + // .map((row:string): string[] =>{ + // return row.split(','); + // }) + // return []; + // } + + 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 cec7f9efa1511c95673e6c0d242805186882140a Mon Sep 17 00:00:00 2001 From: Yafiaha Date: Thu, 17 Oct 2024 14:50:28 +0000 Subject: [PATCH 2/3] fix-up: remove --- .../libraries/src/loaders/yafiah_abdullah_loader.ts | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts b/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts index f5fd475a8..7df8a7f40 100644 --- a/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts +++ b/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts @@ -36,18 +36,6 @@ export class YafiahAbdullahLoader implements Loader { return media; } - // //EXTRA CREDIT - // async loadMediaItems(): Promise { - // const mediaItem = fs.readFileSync('data/media_items.csv',{ - // encoding: 'utf-8' - // }) - // .split('\n') - // .map((row:string): string[] =>{ - // return row.split(','); - // }) - // return []; - // } - async loadCredits(): Promise { const credits = []; const readable = fs From 28c3ca28f17e6fd81f77e91ef13a38caa5a306c5 Mon Sep 17 00:00:00 2001 From: Yafiaha Date: Thu, 17 Oct 2024 18:34:12 +0000 Subject: [PATCH 3/3] Fix-Up: removed --- lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts b/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts index 7df8a7f40..3f05b0a70 100644 --- a/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts +++ b/lesson_10/libraries/src/loaders/yafiah_abdullah_loader.ts @@ -13,8 +13,6 @@ export class YafiahAbdullahLoader implements Loader { this.loadCredits(), this.loadMediaItems(), ]); - // const credits = await this.loadCredits(); - // const mediaItems = await this.loadMediaItems(); console.log( `Loaded ${credits.length} credits and ${mediaItems.length} media items`, @@ -24,7 +22,6 @@ export class YafiahAbdullahLoader implements Loader { } async loadMediaItems(): Promise { - // TODO: Implement this method. const media = []; const readable = fs .createReadStream('data/media_items.csv', 'utf-8')