diff --git a/backend/src/main/java/hu/pazmany/Document.java b/backend/src/main/java/hu/pazmany/Document.java new file mode 100644 index 0000000000000000000000000000000000000000..3cd372db0b903a5abcc48d2768a2ccd042cc59a2 --- /dev/null +++ b/backend/src/main/java/hu/pazmany/Document.java @@ -0,0 +1,98 @@ +package hu.pazmany; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Column; +import jakarta.persistence.Table; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.JoinColumn; +import java.time.LocalDateTime; + +@Entity +@Table(name = "DOCUMENTS") +public class Document { + @Id + @Column(name = "id", unique = true, nullable = false) + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @ManyToOne + @JoinColumn(name = "userId", nullable = false) + private hu.pazmany.User user; + + @ManyToOne + @JoinColumn(name = "subjectId", nullable = false) + private Subject subject; + + @Column(name = "title", nullable = false) + private String title; + + @Column(name = "description") + private String description; + + @Column(name = "uploaded") + private LocalDateTime uploaded; + + @Column(name = "filepath", nullable = false) + private String filepath; + + // Getters and setters + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public hu.pazmany.User getUser() { + return user; + } + + public void setUser(User user) { + this.user = user; + } + + public Subject getSubject() { + return subject; + } + + public void setSubject(Subject subject) { + this.subject = subject; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public LocalDateTime getUploaded() { + return uploaded; + } + + public void setUploaded(LocalDateTime uploaded) { + this.uploaded = uploaded; + } + + public String getFilepath() { + return filepath; + } + + public void setFilepath(String filepath) { + this.filepath = filepath; + } +} diff --git a/backend/src/main/java/hu/pazmany/DocumentRepository.java b/backend/src/main/java/hu/pazmany/DocumentRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..7b97f475228efa0f374a561d1a93a13f1010421b --- /dev/null +++ b/backend/src/main/java/hu/pazmany/DocumentRepository.java @@ -0,0 +1,9 @@ +package hu.pazmany; + +import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + +public interface DocumentRepository extends JpaRepository<Document, Long>{ + List<Document> findAllByUser(User user); + List<Document> findAllBySubject(Subject subject); +} diff --git a/backend/src/main/java/hu/pazmany/Subject.java b/backend/src/main/java/hu/pazmany/Subject.java new file mode 100644 index 0000000000000000000000000000000000000000..c83cb0bce52a9d7281395a9749f7fe570f00bbc2 --- /dev/null +++ b/backend/src/main/java/hu/pazmany/Subject.java @@ -0,0 +1,35 @@ +package hu.pazmany; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Column; +import jakarta.persistence.Table; + +@Entity +@Table(name = "SUBJECTS") +public class Subject { + @Id + @Column(name = "id", unique = true, nullable = false) + private String subjectId; + + @Column(name = "name", nullable = false) + private String name; + + // Getters and setters + + public String getSubjectId() { + return subjectId; + } + + public void setSubjectId(String subjectId) { + this.subjectId = subjectId; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } +} diff --git a/backend/src/main/java/hu/pazmany/SubjectRepository.java b/backend/src/main/java/hu/pazmany/SubjectRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..61197c43d0d6afb5d2f2ae1bf7d84b6c125ca4cf --- /dev/null +++ b/backend/src/main/java/hu/pazmany/SubjectRepository.java @@ -0,0 +1,7 @@ +package hu.pazmany; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface SubjectRepository extends JpaRepository<Subject, String>{ + Subject findBySubjectId(String subjectId); +} diff --git a/backend/src/main/java/hu/pazmany/User.java b/backend/src/main/java/hu/pazmany/User.java index 40c2650f394c2363b275ca409e9d53e1b1e5569c..992c8fa542c49877619f8d428c798a1d2571232a 100644 --- a/backend/src/main/java/hu/pazmany/User.java +++ b/backend/src/main/java/hu/pazmany/User.java @@ -1,32 +1,24 @@ package hu.pazmany; -import jakarta.persistence.*; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.Column; +import jakarta.persistence.Table; @Entity -@Table(name = "`user`") +@Table(name = "USERS") public class User { @Id - @GeneratedValue(strategy = GenerationType.IDENTITY) - private Long id; - private String fullName; + @Column(name = "username", unique = true, nullable = false) private String username; - private String password; //Ide fog kelleni egy enkriptálás (hajrá) - public Long getId() { - return id; - } + @Column(name = "password", nullable = false) + private String password; - public void setId(Long id) { - this.id = id; - } + @Column(name = "fullName") + private String fullName; - public String getFullName() { - return fullName; - } - - public void setFullName(String fullName) { - this.fullName = fullName; - } + // Getters and setters public String getUsername() { return username; @@ -43,4 +35,12 @@ public class User { public void setPassword(String password) { this.password = password; } + + public String getFullName() { + return fullName; + } + + public void setFullName(String fullName) { + this.fullName = fullName; + } } diff --git a/backend/src/main/java/hu/pazmany/UserRepository.java b/backend/src/main/java/hu/pazmany/UserRepository.java index 625c023b72bf664be1072cee3093a4d10254099b..b8ecb16735a4eda3bc528c7e2122239403118384 100644 --- a/backend/src/main/java/hu/pazmany/UserRepository.java +++ b/backend/src/main/java/hu/pazmany/UserRepository.java @@ -2,6 +2,6 @@ package hu.pazmany; import org.springframework.data.jpa.repository.JpaRepository; -public interface UserRepository extends JpaRepository<User, Long> { +public interface UserRepository extends JpaRepository<User, String> { User findByUsername(String username); } diff --git a/backend/src/test/java/hu/pazmany/DocumentRepositoryTests.java b/backend/src/test/java/hu/pazmany/DocumentRepositoryTests.java new file mode 100644 index 0000000000000000000000000000000000000000..7a289136f6e2cc159c4f2a01feb92b06990836cf --- /dev/null +++ b/backend/src/test/java/hu/pazmany/DocumentRepositoryTests.java @@ -0,0 +1,107 @@ +package hu.pazmany; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; + +import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +public class DocumentRepositoryTests { + + @Autowired + private DocumentRepository documentRepository; + + @Autowired + private UserRepository userRepository; + + @Autowired + private SubjectRepository subjectRepository; + + @Test + public void testFindAllByUser() { + User user = new User(); + user.setUsername("testUser"); + user.setPassword("testPassword"); + userRepository.save(user); + + Subject subject = new Subject(); + subject.setSubjectId("testId"); + subject.setName("testName"); + subjectRepository.save(subject); + + int n = 4; + for (int i = 0; i < n; i++) { + Document document = new Document(); + document.setUser(user); + document.setSubject(subject); + document.setTitle("testTitle" + i); + document.setFilepath("testFilepath" + i); + documentRepository.save(document); + } + + List<Document> documents = documentRepository.findAllByUser(user); + + assertThat(documents).hasSize(n); + for (int i = 0; i < n; i++) { + assertThat(documents.get(i).getUser().getUsername()).isEqualTo(user.getUsername()); + } + } + + @Test + public void testFindAllBySubject() { + Subject subject = new Subject(); + subject.setSubjectId("testId"); + subject.setName("testName"); + subjectRepository.save(subject); + + User user = new User(); + user.setUsername("testUser"); + user.setPassword("testPassword"); + userRepository.save(user); + + int n = 4; + for (int i = 0; i < n; i++) { + Document document = new Document(); + document.setUser(user); + document.setSubject(subject); + document.setTitle("testTitle" + i); + document.setFilepath("testFilepath" + i); + documentRepository.save(document); + } + + List<Document> documents = documentRepository.findAllBySubject(subject); + + assertThat(documents).hasSize(n); + for (int i = 0; i < n; i++) { + assertThat(documents.get(i).getSubject().getSubjectId()).isEqualTo(subject.getSubjectId()); + } + } + + @Test + public void testFindById() { + Subject subject = new Subject(); + subject.setSubjectId("testId"); + subject.setName("testName"); + subjectRepository.save(subject); + + User user = new User(); + user.setUsername("testUser"); + user.setPassword("testPassword"); + userRepository.save(user); + + Document document = new Document(); + document.setUser(user); + document.setSubject(subject); + document.setTitle("testTitle"); + document.setFilepath("testFilepath"); + documentRepository.save(document); + + Document found = documentRepository.findById(document.getId()).get(); + + assertThat(found.getTitle()).isEqualTo(document.getTitle()); + } +} \ No newline at end of file diff --git a/backend/src/test/java/hu/pazmany/SubjectRepositoryTests.java b/backend/src/test/java/hu/pazmany/SubjectRepositoryTests.java new file mode 100644 index 0000000000000000000000000000000000000000..6b327b48e4d78ce069c64614c69597a7443f9551 --- /dev/null +++ b/backend/src/test/java/hu/pazmany/SubjectRepositoryTests.java @@ -0,0 +1,52 @@ +package hu.pazmany; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; + +import java.util.List; +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +public class SubjectRepositoryTests { + + @Autowired + private SubjectRepository subjectRepository; + + @Test + public void testFindBySubjectId() { + Subject subject = new Subject(); + subject.setSubjectId("testId"); + subject.setName("testName"); + subjectRepository.save(subject); + + Subject found = subjectRepository.findBySubjectId(subject.getSubjectId()); + + // Ids have to be compared, as the objects differ, even if their data does not + assertThat(found.getSubjectId()).isEqualTo(subject.getSubjectId()); + } + + @Test + public void testFindAll() { + Subject subject = new Subject(); + subject.setSubjectId("testId"); + subject.setName("testName"); + subjectRepository.save(subject); + + int n = 4; + for (int i = 0; i < n; i++) { + Subject tempSubject = new Subject(); + tempSubject.setSubjectId("testId" + i); + tempSubject.setName("testName" + i); + subjectRepository.save(tempSubject); + } + + List<Subject> subjects = subjectRepository.findAll(); + + assertThat(subjects).hasSize(n+1); + + assertThat(subjects.get(0).getSubjectId()).isEqualTo(subject.getSubjectId()); + } +} \ No newline at end of file diff --git a/backend/src/test/java/hu/pazmany/UserRepositoryTests.java b/backend/src/test/java/hu/pazmany/UserRepositoryTests.java new file mode 100644 index 0000000000000000000000000000000000000000..8c2b044ce61e9be392d1a81ef1d0fed4c1ee0339 --- /dev/null +++ b/backend/src/test/java/hu/pazmany/UserRepositoryTests.java @@ -0,0 +1,44 @@ +package hu.pazmany; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; + +import static org.assertj.core.api.Assertions.assertThat; + +@SpringBootTest +@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD) +public class UserRepositoryTests { + + @Autowired + private UserRepository userRepository; + + @Test + public void testUserRepository() { + // Create a new User + User user = new User(); + user.setUsername("testUser"); + user.setPassword("testPassword"); + + // Save the User + userRepository.save(user); + + // Retrieve the User + User retrievedUser = userRepository.findByUsername("testUser"); + + // Assert that the retrieved User is the same as the one we saved + assertThat(retrievedUser).isNotNull(); + assertThat(retrievedUser.getUsername()).isEqualTo(user.getUsername()); + assertThat(retrievedUser.getPassword()).isEqualTo(user.getPassword()); + } + + @Test + public void testMissingUser() { + // Retrieve a User that doesn't exist + User retrievedUser = userRepository.findByUsername("missingUser"); + + // Assert that the retrieved User is null + assertThat(retrievedUser).isNull(); + } +}