diff --git a/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/factory/LibraryDbDataLoader.java.bak b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/factory/LibraryDbDataLoader.java.bak new file mode 100644 index 000000000..b897de124 --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/factory/LibraryDbDataLoader.java.bak @@ -0,0 +1,26 @@ +package com.codedifferently.lesson25.factory; + +import com.codedifferently.lesson25.models.LibraryDataModel; +import com.codedifferently.lesson25.repository.LibraryGuestRepository; +import com.codedifferently.lesson25.repository.MediaItemRepository; +import java.io.IOException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +/** A data loader that loads library data from a database. */ +@Service +public final class LibraryDbDataLoader implements LibraryDataLoader { + + @Autowired private MediaItemRepository mediaItemsRepository; + @Autowired private LibraryGuestRepository libraryGuestRepository; + + @Override + public LibraryDataModel loadData() throws IOException { + var model = new LibraryDataModel(); + + model.mediaItems = mediaItemsRepository.findAll(); + model.guests = libraryGuestRepository.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..306b1da9c 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 @@ -59,4 +59,7 @@ public Map> getCheckoutsByEmail() { } return results; } + private java.util.List users = new java.util.ArrayList<>(); + public java.util.List getUsers() { return users; } + public void setUsers(java.util.List users) { this.users = 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..4abbc8863 --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/models/LibraryUserModel.java @@ -0,0 +1,28 @@ +package com.codedifferently.lesson25.models; + +public class LibraryUserModel { + private final String id; + private final String email; + private final String firstName; + private final String lastName; + private final String password; + + public LibraryUserModel(String id, String email, String firstName, String lastName, String password) { + this.id = id; + this.email = email; + this.firstName = firstName; + this.lastName = lastName; + this.password = password; + } + + public String getId() { return id; } + public String getEmail() { return email; } + public String getFirstName() { return firstName; } + public String getLastName() { return lastName; } + public String getPassword() { return password; } + + @Override + public String toString() { + return firstName + " " + lastName + " <" + email + ">"; + } +} 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..0ae740837 --- /dev/null +++ b/lesson_25/db/db_app/src/main/java/com/codedifferently/lesson25/repository/LibraryUserRepository.java @@ -0,0 +1,33 @@ +package com.codedifferently.lesson25.repository; + +import com.codedifferently.lesson25.models.LibraryUserModel; +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.Statement; +import java.util.ArrayList; +import java.util.List; + +public class LibraryUserRepository { + private final Connection connection; + + public LibraryUserRepository(Connection connection) { + this.connection = connection; + } + + public List findAll() throws Exception { + List users = new ArrayList<>(); + String sql = "SELECT id, email, first_name, last_name, password FROM library_users"; + try (Statement st = connection.createStatement(); ResultSet rs = st.executeQuery(sql)) { + while (rs.next()) { + users.add(new LibraryUserModel( + rs.getString("id"), + rs.getString("email"), + rs.getString("first_name"), + rs.getString("last_name"), + rs.getString("password") + )); + } + } + return users; + } +} diff --git a/lesson_25/db/db_app/src/main/resources/queries/lesson25_toby_evans.sql b/lesson_25/db/db_app/src/main/resources/queries/lesson25_toby_evans.sql new file mode 100644 index 000000000..ea2033bfc --- /dev/null +++ b/lesson_25/db/db_app/src/main/resources/queries/lesson25_toby_evans.sql @@ -0,0 +1,7 @@ +SELECT type, COUNT(*) AS total_count FROM media_items GROUP BY type; + +SELECT SUM(pages) AS total_pages_checked_out FROM checked_out_items; + +SELECT g.id AS guest_id, g.first_name, g.last_name, c.item_id, c.checked_out_date, c.return_date +FROM guests g +LEFT JOIN checked_out_items c ON g.id = c.guest_id; 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..365031dc9 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