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..72b6c09ca 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,8 @@ public Map> getCheckoutsByEmail() { } return results; } + + public List getUsers() { + 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..86babf79b --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryUserModel.java @@ -0,0 +1,16 @@ +package com.codedifferently.lesson25.models; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Table; + +@Entity +@Table(name = "library_users") +public class LibraryUserModel { + + @Id public String id; + public String email; + public String firstName; + public String lastName; + 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..63091849b --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/repository/LibraryUserRepository.java @@ -0,0 +1,11 @@ +package com.codedifferently.lesson25.repository; + +import com.codedifferently.lesson25.models.LibraryUserModel; +import java.util.List; +import org.springframework.data.repository.CrudRepository; + +public interface LibraryUserRepository extends CrudRepository { + + @Override + List findAll(); +} diff --git a/lesson_25/db/db_app/src/main/resources/queries/taliacrockett.sql b/lesson_25/db/db_app/src/main/resources/queries/taliacrockett.sql new file mode 100644 index 000000000..6c476e381 --- /dev/null +++ b/lesson_25/db/db_app/src/main/resources/queries/taliacrockett.sql @@ -0,0 +1,19 @@ +SELECT + type, + COUNT(type) +FROM + media_items +GROUP BY + type; + +SELECT + SUM(media_items.pages) +FROM + media_items + JOIN checked_out_items ON media_items.id = checked_out_items.itemID; + +SELECT + email +FROM + guests + LEFT JOIN checked_out_items ON guests.email = checked_out_items.email; \ No newline at end of file diff --git a/lesson_25/db/db_app/src/main/resources/sqlite/create_library_users_table.sql b/lesson_25/db/db_app/src/main/resources/sqlite/create_library_users_table.sql new file mode 100644 index 000000000..c2ac70f1d --- /dev/null +++ b/lesson_25/db/db_app/src/main/resources/sqlite/create_library_users_table.sql @@ -0,0 +1,7 @@ +CREATE TABLE IF NOT EXISTS library_users ( + id TEXT PRIMARY KEY, + email TEXT, + first_name TEXT, + last_name TEXT, + password TEXT +); 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..94805e962 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 diff --git a/lesson_25/db/db_app/src/main/resources/sqlite/insert_sample_users.sql b/lesson_25/db/db_app/src/main/resources/sqlite/insert_sample_users.sql new file mode 100644 index 000000000..138958bab --- /dev/null +++ b/lesson_25/db/db_app/src/main/resources/sqlite/insert_sample_users.sql @@ -0,0 +1,5 @@ +INSERT INTO library_users (id, email, first_name, last_name, password) VALUES +('550e8400-e29b-41d4-a716-446655440001', 'john.doe@example.com', 'John', 'Doe', '$2a$10$N9qo8uLOickgx2ZMRZoMyeIjZAgcfl7p92ldGxad68LJZdL17lhWy'), +('550e8400-e29b-41d4-a716-446655440002', 'jane.smith@example.com', 'Jane', 'Smith', '$2a$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2uheWG/igi.'), +('550e8400-e29b-41d4-a716-446655440003', 'alice.johnson@example.com', 'Alice', 'Johnson', '$2a$10$fFEqnc/e7Re7kqJMs6tz4eusu1YiDXAbqN9/wWN.a1tC5sJ7XBnKK'), +('550e8400-e29b-41d4-a716-446655440004', 'bob.williams@example.com', 'Bob', 'Williams', '$2a$10$DvzRjmHR8nfwmBVtV8O8/.xbA1.H9M6hl15uFMdKz5RTUOxoV6zVy');