From 840aecbf6b35b8aa83fd92a2b264cfb69bc40745 Mon Sep 17 00:00:00 2001 From: Sdunsmore2006 Date: Thu, 17 Oct 2024 15:24:44 +0000 Subject: [PATCH 1/3] Feat: Adds Shawn Dunsmore Lesson010 Provider Class. --- .../src/loaders/shawn_dunsmore_loader.ts | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 lesson_10/libraries/src/loaders/shawn_dunsmore_loader.ts diff --git a/lesson_10/libraries/src/loaders/shawn_dunsmore_loader.ts b/lesson_10/libraries/src/loaders/shawn_dunsmore_loader.ts new file mode 100644 index 000000000..0041d9cb0 --- /dev/null +++ b/lesson_10/libraries/src/loaders/shawn_dunsmore_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 ShawnDunsmoreLoader implements Loader { + getLoaderName(): string { + return 'shawndunsmore'; + } + + 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 { + const mediaItems: 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; // Adjust the fields based on your CSV structure + mediaItems.push(new MediaItem(id, title, type, year, [])); // Assuming MediaItem constructor matches this + } + + 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 6cb8e2980d657736407190b42a46b14959916d56 Mon Sep 17 00:00:00 2001 From: Sdunsmore2006 Date: Thu, 17 Oct 2024 15:26:58 +0000 Subject: [PATCH 2/3] Feat: Adds Shawn Dunsmore Lesson010 Loader. --- lesson_10/libraries/src/loaders/shawn_dunsmore_loader.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson_10/libraries/src/loaders/shawn_dunsmore_loader.ts b/lesson_10/libraries/src/loaders/shawn_dunsmore_loader.ts index 0041d9cb0..bd028f6c1 100644 --- a/lesson_10/libraries/src/loaders/shawn_dunsmore_loader.ts +++ b/lesson_10/libraries/src/loaders/shawn_dunsmore_loader.ts @@ -26,8 +26,8 @@ export class ShawnDunsmoreLoader implements Loader { .pipe(csv()); for await (const row of readable) { - const { id, title, type, year } = row; // Adjust the fields based on your CSV structure - mediaItems.push(new MediaItem(id, title, type, year, [])); // Assuming MediaItem constructor matches this + const { id, title, type, year } = row; + mediaItems.push(new MediaItem(id, title, type, year, [])); } return mediaItems; From 2163ca5cfb7ed50b1bc41bf0747862b116519fe0 Mon Sep 17 00:00:00 2001 From: Sdunsmore2006 Date: Thu, 17 Oct 2024 17:29:12 +0000 Subject: [PATCH 3/3] Feat: Adds Shawn Dunsmore Lesson010, Included Loader. --- lesson_10/libraries/src/loaders/loaders.module.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lesson_10/libraries/src/loaders/loaders.module.ts b/lesson_10/libraries/src/loaders/loaders.module.ts index fe823555e..07df23858 100644 --- a/lesson_10/libraries/src/loaders/loaders.module.ts +++ b/lesson_10/libraries/src/loaders/loaders.module.ts @@ -1,10 +1,10 @@ import { Module } from '@nestjs/common'; import { AnthonyMaysLoader } from './anthony_mays_loader.js'; - +import { ShawnDunsmoreLoader } from './shawn_dunsmore_loader.js'; export const Loaders = Symbol.for('Loaders'); // Add your quiz provider here. -const LOADER_PROVIDERS = [AnthonyMaysLoader]; +const LOADER_PROVIDERS = [AnthonyMaysLoader, ShawnDunsmoreLoader]; @Module({ providers: [