From fc92fbb550e0ba6565a07c14a5b250475999eed3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CTezz03=E2=80=9D?= <“mmbradley@gmail.com”> Date: Tue, 25 Mar 2025 20:33:39 +0000 Subject: [PATCH 01/20] feat:mbLesson_09 --- .../dataprovider/montezBProviderProvider.java | 25 +++++ .../src/main/resources/data/montezb.json | 92 +++++++++++++++++++ 2 files changed, 117 insertions(+) create mode 100644 lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java create mode 100644 lesson_09/types/types_app/src/main/resources/data/montezb.json diff --git a/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java b/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java new file mode 100644 index 000000000..266650d40 --- /dev/null +++ b/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java @@ -0,0 +1,25 @@ +package com.codedifferently.lesson9.dataprovider; + +import java.util.Map; + +import org.springframework.stereotype.Service; + +@Service +public class montezBProviderProvider extends DataProvider { + public String getProviderName() { + return "montezBProvider"; + } + + public Map getColumnTypeByName() { + return Map.of( + "column1", Boolean.class, + "column2", Float.class, + "column3", Double.class, + "column4", Short.class, + "column5", Integer.class, + "column6", String.class, + "column7", Long.class); + } +} + + diff --git a/lesson_09/types/types_app/src/main/resources/data/montezb.json b/lesson_09/types/types_app/src/main/resources/data/montezb.json new file mode 100644 index 000000000..1d8cbf9a5 --- /dev/null +++ b/lesson_09/types/types_app/src/main/resources/data/montezb.json @@ -0,0 +1,92 @@ +[ + { + "column1": "false", + "column2": "2.0165133E38", + "column3": "2.7989049813330837E307", + "column4": "416", + "column5": "435833166", + "column6": "3cuw2", + "column7": "3530240046379697664" + }, + { + "column1": "true", + "column2": "1.460264E37", + "column3": "2.9225361274287315E307", + "column4": "17516", + "column5": "260615671", + "column6": "8j52s4aq6d", + "column7": "65341810874192888" + }, + { + "column1": "true", + "column2": "2.776658E38", + "column3": "2.0826943783702183E307", + "column4": "31533", + "column5": "161572734", + "column6": "s8yavhue1", + "column7": "4903929290600323072" + }, + { + "column1": "true", + "column2": "1.3027212E38", + "column3": "1.1914573950682302E308", + "column4": "29377", + "column5": "451167147", + "column6": "2at5p9weyni", + "column7": "1756929147146946048" + }, + { + "column1": "true", + "column2": "1.6506819E38", + "column3": "3.7690907310588337E307", + "column4": "23676", + "column5": "405162496", + "column6": "migsey8lk", + "column7": "5227682372169227264" + }, + { + "column1": "true", + "column2": "6.687427E37", + "column3": "1.7507811122323619E308", + "column4": "763", + "column5": "385548066", + "column6": "ni6d58js04u", + "column7": "814327769818061056" + }, + { + "column1": "false", + "column2": "2.6281565E38", + "column3": "3.3046191712251996E307", + "column4": "29441", + "column5": "497419740", + "column6": "7ypumj83a", + "column7": "6639371891920120832" + }, + { + "column1": "false", + "column2": "9.816115E37", + "column3": "1.3824553928097414E308", + "column4": "3537", + "column5": "753736722", + "column6": "68aglu4", + "column7": "1905184695820989696" + }, + { + "column1": "false", + "column2": "2.674275E38", + "column3": "1.562287548934654E308", + "column4": "25482", + "column5": "2121817019", + "column6": "2plvf", + "column7": "8721696529208318976" + }, + { + "column1": "true", + "column2": "7.985794E37", + "column3": "1.377992454751497E308", + "column4": "29060", + "column5": "1516947099", + "column6": "c4685r9", + "column7": "5859838884205409280" + } +] \ No newline at end of file From c57408a27f530a49c41e68e9e8fa1f979efef61e Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Fri, 28 Mar 2025 11:05:16 -0400 Subject: [PATCH 02/20] Delete lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java --- .../dataprovider/montezBProviderProvider.java | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java diff --git a/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java b/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java deleted file mode 100644 index 266650d40..000000000 --- a/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.codedifferently.lesson9.dataprovider; - -import java.util.Map; - -import org.springframework.stereotype.Service; - -@Service -public class montezBProviderProvider extends DataProvider { - public String getProviderName() { - return "montezBProvider"; - } - - public Map getColumnTypeByName() { - return Map.of( - "column1", Boolean.class, - "column2", Float.class, - "column3", Double.class, - "column4", Short.class, - "column5", Integer.class, - "column6", String.class, - "column7", Long.class); - } -} - - From af8eef31ed00826ff3c0769c2d4651a28a43233e Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Fri, 28 Mar 2025 11:06:34 -0400 Subject: [PATCH 03/20] Delete lesson_09/types/types_app/src/main/resources/data/montezb.json --- .../src/main/resources/data/montezb.json | 92 ------------------- 1 file changed, 92 deletions(-) delete mode 100644 lesson_09/types/types_app/src/main/resources/data/montezb.json diff --git a/lesson_09/types/types_app/src/main/resources/data/montezb.json b/lesson_09/types/types_app/src/main/resources/data/montezb.json deleted file mode 100644 index 1d8cbf9a5..000000000 --- a/lesson_09/types/types_app/src/main/resources/data/montezb.json +++ /dev/null @@ -1,92 +0,0 @@ -[ - { - "column1": "false", - "column2": "2.0165133E38", - "column3": "2.7989049813330837E307", - "column4": "416", - "column5": "435833166", - "column6": "3cuw2", - "column7": "3530240046379697664" - }, - { - "column1": "true", - "column2": "1.460264E37", - "column3": "2.9225361274287315E307", - "column4": "17516", - "column5": "260615671", - "column6": "8j52s4aq6d", - "column7": "65341810874192888" - }, - { - "column1": "true", - "column2": "2.776658E38", - "column3": "2.0826943783702183E307", - "column4": "31533", - "column5": "161572734", - "column6": "s8yavhue1", - "column7": "4903929290600323072" - }, - { - "column1": "true", - "column2": "1.3027212E38", - "column3": "1.1914573950682302E308", - "column4": "29377", - "column5": "451167147", - "column6": "2at5p9weyni", - "column7": "1756929147146946048" - }, - { - "column1": "true", - "column2": "1.6506819E38", - "column3": "3.7690907310588337E307", - "column4": "23676", - "column5": "405162496", - "column6": "migsey8lk", - "column7": "5227682372169227264" - }, - { - "column1": "true", - "column2": "6.687427E37", - "column3": "1.7507811122323619E308", - "column4": "763", - "column5": "385548066", - "column6": "ni6d58js04u", - "column7": "814327769818061056" - }, - { - "column1": "false", - "column2": "2.6281565E38", - "column3": "3.3046191712251996E307", - "column4": "29441", - "column5": "497419740", - "column6": "7ypumj83a", - "column7": "6639371891920120832" - }, - { - "column1": "false", - "column2": "9.816115E37", - "column3": "1.3824553928097414E308", - "column4": "3537", - "column5": "753736722", - "column6": "68aglu4", - "column7": "1905184695820989696" - }, - { - "column1": "false", - "column2": "2.674275E38", - "column3": "1.562287548934654E308", - "column4": "25482", - "column5": "2121817019", - "column6": "2plvf", - "column7": "8721696529208318976" - }, - { - "column1": "true", - "column2": "7.985794E37", - "column3": "1.377992454751497E308", - "column4": "29060", - "column5": "1516947099", - "column6": "c4685r9", - "column7": "5859838884205409280" - } -] \ No newline at end of file From fc73f23c41d0a49a401ca757541d4f28633471ab Mon Sep 17 00:00:00 2001 From: Tezz03 Date: Mon, 5 May 2025 16:58:33 +0000 Subject: [PATCH 04/20] fix: fix debug in mediaitemsController --- .../lesson26/web/MediaItemsController.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java index bbbc45e41..057f34d9d 100644 --- a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java +++ b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java @@ -6,7 +6,10 @@ import com.codedifferently.lesson26.library.search.SearchCriteria; import java.io.IOException; import java.util.List; +import java.util.Optional; import java.util.Set; +import java.util.UUID; + import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; @@ -27,8 +30,20 @@ public MediaItemsController(Library library) throws IOException { @GetMapping("/items") public ResponseEntity getItems() { Set items = library.search(SearchCriteria.builder().build()); + if (items.isEmpty()) { + ResponseEntity.noContent(); + } List responseItems = items.stream().map(MediaItemResponse::from).toList(); var response = GetMediaItemsResponse.builder().items(responseItems).build(); return ResponseEntity.ok(response); } + @GetMapping(value = "/{id}") + public ResponseEntity getItemById(@PathVariable("id") UUID id) { + + System.out.println(id.toString()); + + Set items = library.search(SearchCriteria.builder().id(id.toString()).build()); + Optional matchedItem = + items.stream().filter(item -> item.getId().equals(id)).findFirst(); + System.out.println("items"); } From 74af3f92a59fc404e191fe628040d3e817998789 Mon Sep 17 00:00:00 2001 From: Tezz03 Date: Mon, 12 May 2025 04:39:10 +0000 Subject: [PATCH 05/20] feat: Upload files montezbradley.sql and LibraryUserModel.java --- .../lesson28/models/LibraryUserModel.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 lesson_28/db/db_app/src/main/java/com/codedifferently/lesson28/models/LibraryUserModel.java diff --git a/lesson_28/db/db_app/src/main/java/com/codedifferently/lesson28/models/LibraryUserModel.java b/lesson_28/db/db_app/src/main/java/com/codedifferently/lesson28/models/LibraryUserModel.java new file mode 100644 index 000000000..92ecf698e --- /dev/null +++ b/lesson_28/db/db_app/src/main/java/com/codedifferently/lesson28/models/LibraryUserModel.java @@ -0,0 +1,19 @@ +package com.codedifferently.lesson28.models; + +public class LibraryUserModel { + private String id; + private String email; + private String firstName; + private String lastName; + private String password; + private Integer phoneNUmber; + + public LibraryUserModel(String id, String email, String firstName, String lastName, String password, Integer phoneNUmber) { + this.id = id; + this.email = email; + this.firstName = firstName; + this.lastName = lastName; + this.password = password; + this .phoneNUmber = phoneNUmber; + } +} From 6779d70c185cc427eed90a8f8c5d3c6d038591d3 Mon Sep 17 00:00:00 2001 From: Tezz03 Date: Mon, 12 May 2025 04:45:54 +0000 Subject: [PATCH 06/20] fixed:update changes to code --- .../main/resources/queries/montezbradley.sql | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql diff --git a/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql b/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql new file mode 100644 index 000000000..f99808f68 --- /dev/null +++ b/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql @@ -0,0 +1,36 @@ +SELECT * + +FROM media_items + +SELECT type, COUNT(*) +AS item_count +FROM media_items +GROUP BY type; + +SELECT SUM(media_items.pages) +AS total_pages_checked_out +FROM checked_out_items c +JOIN media_items m ON c.item_id = m.id; + +SELECT g.name, c.* +FROM guests g +LEFT JOIN checked_out_items c ON g.email = c.email + +DROP TABLE library_users; + +CREATE TABLE library_users ( + id TEXT PRIMARY KEY, + email TEXT NOT NULL UNIQUE, + first_name TEXT NOT NULL, + last_name TEXT NOT NULL, + password TEXT NOT NULL +); + +INSERT INTO library_users (id, email, first_name, last_name, password) +VALUES +('1', 'jane@example.com', 'Jane', 'Doe', '$2a$10$8Sbo8w4UTo7PYYMRAfE8ieBaQYqDZV9AYw2x9AlFFeFZ3Y3q1TxMi'), +('2', 'john@example.com', 'John', 'Smith', '$2a$10$L8lWx.L3QhxiKyzYJCTi7uYTeKKbqElxRYHO6mGjc5Cfb5pY3HHQO'), +('3', 'olivia@example.com', 'Olivia', 'James', '$2a$10$kRrQ3YbeXYbXl9F6sUYOYOX5pK8flNOuNcByVRKz9ChfLYUM6ZKAe'); + +SELECT * FROM library_users; +/*End of code*/ \ No newline at end of file From e0335495aa1e48c3a77bc28c0cdacb7e76811d0a Mon Sep 17 00:00:00 2001 From: Tezz03 Date: Mon, 12 May 2025 04:59:27 +0000 Subject: [PATCH 07/20] fixed:update changes to code --- .../com/codedifferently/lesson26/web/MediaItemsController.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java index 057f34d9d..00e342f92 100644 --- a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java +++ b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java @@ -46,4 +46,6 @@ public ResponseEntity getItemById(@PathVariable("id") UUID id Optional matchedItem = items.stream().filter(item -> item.getId().equals(id)).findFirst(); System.out.println("items"); + return null; } +} \ No newline at end of file From db1407a048bd958f8799375eea26aa9f27d88f8b Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 13:48:58 -0400 Subject: [PATCH 08/20] Update montezbradley.sql --- .../main/resources/queries/montezbradley.sql | 50 +++++++------------ 1 file changed, 18 insertions(+), 32 deletions(-) diff --git a/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql b/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql index f99808f68..9acdf63fb 100644 --- a/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql +++ b/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql @@ -1,36 +1,22 @@ -SELECT * - -FROM media_items - -SELECT type, COUNT(*) -AS item_count +SELECT +COUNT(*) As count FROM media_items GROUP BY type; -SELECT SUM(media_items.pages) -AS total_pages_checked_out +SELECT +SUM(pages) as total_pages_checked_out FROM checked_out_items c -JOIN media_items m ON c.item_id = m.id; - -SELECT g.name, c.* -FROM guests g -LEFT JOIN checked_out_items c ON g.email = c.email - -DROP TABLE library_users; - -CREATE TABLE library_users ( - id TEXT PRIMARY KEY, - email TEXT NOT NULL UNIQUE, - first_name TEXT NOT NULL, - last_name TEXT NOT NULL, - password TEXT NOT NULL -); - -INSERT INTO library_users (id, email, first_name, last_name, password) -VALUES -('1', 'jane@example.com', 'Jane', 'Doe', '$2a$10$8Sbo8w4UTo7PYYMRAfE8ieBaQYqDZV9AYw2x9AlFFeFZ3Y3q1TxMi'), -('2', 'john@example.com', 'John', 'Smith', '$2a$10$L8lWx.L3QhxiKyzYJCTi7uYTeKKbqElxRYHO6mGjc5Cfb5pY3HHQO'), -('3', 'olivia@example.com', 'Olivia', 'James', '$2a$10$kRrQ3YbeXYbXl9F6sUYOYOX5pK8flNOuNcByVRKz9ChfLYUM6ZKAe'); - -SELECT * FROM library_users; -/*End of code*/ \ No newline at end of file +JOIN media_items m +ON c.item_id = m.id; + +SELECT +g.email, +g.name, +GROUP_CONCAT(c.item_id) AS checked_out_items +FROM +guests g +LEFT JOIN +checked_out_items c ON g.email = c.email +GROUP BY +g.email, g.name, g.type; +/*End of code*/ From b093e25d1caf686f8ef56454ab4c264cf591d2cd Mon Sep 17 00:00:00 2001 From: Tezz03 Date: Mon, 7 Jul 2025 18:02:20 +0000 Subject: [PATCH 09/20] fix:upladating lesson 28 sql --- .../db/db_app/src/main/resources/queries/montezbradley.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql b/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql index 9acdf63fb..a50906cb8 100644 --- a/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql +++ b/lesson_28/db/db_app/src/main/resources/queries/montezbradley.sql @@ -19,4 +19,4 @@ LEFT JOIN checked_out_items c ON g.email = c.email GROUP BY g.email, g.name, g.type; -/*End of code*/ + From 3cdbcbc0da0a5b74ec3221dfb928a96e288a0944 Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 14:31:28 -0400 Subject: [PATCH 10/20] Update MediaItemsController.java --- .../lesson26/web/MediaItemsController.java | 108 +++++++++++------- 1 file changed, 67 insertions(+), 41 deletions(-) diff --git a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java index 00e342f92..dd940f7fa 100644 --- a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java +++ b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java @@ -1,51 +1,77 @@ -package com.codedifferently.lesson26.web; +import { + Body, + Controller, + Delete, + Get, + HttpCode, + HttpStatus, + Param, + Post, + Res, +} from '@nestjs/common'; +import { Response } from 'express'; +import { Librarian, LibraryService, MediaItem } from '../library'; +import { CreateMediaItemRequest } from './create_media_item_request'; +import { CreateMediaItemResponse } from './create_media_item_response'; +import { GetMediaItemsResponse } from './get_media_items_response'; +import { fromMediaItemRequest } from './media_item_request'; +import { MediaItemResponse, toMediaItemResponse } from './media_item_response'; -import com.codedifferently.lesson26.library.Librarian; -import com.codedifferently.lesson26.library.Library; -import com.codedifferently.lesson26.library.MediaItem; -import com.codedifferently.lesson26.library.search.SearchCriteria; -import java.io.IOException; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.UUID; +@Controller() +export class MediaItemsController { + private readonly librarian: Librarian; -import org.springframework.http.ResponseEntity; -import org.springframework.web.bind.annotation.CrossOrigin; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController -@CrossOrigin -public class MediaItemsController { - - private final Library library; - private final Librarian librarian; + constructor(private readonly library: LibraryService) { + this.librarian = library.getLibrarians()[0]; + } - public MediaItemsController(Library library) throws IOException { - this.library = library; - this.librarian = library.getLibrarians().stream().findFirst().orElseThrow(); + @Get('items') + getItems(): GetMediaItemsResponse { + const items: ReadonlySet = this.library.search({}); + const responseItems: MediaItemResponse[] = [...items].map( + toMediaItemResponse, + ); + const response = { items: responseItems }; + return response; } - @GetMapping("/items") - public ResponseEntity getItems() { - Set items = library.search(SearchCriteria.builder().build()); - if (items.isEmpty()) { - ResponseEntity.noContent(); + @Get('items/:id') + getItem( + @Param('id') id: string, + @Res({ passthrough: true }) res: Response, + ): MediaItemResponse { + const items = this.library.search({ id }); + if (items.size === 0) { + res.status(HttpStatus.NOT_FOUND); } - List responseItems = items.stream().map(MediaItemResponse::from).toList(); - var response = GetMediaItemsResponse.builder().items(responseItems).build(); - return ResponseEntity.ok(response); + const item = items.values().next().value; + return item ? toMediaItemResponse(item) : undefined; } - @GetMapping(value = "/{id}") - public ResponseEntity getItemById(@PathVariable("id") UUID id) { - System.out.println(id.toString()); + @Post('items') + @HttpCode(HttpStatus.OK) + addItem( + @Body() body: CreateMediaItemRequest, + @Res({ passthrough: true }) res: Response, + ): CreateMediaItemResponse { + if (!body.item) { + res.status(HttpStatus.BAD_REQUEST); + return { errors: ['Missing item'] }; + } + const item = fromMediaItemRequest(body.item); + this.library.addMediaItem(item, this.librarian); + return { item: toMediaItemResponse(item) }; + } - Set items = library.search(SearchCriteria.builder().id(id.toString()).build()); - Optional matchedItem = - items.stream().filter(item -> item.getId().equals(id)).findFirst(); - System.out.println("items"); - return null; + @Delete('items/:id') + @HttpCode(HttpStatus.NO_CONTENT) + deleteItem( + @Param('id') id: string, + @Res({ passthrough: true }) res: Response, + ): void { + if (!this.library.hasMediaItemById(id)) { + res.status(HttpStatus.NOT_FOUND); + } + this.library.removeMediaItemById(id, this.librarian); + } } -} \ No newline at end of file From e980b1f1d53b12f6b2fbf425fa9f3feab75a380c Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 15:11:54 -0400 Subject: [PATCH 11/20] Delete lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java --- .../lesson26/web/MediaItemsController.java | 77 ------------------- 1 file changed, 77 deletions(-) delete mode 100644 lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java diff --git a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java deleted file mode 100644 index dd940f7fa..000000000 --- a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java +++ /dev/null @@ -1,77 +0,0 @@ -import { - Body, - Controller, - Delete, - Get, - HttpCode, - HttpStatus, - Param, - Post, - Res, -} from '@nestjs/common'; -import { Response } from 'express'; -import { Librarian, LibraryService, MediaItem } from '../library'; -import { CreateMediaItemRequest } from './create_media_item_request'; -import { CreateMediaItemResponse } from './create_media_item_response'; -import { GetMediaItemsResponse } from './get_media_items_response'; -import { fromMediaItemRequest } from './media_item_request'; -import { MediaItemResponse, toMediaItemResponse } from './media_item_response'; - -@Controller() -export class MediaItemsController { - private readonly librarian: Librarian; - - constructor(private readonly library: LibraryService) { - this.librarian = library.getLibrarians()[0]; - } - - @Get('items') - getItems(): GetMediaItemsResponse { - const items: ReadonlySet = this.library.search({}); - const responseItems: MediaItemResponse[] = [...items].map( - toMediaItemResponse, - ); - const response = { items: responseItems }; - return response; - } - - @Get('items/:id') - getItem( - @Param('id') id: string, - @Res({ passthrough: true }) res: Response, - ): MediaItemResponse { - const items = this.library.search({ id }); - if (items.size === 0) { - res.status(HttpStatus.NOT_FOUND); - } - const item = items.values().next().value; - return item ? toMediaItemResponse(item) : undefined; - } - - @Post('items') - @HttpCode(HttpStatus.OK) - addItem( - @Body() body: CreateMediaItemRequest, - @Res({ passthrough: true }) res: Response, - ): CreateMediaItemResponse { - if (!body.item) { - res.status(HttpStatus.BAD_REQUEST); - return { errors: ['Missing item'] }; - } - const item = fromMediaItemRequest(body.item); - this.library.addMediaItem(item, this.librarian); - return { item: toMediaItemResponse(item) }; - } - - @Delete('items/:id') - @HttpCode(HttpStatus.NO_CONTENT) - deleteItem( - @Param('id') id: string, - @Res({ passthrough: true }) res: Response, - ): void { - if (!this.library.hasMediaItemById(id)) { - res.status(HttpStatus.NOT_FOUND); - } - this.library.removeMediaItemById(id, this.librarian); - } -} From 5f0382f5316dfeded50e787b7b195a9ce5de2144 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CTezz03=E2=80=9D?= <“mmbradley@gmail.com”> Date: Tue, 25 Mar 2025 20:33:39 +0000 Subject: [PATCH 12/20] edit:mbLesson_09 --- .../dataprovider/montezBProviderProvider.java | 25 ++++ .../src/main/resources/data/montezb.json | 140 +++++++++--------- 2 files changed, 95 insertions(+), 70 deletions(-) create mode 100644 lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java diff --git a/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java b/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java new file mode 100644 index 000000000..266650d40 --- /dev/null +++ b/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java @@ -0,0 +1,25 @@ +package com.codedifferently.lesson9.dataprovider; + +import java.util.Map; + +import org.springframework.stereotype.Service; + +@Service +public class montezBProviderProvider extends DataProvider { + public String getProviderName() { + return "montezBProvider"; + } + + public Map getColumnTypeByName() { + return Map.of( + "column1", Boolean.class, + "column2", Float.class, + "column3", Double.class, + "column4", Short.class, + "column5", Integer.class, + "column6", String.class, + "column7", Long.class); + } +} + + diff --git a/lesson_09/types/types_app/src/main/resources/data/montezb.json b/lesson_09/types/types_app/src/main/resources/data/montezb.json index e2e097dc0..1d8cbf9a5 100644 --- a/lesson_09/types/types_app/src/main/resources/data/montezb.json +++ b/lesson_09/types/types_app/src/main/resources/data/montezb.json @@ -1,92 +1,92 @@ [ { - "column1": "1.863895E38", - "column2": "6998", - "column3": "true", - "column4": "1269627853", - "column5": "5820458545739166720", - "column6": "1.436185005130375E308", - "column7": "ye25g" + "column1": "false", + "column2": "2.0165133E38", + "column3": "2.7989049813330837E307", + "column4": "416", + "column5": "435833166", + "column6": "3cuw2", + "column7": "3530240046379697664" }, { - "column1": "2.2073703E38", - "column2": "31051", - "column3": "false", - "column4": "195099502", - "column5": "7823978771683994624", - "column6": "1.703004837906517E308", - "column7": "yibn0" + "column1": "true", + "column2": "1.460264E37", + "column3": "2.9225361274287315E307", + "column4": "17516", + "column5": "260615671", + "column6": "8j52s4aq6d", + "column7": "65341810874192888" }, { - "column1": "3.3211768E38", - "column2": "27056", - "column3": "false", - "column4": "557211270", - "column5": "3555070442975083008", - "column6": "1.6667231001500445E308", - "column7": "z7flxj9ih" + "column1": "true", + "column2": "2.776658E38", + "column3": "2.0826943783702183E307", + "column4": "31533", + "column5": "161572734", + "column6": "s8yavhue1", + "column7": "4903929290600323072" }, { - "column1": "1.6676249E38", - "column2": "11188", - "column3": "true", - "column4": "1364839748", - "column5": "5247280208224276480", - "column6": "5.573864411176169E307", - "column7": "703typ2qsxni" + "column1": "true", + "column2": "1.3027212E38", + "column3": "1.1914573950682302E308", + "column4": "29377", + "column5": "451167147", + "column6": "2at5p9weyni", + "column7": "1756929147146946048" }, { - "column1": "2.3070655E38", - "column2": "25660", - "column3": "false", - "column4": "991280458", - "column5": "4047343583020718592", - "column6": "9.819210694336025E306", - "column7": "4z7wnu" + "column1": "true", + "column2": "1.6506819E38", + "column3": "3.7690907310588337E307", + "column4": "23676", + "column5": "405162496", + "column6": "migsey8lk", + "column7": "5227682372169227264" }, { - "column1": "3.4997513E37", - "column2": "7615", - "column3": "true", - "column4": "681995715", - "column5": "2643907710975564800", - "column6": "5.146227084316043E307", - "column7": "cwe5vf8" + "column1": "true", + "column2": "6.687427E37", + "column3": "1.7507811122323619E308", + "column4": "763", + "column5": "385548066", + "column6": "ni6d58js04u", + "column7": "814327769818061056" }, { - "column1": "1.517785E38", - "column2": "2489", - "column3": "true", - "column4": "2090041544", - "column5": "3217921269451220480", - "column6": "5.74053698522329E307", - "column7": "2bt47x8dpyw" + "column1": "false", + "column2": "2.6281565E38", + "column3": "3.3046191712251996E307", + "column4": "29441", + "column5": "497419740", + "column6": "7ypumj83a", + "column7": "6639371891920120832" }, { - "column1": "8.259404E37", - "column2": "2148", - "column3": "false", - "column4": "1134389096", - "column5": "4917746663066431488", - "column6": "1.5187138866355861E308", - "column7": "t3ocnadzx1l5" + "column1": "false", + "column2": "9.816115E37", + "column3": "1.3824553928097414E308", + "column4": "3537", + "column5": "753736722", + "column6": "68aglu4", + "column7": "1905184695820989696" }, { - "column1": "2.9935023E38", - "column2": "2652", - "column3": "true", - "column4": "515853127", - "column5": "1803397750918669056", - "column6": "4.686361471260443E307", - "column7": "lsi2w6z" + "column1": "false", + "column2": "2.674275E38", + "column3": "1.562287548934654E308", + "column4": "25482", + "column5": "2121817019", + "column6": "2plvf", + "column7": "8721696529208318976" }, { - "column1": "1.8579561E38", - "column2": "31546", - "column3": "false", - "column4": "1894352427", - "column5": "7812610742153510912", - "column6": "1.4053257217166533E308", - "column7": "xma7jpqg" + "column1": "true", + "column2": "7.985794E37", + "column3": "1.377992454751497E308", + "column4": "29060", + "column5": "1516947099", + "column6": "c4685r9", + "column7": "5859838884205409280" } ] \ No newline at end of file From f19cd93d9e259c36f8274b5eb62490b75472bdf9 Mon Sep 17 00:00:00 2001 From: Tezz03 Date: Mon, 7 Jul 2025 20:46:26 +0000 Subject: [PATCH 13/20] fix:had to add MediaItemsController back to github --- .../lesson26/web/MediaItemsController.java | 36 +++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java diff --git a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java new file mode 100644 index 000000000..861c0ec51 --- /dev/null +++ b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java @@ -0,0 +1,36 @@ +package com.codedifferently.lesson26.web; + +import java.io.IOException; +import java.util.List; +import java.util.Set; + +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.CrossOrigin; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RestController; + +import com.codedifferently.lesson26.library.Librarian; +import com.codedifferently.lesson26.library.Library; +import com.codedifferently.lesson26.library.MediaItem; +import com.codedifferently.lesson26.library.search.SearchCriteria; + +@RestController +@CrossOrigin +public class MediaItemsController { + + private final Library library; + private final Librarian librarian; + + public MediaItemsController(Library library) throws IOException { + this.library = library; + this.librarian = library.getLibrarians().stream().findFirst().orElseThrow(); + } + + @GetMapping("/items") + public ResponseEntity getItems() { + Set items = library.search(SearchCriteria.builder().build()); + List responseItems = items.stream().map(MediaItemResponse::from).toList(); + var response = GetMediaItemsResponse.builder().items(responseItems).build(); + return ResponseEntity.ok(response); + } +} \ No newline at end of file From 79381799206b9b34577329df53f0dfd429b35999 Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:51:24 -0400 Subject: [PATCH 14/20] Update MediaItemsController.java --- .../lesson26/web/MediaItemsController.java | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java index 861c0ec51..bbbc45e41 100644 --- a/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java +++ b/lesson_26/api/java/api_app/src/main/java/com/codedifferently/lesson26/web/MediaItemsController.java @@ -1,19 +1,17 @@ package com.codedifferently.lesson26.web; +import com.codedifferently.lesson26.library.Librarian; +import com.codedifferently.lesson26.library.Library; +import com.codedifferently.lesson26.library.MediaItem; +import com.codedifferently.lesson26.library.search.SearchCriteria; import java.io.IOException; import java.util.List; import java.util.Set; - import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.CrossOrigin; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; -import com.codedifferently.lesson26.library.Librarian; -import com.codedifferently.lesson26.library.Library; -import com.codedifferently.lesson26.library.MediaItem; -import com.codedifferently.lesson26.library.search.SearchCriteria; - @RestController @CrossOrigin public class MediaItemsController { @@ -33,4 +31,4 @@ public ResponseEntity getItems() { var response = GetMediaItemsResponse.builder().items(responseItems).build(); return ResponseEntity.ok(response); } -} \ No newline at end of file +} From 107fd15d97734eabf355f6b0839d7cef3a8f2467 Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:54:35 -0400 Subject: [PATCH 15/20] Update montezb.json --- .../src/main/resources/data/montezb.json | 142 +++++++++--------- 1 file changed, 71 insertions(+), 71 deletions(-) diff --git a/lesson_09/types/types_app/src/main/resources/data/montezb.json b/lesson_09/types/types_app/src/main/resources/data/montezb.json index 1d8cbf9a5..dd3faef81 100644 --- a/lesson_09/types/types_app/src/main/resources/data/montezb.json +++ b/lesson_09/types/types_app/src/main/resources/data/montezb.json @@ -1,92 +1,92 @@ [ { - "column1": "false", - "column2": "2.0165133E38", - "column3": "2.7989049813330837E307", - "column4": "416", - "column5": "435833166", - "column6": "3cuw2", - "column7": "3530240046379697664" + "column1": "1.863895E38", + "column2": "6998", + "column3": "true", + "column4": "1269627853", + "column5": "5820458545739166720", + "column6": "1.436185005130375E308", + "column7": "ye25g" }, { - "column1": "true", - "column2": "1.460264E37", - "column3": "2.9225361274287315E307", - "column4": "17516", - "column5": "260615671", - "column6": "8j52s4aq6d", - "column7": "65341810874192888" + "column1": "2.2073703E38", + "column2": "31051", + "column3": "false", + "column4": "195099502", + "column5": "7823978771683994624", + "column6": "1.703004837906517E308", + "column7": "yibn0" }, { - "column1": "true", - "column2": "2.776658E38", - "column3": "2.0826943783702183E307", - "column4": "31533", - "column5": "161572734", - "column6": "s8yavhue1", - "column7": "4903929290600323072" + "column1": "3.3211768E38", + "column2": "27056", + "column3": "false", + "column4": "557211270", + "column5": "3555070442975083008", + "column6": "1.6667231001500445E308", + "column7": "z7flxj9ih" }, { - "column1": "true", - "column2": "1.3027212E38", - "column3": "1.1914573950682302E308", - "column4": "29377", - "column5": "451167147", - "column6": "2at5p9weyni", - "column7": "1756929147146946048" + "column1": "1.6676249E38", + "column2": "11188", + "column3": "true", + "column4": "1364839748", + "column5": "5247280208224276480", + "column6": "5.573864411176169E307", + "column7": "703typ2qsxni" }, { - "column1": "true", - "column2": "1.6506819E38", - "column3": "3.7690907310588337E307", - "column4": "23676", - "column5": "405162496", - "column6": "migsey8lk", - "column7": "5227682372169227264" + "column1": "2.3070655E38", + "column2": "25660", + "column3": "false", + "column4": "991280458", + "column5": "4047343583020718592", + "column6": "9.819210694336025E306", + "column7": "4z7wnu" }, { - "column1": "true", - "column2": "6.687427E37", - "column3": "1.7507811122323619E308", - "column4": "763", - "column5": "385548066", - "column6": "ni6d58js04u", - "column7": "814327769818061056" + "column1": "3.4997513E37", + "column2": "7615", + "column3": "true", + "column4": "681995715", + "column5": "2643907710975564800", + "column6": "5.146227084316043E307", + "column7": "cwe5vf8" }, { - "column1": "false", - "column2": "2.6281565E38", - "column3": "3.3046191712251996E307", - "column4": "29441", - "column5": "497419740", - "column6": "7ypumj83a", - "column7": "6639371891920120832" + "column1": "1.517785E38", + "column2": "2489", + "column3": "true", + "column4": "2090041544", + "column5": "3217921269451220480", + "column6": "5.74053698522329E307", + "column7": "2bt47x8dpyw" }, { - "column1": "false", - "column2": "9.816115E37", - "column3": "1.3824553928097414E308", - "column4": "3537", - "column5": "753736722", - "column6": "68aglu4", - "column7": "1905184695820989696" + "column1": "8.259404E37", + "column2": "2148", + "column3": "false", + "column4": "1134389096", + "column5": "4917746663066431488", + "column6": "1.5187138866355861E308", + "column7": "t3ocnadzx1l5" }, { - "column1": "false", - "column2": "2.674275E38", - "column3": "1.562287548934654E308", - "column4": "25482", - "column5": "2121817019", - "column6": "2plvf", - "column7": "8721696529208318976" + "column1": "2.9935023E38", + "column2": "2652", + "column3": "true", + "column4": "515853127", + "column5": "1803397750918669056", + "column6": "4.686361471260443E307", + "column7": "lsi2w6z" }, { - "column1": "true", - "column2": "7.985794E37", - "column3": "1.377992454751497E308", - "column4": "29060", - "column5": "1516947099", - "column6": "c4685r9", - "column7": "5859838884205409280" + "column1": "1.8579561E38", + "column2": "31546", + "column3": "false", + "column4": "1894352427", + "column5": "7812610742153510912", + "column6": "1.4053257217166533E308", + "column7": "xma7jpqg" } -] \ No newline at end of file +] From d060b9e3efd0d03c81f5a04b707c1f03576d0d5b Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:56:02 -0400 Subject: [PATCH 16/20] Delete lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java --- .../dataprovider/montezBProviderProvider.java | 25 ------------------- 1 file changed, 25 deletions(-) delete mode 100644 lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java diff --git a/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java b/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java deleted file mode 100644 index 266650d40..000000000 --- a/lesson_09/types/types_app/src/main/java/com/codedifferently/lesson9/dataprovider/montezBProviderProvider.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.codedifferently.lesson9.dataprovider; - -import java.util.Map; - -import org.springframework.stereotype.Service; - -@Service -public class montezBProviderProvider extends DataProvider { - public String getProviderName() { - return "montezBProvider"; - } - - public Map getColumnTypeByName() { - return Map.of( - "column1", Boolean.class, - "column2", Float.class, - "column3", Double.class, - "column4", Short.class, - "column5", Integer.class, - "column6", String.class, - "column7", Long.class); - } -} - - From 213a4ac202b79df4bdc7b5d993ff1ff346523cb7 Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:56:59 -0400 Subject: [PATCH 17/20] Update montezb.json From c153ccb372d06b04b8b7261dc68aa4a2694313df Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 16:59:31 -0400 Subject: [PATCH 18/20] Update montezb.json From 652c1c456c0ef5b3ad1d3f7fbc412009ccd839e7 Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 17:00:24 -0400 Subject: [PATCH 19/20] Update montezb.json --- lesson_09/types/types_app/src/main/resources/data/montezb.json | 1 + 1 file changed, 1 insertion(+) diff --git a/lesson_09/types/types_app/src/main/resources/data/montezb.json b/lesson_09/types/types_app/src/main/resources/data/montezb.json index dd3faef81..d9f840c77 100644 --- a/lesson_09/types/types_app/src/main/resources/data/montezb.json +++ b/lesson_09/types/types_app/src/main/resources/data/montezb.json @@ -90,3 +90,4 @@ "column7": "xma7jpqg" } ] + From 974e4760d7a23b739f91b8797efa32595fcc1d88 Mon Sep 17 00:00:00 2001 From: Tezz03 <105926982+Tezz03@users.noreply.github.com> Date: Mon, 7 Jul 2025 17:01:19 -0400 Subject: [PATCH 20/20] Update montezb.json --- lesson_09/types/types_app/src/main/resources/data/montezb.json | 1 - 1 file changed, 1 deletion(-) diff --git a/lesson_09/types/types_app/src/main/resources/data/montezb.json b/lesson_09/types/types_app/src/main/resources/data/montezb.json index d9f840c77..dd3faef81 100644 --- a/lesson_09/types/types_app/src/main/resources/data/montezb.json +++ b/lesson_09/types/types_app/src/main/resources/data/montezb.json @@ -90,4 +90,3 @@ "column7": "xma7jpqg" } ] -