From e47daaf61818f597676b1ba388a9a68a4a2c6396 Mon Sep 17 00:00:00 2001 From: marcius02 Date: Mon, 10 Mar 2025 23:24:02 +0100 Subject: [PATCH] first commit --- .../pronunciationAppBack/model/Category.java | 81 +++++++++++++++++ .../model/GameProgress.java | 14 ++- .../pronunciationAppBack/model/LevelWord.java | 90 +++++++++++++++++++ .../dev/pronunciationAppBack/model/Stage.java | 26 ++++++ .../pronunciationAppBack/model/StageWord.java | 12 ++- .../dev/pronunciationAppBack/model/Word.java | 16 +++- 6 files changed, 223 insertions(+), 16 deletions(-) create mode 100644 backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Category.java create mode 100644 backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/LevelWord.java create mode 100644 backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Stage.java diff --git a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Category.java b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Category.java new file mode 100644 index 000000000..6476d156e --- /dev/null +++ b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Category.java @@ -0,0 +1,81 @@ +package dev.pronunciationAppBack.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToMany; + +import java.util.List; + +@Entity +public class Category { + @Id + private String id; + private String categoryName; + private String subCategoryName; + private String description; + private int wordCount; + + @ManyToMany(mappedBy = "categories") + private List words; + + public Category() {} + + public Category(String id, String categoryName, String subCategoryName, String description, int wordCount) { + this.id = id; + this.categoryName = categoryName; + this.subCategoryName = subCategoryName; + this.description = description; + this.wordCount = wordCount; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public String getCategoryName() { + return categoryName; + } + + public void setCategoryName(String categoryName) { + this.categoryName = categoryName; + } + + public String getSubCategoryName() { + return subCategoryName; + } + + public void setSubCategoryName(String subCategoryName) { + this.subCategoryName = subCategoryName; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public int getWordCount() { + return wordCount; + } + + public void setWordCount(int wordCount) { + this.wordCount = wordCount; + } + + @Override + public String toString() { + return "Category{" + + "id='" + id + '\'' + + ", categoryName='" + categoryName + '\'' + + ", subCategoryName='" + subCategoryName + '\'' + + ", description='" + description + '\'' + + ", wordCount=" + wordCount + + '}'; + } +} \ No newline at end of file diff --git a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/GameProgress.java b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/GameProgress.java index 778c9b3bd..5fe9e37a6 100644 --- a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/GameProgress.java +++ b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/GameProgress.java @@ -1,21 +1,14 @@ package dev.pronunciationAppBack.model; -import jakarta.persistence.Entity; -import jakarta.persistence.Enumerated; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.Id; +import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import org.hibernate.annotations.GenericGenerator; -import jakarta.persistence.OneToOne; -import jakarta.persistence.JoinColumn; import jakarta.persistence.Enumerated; -import jakarta.persistence.EnumType; -import jakarta.persistence.Temporal; -import jakarta.persistence.TemporalType; import java.util.Date; +import java.util.List; @Entity @Data @@ -45,5 +38,8 @@ public enum Stage { @JoinColumn(name = "user_id") private AppUser appUser; + @OneToMany(mappedBy = "gameProgress") + private List stages; + } \ No newline at end of file diff --git a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/LevelWord.java b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/LevelWord.java new file mode 100644 index 000000000..c44ce5b94 --- /dev/null +++ b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/LevelWord.java @@ -0,0 +1,90 @@ +package dev.pronunciationAppBack.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; + +import java.util.List; + +@Entity +public class LevelWord { + @Id + private String id; + private int number; + private String name; + private int requiredScore; + private boolean isBlocked; + + @OneToMany(mappedBy = "levelWord") + private List words; + + public LevelWord() {} + + public LevelWord(String id, int number, String name, int requiredScore, boolean isBlocked) { + this.id = id; + this.number = number; + this.name = name; + this.requiredScore = requiredScore; + this.isBlocked = isBlocked; + } + + public String getId() { + return id; + } + + public void setId(String id) { + this.id = id; + } + + public int getNumber() { + return number; + } + + public void setNumber(int number) { + this.number = number; + } + + public String getName() { + return name; + } + + public void setName(String name) { + this.name = name; + } + + public int getRequiredScore() { + return requiredScore; + } + public void setRequiredScore(int requiredScore) { + this.requiredScore = requiredScore; + } + + public boolean isBlocked() { + return isBlocked; + } + + public void setBlocked(boolean isBlocked) { + this.isBlocked = isBlocked; + } + + public List getWords() { + return words; + } + + public void setWords(List words) { + this.words = words; + } + + @Override + public String toString() { + return "LevelWord{" + + "id='" + id + '\'' + + ", number=" + number + + ", name='" + name + '\'' + + ", requiredScore=" + requiredScore + + ", isBlocked=" + isBlocked + + ", words=" + words + + '}'; + } + +} diff --git a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Stage.java b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Stage.java new file mode 100644 index 000000000..8695ee3c8 --- /dev/null +++ b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Stage.java @@ -0,0 +1,26 @@ +package dev.pronunciationAppBack.model; + +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.OneToMany; + +import java.util.List; + +@Entity +public class Stage { + @Id + private String id; + private String name; + private String avatarUrl; + private String status; + private int progress; + private int currentScore; + + @ManyToOne + private GameProgress gameProgress; + + @OneToMany(mappedBy = "stage") + private List stageWords; + +} diff --git a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/StageWord.java b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/StageWord.java index 3f5f86e66..0f51b6b84 100644 --- a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/StageWord.java +++ b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/StageWord.java @@ -1,15 +1,12 @@ package dev.pronunciationAppBack.model; -import jakarta.persistence.Entity; -import jakarta.persistence.EnumType; -import jakarta.persistence.Enumerated; +import jakarta.persistence.*; import lombok.Getter; import lombok.Setter; import lombok.NoArgsConstructor; import lombok.AllArgsConstructor; import lombok.ToString; -import jakarta.persistence.Id; import java.util.Date; @Entity @@ -30,4 +27,11 @@ public class StageWord { public enum Status { DONE, PENDING, FAIL } + + @ManyToOne + private Word word; + + @ManyToOne + private Stage stage; + } diff --git a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Word.java b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Word.java index e6d2ae6dc..04ce423ca 100644 --- a/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Word.java +++ b/backend/pronunciationAppBack/src/main/java/dev/pronunciationAppBack/model/Word.java @@ -1,8 +1,6 @@ package dev.pronunciationAppBack.model; -import jakarta.persistence.Entity; -import jakarta.persistence.Id; -import jakarta.persistence.OneToMany; +import jakarta.persistence.*; import java.util.List; @@ -22,6 +20,18 @@ public class Word { @OneToMany(mappedBy = "word") private List pronunciations; + @ManyToMany + @JoinTable(name = "word_category", + joinColumns = @JoinColumn(name = "WORD_ID_FK"), + inverseJoinColumns = @JoinColumn(name = "CATEGORY_ID_FK")) + private List categories; + + @ManyToOne + private LevelWord levelWord; + + @OneToMany(mappedBy = "word") + private List stageWords; + public Word() {} public Word(String id, String wordName, String definition, String phoneticSpelling, String sentence, boolean isActive, int level) {