From 6630828a6a8aeea820b6d8bdef646fff1e7ed9e7 Mon Sep 17 00:00:00 2001 From: Jared Edge Date: Fri, 10 Oct 2025 16:46:05 +0000 Subject: [PATCH 1/3] feat adds: SELECT queries to unique file --- .../db_app/src/main/resources/queries/jarededge.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lesson_25/db/db_app/src/main/resources/queries/jarededge.sql diff --git a/lesson_25/db/db_app/src/main/resources/queries/jarededge.sql b/lesson_25/db/db_app/src/main/resources/queries/jarededge.sql new file mode 100644 index 000000000..81ccbb873 --- /dev/null +++ b/lesson_25/db/db_app/src/main/resources/queries/jarededge.sql @@ -0,0 +1,13 @@ + +SELECT type, COUNT(*) as count +FROM media_items +GROUP BY type; + +SELECT SUM(pages) +FROM media_items +JOIN checked_out_items ON media_items.id = checked_out_items.item_id; + +SELECT guests.name, guests.email, media_items.title +FROM guests +LEFT JOIN checked_out_items ON guests.email = checked_out_items.email +LEFT JOIN media_items ON checked_out_items.item_id = media_items.id; From f9f85ba60d606269c614ff13f734afae6d6c01fc Mon Sep 17 00:00:00 2001 From: Jared Edge Date: Fri, 10 Oct 2025 17:14:48 +0000 Subject: [PATCH 2/3] feat: adds creates table and user loading --- .../lesson25/models/LibraryUserModel.java | 26 +++++++++++++++++++ .../repository/LibraryUserRepository.java | 13 ++++++++++ .../src/main/resources/queries/jarededge.sql | 13 +++++++++- 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryUserModel.java create mode 100644 lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/repository/LibraryUserRepository.java diff --git a/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryUserModel.java b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryUserModel.java new file mode 100644 index 000000000..7c3d696ea --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryUserModel.java @@ -0,0 +1,26 @@ +package com.codedifferently.lesson25.models; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "library_users") +public class LibraryUserModel { + + @Id + public String id; + + @Column(unique = true, nullable = false) + public String email; + + @Column(name = "first_name", nullable = false) + public String firstName; + + @Column(name = "last_name", nullable = false) + public String lastName; + + @Column(name = "password_hash", nullable = false) + public String passwordHash; +} diff --git a/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/repository/LibraryUserRepository.java b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/repository/LibraryUserRepository.java new file mode 100644 index 000000000..cd49759ee --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/repository/LibraryUserRepository.java @@ -0,0 +1,13 @@ +package com.codedifferently.lesson25.repository; + +import java.util.List; + +import org.springframework.data.repository.CrudRepository; + +import com.codedifferently.lesson25.models.LibraryUserModel; + +public interface LibraryUserRepository extends CrudRepository { + + @Override + List findAll(); +} diff --git a/lesson_25/db/db_app/src/main/resources/queries/jarededge.sql b/lesson_25/db/db_app/src/main/resources/queries/jarededge.sql index 81ccbb873..5feae053a 100644 --- a/lesson_25/db/db_app/src/main/resources/queries/jarededge.sql +++ b/lesson_25/db/db_app/src/main/resources/queries/jarededge.sql @@ -1,4 +1,4 @@ - +-- SQL Queries for Library Database SELECT type, COUNT(*) as count FROM media_items GROUP BY type; @@ -11,3 +11,14 @@ SELECT guests.name, guests.email, media_items.title FROM guests LEFT JOIN checked_out_items ON guests.email = checked_out_items.email LEFT JOIN media_items ON checked_out_items.item_id = media_items.id; + +-- Table Creation +CREATE TABLE library_users ( + id TEXT NOT NULL, + email TEXT NOT NULL, + first_name TEXT NOT NULL, + last_name TEXT NOT NULL, + password_hash TEXT NOT NULL, + PRIMARY KEY (id), + UNIQUE (email) +); \ No newline at end of file From e15f312e4f1be9685678712828d916e8d6fbf910 Mon Sep 17 00:00:00 2001 From: Jared Edge Date: Mon, 20 Oct 2025 13:43:32 +0000 Subject: [PATCH 3/3] Feat: adds library and mock data --- .../lesson25/factory/LibraryDbDataLoader.java | 3 +++ .../lesson25/models/LibraryDataModel.java | 1 + lesson_25/db/db_app/src/main/resources/data.sql | 12 ++++++++++++ 3 files changed, 16 insertions(+) create mode 100644 lesson_25/db/db_app/src/main/resources/data.sql diff --git a/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/factory/LibraryDbDataLoader.java b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/factory/LibraryDbDataLoader.java index b897de124..ac4f60e62 100644 --- a/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/factory/LibraryDbDataLoader.java +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/factory/LibraryDbDataLoader.java @@ -2,6 +2,7 @@ import com.codedifferently.lesson25.models.LibraryDataModel; import com.codedifferently.lesson25.repository.LibraryGuestRepository; +import com.codedifferently.lesson25.repository.LibraryUserRepository; import com.codedifferently.lesson25.repository.MediaItemRepository; import java.io.IOException; import org.springframework.beans.factory.annotation.Autowired; @@ -13,6 +14,7 @@ public final class LibraryDbDataLoader implements LibraryDataLoader { @Autowired private MediaItemRepository mediaItemsRepository; @Autowired private LibraryGuestRepository libraryGuestRepository; + @Autowired private LibraryUserRepository libraryUserRepository; @Override public LibraryDataModel loadData() throws IOException { @@ -20,6 +22,7 @@ public LibraryDataModel loadData() throws IOException { model.mediaItems = mediaItemsRepository.findAll(); model.guests = libraryGuestRepository.findAll(); + model.users = libraryUserRepository.findAll(); return model; } diff --git a/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryDataModel.java b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryDataModel.java index 6c268f962..abd3c0b30 100644 --- a/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryDataModel.java +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryDataModel.java @@ -17,6 +17,7 @@ public class LibraryDataModel { public List mediaItems; public List guests; + public List users; public List getMediaItems() { List results = new ArrayList<>(); diff --git a/lesson_25/db/db_app/src/main/resources/data.sql b/lesson_25/db/db_app/src/main/resources/data.sql new file mode 100644 index 000000000..7e7ba6ca0 --- /dev/null +++ b/lesson_25/db/db_app/src/main/resources/data.sql @@ -0,0 +1,12 @@ +-- Populating library_users table with sample data +INSERT OR IGNORE INTO library_users (id, email, first_name, last_name, password_hash) VALUES +('550e8400-e29b-41d4-a716-446655440001', 'john.doe@example.com', 'John', 'Doe', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440002', 'jane.smith@example.com', 'Jane', 'Smith', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440003', 'mike.johnson@example.com', 'Mike', 'Johnson', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440004', 'sarah.wilson@example.com', 'Sarah', 'Wilson', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440005', 'david.brown@example.com', 'David', 'Brown', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440006', 'emily.davis@example.com', 'Emily', 'Davis', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440007', 'robert.miller@example.com', 'Robert', 'Miller', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440008', 'lisa.garcia@example.com', 'Lisa', 'Garcia', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440009', 'james.martinez@example.com', 'James', 'Martinez', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8'), +('550e8400-e29b-41d4-a716-446655440010', 'amanda.anderson@example.com', 'Amanda', 'Anderson', '$2b$10$rOeWgMLJ8J8j8J8j8J8j8OmQ8J8j8J8j8J8j8J8j8J8j8J8j8J8j8');