Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,4 +59,7 @@ public Map<String, List<CheckoutModel>> getCheckoutsByEmail() {
}
return results;
}
private java.util.List<com.codedifferently.lesson25.models.LibraryUserModel> users = new java.util.ArrayList<>();
public java.util.List<com.codedifferently.lesson25.models.LibraryUserModel> getUsers() { return users; }
public void setUsers(java.util.List<com.codedifferently.lesson25.models.LibraryUserModel> users) { this.users = users; }
}
Original file line number Diff line number Diff line change
@@ -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 + ">";
}
}
Original file line number Diff line number Diff line change
@@ -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<LibraryUserModel> findAll() throws Exception {
List<LibraryUserModel> 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;
}
}
Original file line number Diff line number Diff line change
@@ -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;
Binary file modified lesson_25/db/db_app/src/main/resources/sqlite/data.db
Binary file not shown.
Loading