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..f2415fe5d 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<>(); @@ -52,6 +53,10 @@ public List getGuests() { return results; } + public List getUsers() { + return this.users != null ? this.users : new ArrayList<>(); + } + public Map> getCheckoutsByEmail() { Map> results = new HashMap<>(); for (LibraryGuestModel guest : this.guests) { 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..c5bfb9aa1 --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryUserModel.java @@ -0,0 +1,17 @@ +package com.codedifferently.lesson25.models; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import java.util.UUID; + +@Entity +@Table(name = "library_users") +public class LibraryUserModel { + + @Id public UUID id; + public String email; + public String firstName; + public String lastName; + 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..bfe45f225 --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/repository/LibraryUserRepository.java @@ -0,0 +1,14 @@ +package com.codedifferently.lesson25.repository; + +import com.codedifferently.lesson25.models.LibraryUserModel; +import java.util.List; +import java.util.UUID; +import org.springframework.data.repository.CrudRepository; + +public interface LibraryUserRepository extends CrudRepository { + + @Override + List findAll(); + + LibraryUserModel findByEmail(String email); +} diff --git a/lesson_25/db/db_app/src/main/resources/queries/trinitiejackson.sql b/lesson_25/db/db_app/src/main/resources/queries/trinitiejackson.sql new file mode 100644 index 000000000..b5b8e7de8 --- /dev/null +++ b/lesson_25/db/db_app/src/main/resources/queries/trinitiejackson.sql @@ -0,0 +1,24 @@ +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; + +CREATE TABLE library_users ( + id TEXT PRIMARY KEY, + email TEXT UNIQUE NOT NULL, + first_name TEXT NOT NULL, + last_name TEXT NOT NULL, + password_hash TEXT NOT NULL +); + +INSERT INTO library_users (id, email, first_name, last_name, password_hash) +VALUES ('550e8400-e29b-41d4-a716-446655440000', 'trinitie.jackson@example.com', 'Trinitie', 'Jackson', '$2y$10$fBjbX04w/CPZ4YZNJpLBR.hyuz1YXbyIFj92udVrckYEXjPzhoDHq'), + ('550e8400-e29b-41d4-a716-446655440001', 'john.doe@example.com', 'John', 'Doe', '$2y$10$QnMskk1wZ.T5148M9aALAuAeCHPRW72e3aN41Ysms4gOu1/YSjJn.'); diff --git a/lesson_25/db/db_app/src/main/resources/sqlite/data.db b/lesson_25/db/db_app/src/main/resources/sqlite/data.db index 8baa982d2..879e07796 100644 Binary files a/lesson_25/db/db_app/src/main/resources/sqlite/data.db and b/lesson_25/db/db_app/src/main/resources/sqlite/data.db differ