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..1b454cacd 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<>(); @@ -59,4 +60,12 @@ public Map> getCheckoutsByEmail() { } return results; } + + public List getUsers() { + if (this.users == null) { + return new ArrayList<>(); + } else { + return this.users; + } + } } 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..2d4c38edd --- /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; +import java.util.UUID; + +@Entity +@Table(name = "library_users") +public class LibraryUserModel { + + @Id public UUID 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(nullable = false) + public String password; +} 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/tyranricejr.sql b/lesson_25/db/db_app/src/main/resources/queries/tyranricejr.sql new file mode 100644 index 000000000..d01e0cd06 --- /dev/null +++ b/lesson_25/db/db_app/src/main/resources/queries/tyranricejr.sql @@ -0,0 +1,19 @@ +-- SQL queries by tyranricejr for Lesson 25 assignment + +-- Query 1: Count of media items by type +SELECT type, COUNT(*) as count +FROM media_items +GROUP BY type +ORDER BY type; + +-- Query 2: Sum of total pages checked out by guests +SELECT SUM(mi.pages) as total_pages_checked_out +FROM checked_out_items coi +JOIN media_items mi ON coi.item_id = mi.id +WHERE mi.pages IS NOT NULL; + +-- Query 3: All 5 guests and any corresponding records in the checked_out_items table +SELECT g.type, g.name, g.email, coi.item_id, coi.due_date +FROM guests g +LEFT JOIN checked_out_items coi ON g.email = coi.email +ORDER BY g.name, coi.due_date; 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..53369e0c4 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