From f22a87d5ba3aebae80cc712f40ffd903ced5692d Mon Sep 17 00:00:00 2001 From: cdbluejr Date: Fri, 18 Oct 2024 15:54:22 +0000 Subject: [PATCH 1/3] feat: lesson 10 Extra Credit by Dwight Blue --- .../src/loaders/dwight_blue_loader.ts | 51 +++++++++++++++++++ .../libraries/src/loaders/loaders.module.ts | 4 ++ 2 files changed, 55 insertions(+) create mode 100644 lesson_10/libraries/src/loaders/dwight_blue_loader.ts diff --git a/lesson_10/libraries/src/loaders/dwight_blue_loader.ts b/lesson_10/libraries/src/loaders/dwight_blue_loader.ts new file mode 100644 index 000000000..415632424 --- /dev/null +++ b/lesson_10/libraries/src/loaders/dwight_blue_loader.ts @@ -0,0 +1,51 @@ +import csv from 'csv-parser'; +import fs from 'fs'; +import { Credit, MediaItem } from '../models/index.js'; +import { Loader } from './loader.js'; + +export class DwightBlueLoader implements Loader { + getLoaderName(): string { + return 'dwightblue'; + } + + async loadData(): Promise { + const credits = await this.loadCredits(); + const mediaItems = await this.loadMediaItems(); + + for (let i = 0; i < mediaItems.length; i++) { + mediaItems[i].addCredit(credits[i]); + console.log(mediaItems[i]); + } + + console.log( + `Loaded ${credits.length} credits and ${mediaItems.length} media items`, + ); + + return [...mediaItems.values()]; + } + + async loadMediaItems(): Promise { + // TODO: Implement this method. + const mediaItem = []; + const readable = fs + .createReadStream('data/media_items.csv', 'utf-8') + .pipe(csv()); + for await (const row of readable) { + const { id, title, type, year } = row; + mediaItem.push(new MediaItem(id, title, type, year, [])); + } + return mediaItem; + } + + 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: mediaItemId, role, name } = row; + credits.push(new Credit(mediaItemId, name, role)); + } + return credits; + } +} diff --git a/lesson_10/libraries/src/loaders/loaders.module.ts b/lesson_10/libraries/src/loaders/loaders.module.ts index 33ccc5d13..cf95629ef 100644 --- a/lesson_10/libraries/src/loaders/loaders.module.ts +++ b/lesson_10/libraries/src/loaders/loaders.module.ts @@ -1,6 +1,7 @@ import { Module } from '@nestjs/common'; import { AngelicaCastilloLoader } from './angelica_castillo_loader.js'; import { AnthonyMaysLoader } from './anthony_mays_loader.js'; +import { DwightBlueLoader } from './dwight_blue_loader.js'; import { JamesCapparellLoader } from './james_capparell_loader.js'; import { NileJacksonLoader } from './nile_jackson_loader.js'; import { XavierCruzLoader } from './xavier_cruz_loader.js'; @@ -10,10 +11,13 @@ export const Loaders = Symbol.for('Loaders'); // Add your quiz provider here. const LOADER_PROVIDERS = [ AnthonyMaysLoader, + AngelicaCastilloLoader, JamesCapparellLoader, NileJacksonLoader, XavierCruzLoader, + DwightBlueLoader, + , ]; @Module({ From 0acd2f740ff6f44d687e6e959fc94a896ad45b6c Mon Sep 17 00:00:00 2001 From: cdbluejr Date: Fri, 18 Oct 2024 19:39:30 +0000 Subject: [PATCH 2/3] feat: loaders module file By Dwight Blue --- lesson_10/libraries/src/loaders/loaders.module.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/lesson_10/libraries/src/loaders/loaders.module.ts b/lesson_10/libraries/src/loaders/loaders.module.ts index cf95629ef..416b30186 100644 --- a/lesson_10/libraries/src/loaders/loaders.module.ts +++ b/lesson_10/libraries/src/loaders/loaders.module.ts @@ -11,13 +11,11 @@ export const Loaders = Symbol.for('Loaders'); // Add your quiz provider here. const LOADER_PROVIDERS = [ AnthonyMaysLoader, - AngelicaCastilloLoader, JamesCapparellLoader, NileJacksonLoader, XavierCruzLoader, DwightBlueLoader, - , ]; @Module({ From b141935fd4c73ea84acb9b88757a19c8f99addf1 Mon Sep 17 00:00:00 2001 From: "Anthony D. Mays" Date: Tue, 22 Oct 2024 20:05:13 -0400 Subject: [PATCH 3/3] Update loaders.module.ts --- lesson_10/libraries/src/loaders/loaders.module.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson_10/libraries/src/loaders/loaders.module.ts b/lesson_10/libraries/src/loaders/loaders.module.ts index 416b30186..d74075324 100644 --- a/lesson_10/libraries/src/loaders/loaders.module.ts +++ b/lesson_10/libraries/src/loaders/loaders.module.ts @@ -12,10 +12,10 @@ export const Loaders = Symbol.for('Loaders'); const LOADER_PROVIDERS = [ AnthonyMaysLoader, AngelicaCastilloLoader, + DwightBlueLoader, JamesCapparellLoader, NileJacksonLoader, XavierCruzLoader, - DwightBlueLoader, ]; @Module({