diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java deleted file mode 100644 index e9b82c3f56b9faa7b980f0375e9a68e6316107b0..0000000000000000000000000000000000000000 --- a/src/main/java/no/ntnu/idi/stud/savingsapp/model/Role.java +++ /dev/null @@ -1,8 +0,0 @@ -package no.ntnu.idi.stud.savingsapp.model; - -public enum Role { - - USER, - - ADMIN -} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/bank/Account.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/bank/Account.java new file mode 100644 index 0000000000000000000000000000000000000000..7503fe5fc1a8d9fad314e26914901a03cdac82e7 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/bank/Account.java @@ -0,0 +1,26 @@ +package no.ntnu.idi.stud.savingsapp.model.bank; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "account") +public class Account { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "account_id") + private Long id; + + +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/DailyChallengeProgress.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/DailyChallengeProgress.java new file mode 100644 index 0000000000000000000000000000000000000000..cbe32c81d658f4d1608b8deeb55e5f00d03ff3d4 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/DailyChallengeProgress.java @@ -0,0 +1,34 @@ +package no.ntnu.idi.stud.savingsapp.model.savings; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "daily_challenge_progresss") +public class DailyChallengeProgress { + + @Id() + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "daily_challenge_progess_id") + private Long id; + + @NonNull + @Column(name = "challenge_day", nullable = false) + private int challengeDay; + + @NonNull + @Column(name = "completed_at", nullable = false) + private Timestamp completedAt; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/DifficultyLevel.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/DifficultyLevel.java new file mode 100644 index 0000000000000000000000000000000000000000..b4b952ff2ca7013ed8b4cdacb5a7e63d9ac3fedb --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/DifficultyLevel.java @@ -0,0 +1,37 @@ +package no.ntnu.idi.stud.savingsapp.model.savings; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "difficulty_level") +public class DifficultyLevel { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "difficulty_level_id") + private Long id; + + @NonNull + @Column(name = "difficulty_level_text", nullable = false) + private String diffucultyLevelText; + + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "difficulty_level_id") + private List<SavingChallenge> savingChallengeList; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/SavingChallenge.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/SavingChallenge.java new file mode 100644 index 0000000000000000000000000000000000000000..38f07fd94259145fb5df289403b99d03c043aeb4 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/SavingChallenge.java @@ -0,0 +1,44 @@ +package no.ntnu.idi.stud.savingsapp.model.savings; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "saving_challenge") +public class SavingChallenge { + + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "saving_challenge_id") + private Long id; + + @NonNull + @Column(name = "saving_challenge_text", nullable = false) + private String savingChallengeText; + + @NonNull + @Column(name = "potential_saving_amount", nullable = false) + private int potentialSavingAmount; + + @NonNull + @Column(name = "points", nullable = false) + private int points; + + @OneToMany(cascade = CascadeType.ALL) + private List<DailyChallengeProgress> dailyChallengeProgressList; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/SavingGoal.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/SavingGoal.java new file mode 100644 index 0000000000000000000000000000000000000000..86728fe341a8ddea3e37964c38d1230989f354fc --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/savings/SavingGoal.java @@ -0,0 +1,54 @@ +package no.ntnu.idi.stud.savingsapp.model.savings; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import java.sql.Timestamp; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "saving_goal") +public class SavingGoal { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "saving_goal_id") + private Long id; + + @NonNull + @Column(name = "saving_goal_name", nullable = false) + private String savingGoalName; + + @NonNull + @Column(name = "target_amount", nullable = false) + private int targetAmount; + + @NonNull + @Column(name = "target_date", nullable = false) + private Timestamp targetDate; + + @NonNull + @Column(name = "completed_at", nullable = false) + private Timestamp completedAt; + + @NonNull + @Column(name = "created_at", nullable = false) + private Timestamp createdAt; + + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "saving_goal_id") + private List<SavingChallenge> savingChallenges; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Badge.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Badge.java new file mode 100644 index 0000000000000000000000000000000000000000..058bda0db574fa5a84c704ba6ec23b853e5bf1ea --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Badge.java @@ -0,0 +1,39 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "badge") +public class Badge { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "badge_id") + private Long id; + + @NonNull + @Column(name = "badge_name", nullable = false) + private String badgeName; + + @NonNull + @Column(name = "criteria", nullable = false) + private String criteria; + + @OneToMany(cascade = CascadeType.ALL, mappedBy = "badge") + private List<BadgeUser> badgeUserList; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/BadgeUser.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/BadgeUser.java new file mode 100644 index 0000000000000000000000000000000000000000..750eb872ba58570641f774960dd3e6b963ba45ed --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/BadgeUser.java @@ -0,0 +1,39 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "badge_user") +public class BadgeUser { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "badge_user_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "badge_id") + private Badge badge; + + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + @Column(name = "earned_at") + private Timestamp earnedAt; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/FriendList.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/FriendList.java new file mode 100644 index 0000000000000000000000000000000000000000..d7371c376cb8950506e4fbf6c3bd2824d504bf7e --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/FriendList.java @@ -0,0 +1,26 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +import jakarta.persistence.Column; +import jakarta.persistence.EmbeddedId; +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class FriendList { + + @EmbeddedId + private FriendListId id; + + @NonNull + @Column(name = "status", nullable = false) + private String status; + + @NonNull + @Column(name = "created_at") + private Timestamp createdAt; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/FriendListId.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/FriendListId.java new file mode 100644 index 0000000000000000000000000000000000000000..5644c8672cfab4821b7fb2524a1cce1d044b450e --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/FriendListId.java @@ -0,0 +1,17 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +import jakarta.persistence.Embeddable; +import java.io.Serializable; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Embeddable +public class FriendListId implements Serializable { + + private Long userId; + private Long friendId; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Point.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Point.java new file mode 100644 index 0000000000000000000000000000000000000000..c2d1e88753eedb7d024915c32827446fe7947e9b --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Point.java @@ -0,0 +1,33 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "points") +public class Point { + + @Id + @OneToOne + @JoinColumn(name = "user_id", nullable = false) + private User user; + + @NonNull + @Column(name = "current_points", nullable = false) + private int currentPoints; + + @NonNull + @Column(name = "total_earned_points", nullable = false) + private int totalEarnedPoints; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/ProfilePicture.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/ProfilePicture.java new file mode 100644 index 0000000000000000000000000000000000000000..8e413a92113e8bd1a4db4880b21c72f4917b0388 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/ProfilePicture.java @@ -0,0 +1,35 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "profile_picture") +public class ProfilePicture { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "profile_picture_id") + private Long id; + + @NonNull + @Column(name = "description", nullable = false) + private String description; + + @NonNull + @Column(name = "price", nullable = false) + private int price; + + +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/ProfilePictureUser.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/ProfilePictureUser.java new file mode 100644 index 0000000000000000000000000000000000000000..8851762de555bcdf2bb3ed2eed164314666ed2ac --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/ProfilePictureUser.java @@ -0,0 +1,36 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.ManyToOne; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "profile_picture_user") +public class ProfilePictureUser { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "profile_picture_user_id") + private Long id; + + @ManyToOne + @JoinColumn(name = "user_id") + private User user; + + @ManyToOne + @JoinColumn(name = "profile_picture_id") + private ProfilePicture profilePicture; + + private boolean inUse; +} \ No newline at end of file diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Role.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Role.java new file mode 100644 index 0000000000000000000000000000000000000000..5f674d0ba74dce0f78fe133a3b0cf420e68f0e44 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Role.java @@ -0,0 +1,8 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +public enum Role { + + USER, + + ADMIN +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Streak.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Streak.java new file mode 100644 index 0000000000000000000000000000000000000000..6212b1a8ad128b2e08092b68931344236b4854d6 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/Streak.java @@ -0,0 +1,47 @@ +package no.ntnu.idi.stud.savingsapp.model.user; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToOne; +import jakarta.persistence.Table; +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "streak") +public class Streak { + + @Id + @OneToOne + @JoinColumn(name = "user_id", unique = true) + private User user; + + @NonNull + @Column(name = "current_streak", nullable = false) + private int currentStreak; + + @NonNull + @Column(name = "current_streak_created_at", nullable = false) + private Timestamp currentStreakCreatedAt; + + @NonNull + @Column(name = "current_streak_updated_at", nullable = false) + private Timestamp currentStreakUpdatedAt; + + @NonNull + @Column(name = "highest_streak", nullable = false) + private int highestStreak; + + @NonNull + @Column(name = "highest_streak_ended_at") + private Timestamp highestStreakEndedAt; + +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/User.java similarity index 61% rename from src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java rename to src/main/java/no/ntnu/idi/stud/savingsapp/model/user/User.java index d95124ac7857bb9a64f8a397e48d9f4e78104d55..9d2c47d7cbc671346a4623ea99bd461f181faa7c 100644 --- a/src/main/java/no/ntnu/idi/stud/savingsapp/model/User.java +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/User.java @@ -1,6 +1,6 @@ -package no.ntnu.idi.stud.savingsapp.model; +package no.ntnu.idi.stud.savingsapp.model.user; -import jakarta.annotation.Nonnull; +import jakarta.persistence.CascadeType; import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; @@ -8,6 +8,12 @@ import jakarta.persistence.Enumerated; import jakarta.persistence.GeneratedValue; import jakarta.persistence.GenerationType; import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.JoinTable; +import jakarta.persistence.ManyToMany; +import jakarta.persistence.OneToMany; +import jakarta.persistence.OneToOne; +import jakarta.persistence.PrimaryKeyJoinColumn; import jakarta.persistence.Table; import java.util.Collection; import java.util.Date; @@ -16,6 +22,8 @@ import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; import lombok.NonNull; +import no.ntnu.idi.stud.savingsapp.model.bank.Account; +import no.ntnu.idi.stud.savingsapp.model.savings.SavingGoal; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; @@ -29,6 +37,7 @@ public class User implements UserDetails{ @Id @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "user_id") private Long id; @NonNull @@ -43,17 +52,39 @@ public class User implements UserDetails{ @Column(name = "email", nullable = false) private String email; + @OneToOne + @PrimaryKeyJoinColumn(name = "savings_account") + private Account savingsAccount; + + @OneToOne + @PrimaryKeyJoinColumn(name = "savings_account") + private Account checkingAccount; + @NonNull @Column(name = "password", nullable = false) private String password; @NonNull + @Column(name = "created_at", nullable = false) private Date createdAt; - @Nonnull - @Enumerated(EnumType.STRING) + @NonNull + @Enumerated(EnumType.STRING) + @Column(name = "role", nullable = false) private Role role; + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "user_id") + private List<SavingGoal> savingGoal; + + @ManyToMany + @JoinTable(name = "badge_user", + joinColumns = @JoinColumn(name = "user_id"), + inverseJoinColumns = @JoinColumn(name = "badge_id")) + private List<Badge> badges; + + @OneToMany(cascade = CascadeType.ALL, mappedBy = "user") + private List<BadgeUser> badgeUserList; @Override public Collection<? extends GrantedAuthority> getAuthorities() { return List.of(new SimpleGrantedAuthority(role.name())); @@ -64,7 +95,6 @@ public class User implements UserDetails{ return this.email; } - @Override public boolean isAccountNonExpired() { return true; diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/Answer.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/Answer.java new file mode 100644 index 0000000000000000000000000000000000000000..5781c64b421f3a1486e5a63ec7b5cd3ec08d2369 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/Answer.java @@ -0,0 +1,29 @@ +package no.ntnu.idi.stud.savingsapp.model.user.configuration; + +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.Table; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "answer") +public class Answer { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "answer_id") + private Long id; + + @NonNull + @Column(name = "answer_text", nullable = false) + private String answer_text; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/Question.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/Question.java new file mode 100644 index 0000000000000000000000000000000000000000..fef80a403b4f8a494018530d530d1e57e5d13f73 --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/Question.java @@ -0,0 +1,37 @@ +package no.ntnu.idi.stud.savingsapp.model.user.configuration; + +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.JoinColumn; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; +import java.util.List; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.NonNull; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "question") +public class Question { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + @Column(name = "question_id") + private Long id; + + @NonNull + @Column(name = "question_text", nullable = false) + private String questionText; + + @OneToMany(cascade = CascadeType.ALL) + @JoinColumn(name = "question_id") + private List<Answer> answerList; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/UserConfiguration.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/UserConfiguration.java new file mode 100644 index 0000000000000000000000000000000000000000..22c0779fd6a773786fe67ff4f9edc3ec21ae508c --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/UserConfiguration.java @@ -0,0 +1,25 @@ +package no.ntnu.idi.stud.savingsapp.model.user.configuration; + +import jakarta.persistence.Column; +import jakarta.persistence.EmbeddedId; +import jakarta.persistence.Entity; +import jakarta.persistence.Table; +import java.sql.Timestamp; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +@Table(name = "user_configuration") +public class UserConfiguration { + + @EmbeddedId + @Column(name = "user_configuration_id") + private UserConfigurationId id; + + @Column(name = "updated_at") + private Timestamp updatedAt; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/UserConfigurationId.java b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/UserConfigurationId.java new file mode 100644 index 0000000000000000000000000000000000000000..1eb6394302b899ccd52c7a2a063152ea211672ae --- /dev/null +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/model/user/configuration/UserConfigurationId.java @@ -0,0 +1,17 @@ +package no.ntnu.idi.stud.savingsapp.model.user.configuration; + +import jakarta.persistence.Embeddable; +import java.io.Serializable; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Embeddable +public class UserConfigurationId implements Serializable { + private Long userId; + private Long questionId; + private Long answerId; +} diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/security/AuthorizationFilter.java b/src/main/java/no/ntnu/idi/stud/savingsapp/security/AuthorizationFilter.java index 4346b2f96b6e4d60434a81efce43402a3b8f0881..0c92e67b2f39086735b7b6a16fab54a1f9823bca 100644 --- a/src/main/java/no/ntnu/idi/stud/savingsapp/security/AuthorizationFilter.java +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/security/AuthorizationFilter.java @@ -9,7 +9,7 @@ import jakarta.servlet.FilterChain; import jakarta.servlet.ServletException; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; -import no.ntnu.idi.stud.savingsapp.model.Role; +import no.ntnu.idi.stud.savingsapp.model.user.Role; import no.ntnu.idi.stud.savingsapp.properties.TokenProperties; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; diff --git a/src/main/java/no/ntnu/idi/stud/savingsapp/utils/TokenUtils.java b/src/main/java/no/ntnu/idi/stud/savingsapp/utils/TokenUtils.java index 8f63af5e57435077dce77134d4e4502728a317b2..bc74e206f53abb69dc958944df3699133c9d4eb0 100644 --- a/src/main/java/no/ntnu/idi/stud/savingsapp/utils/TokenUtils.java +++ b/src/main/java/no/ntnu/idi/stud/savingsapp/utils/TokenUtils.java @@ -2,7 +2,7 @@ package no.ntnu.idi.stud.savingsapp.utils; import com.auth0.jwt.JWT; import com.auth0.jwt.algorithms.Algorithm; -import no.ntnu.idi.stud.savingsapp.model.User; +import no.ntnu.idi.stud.savingsapp.model.user.User; import no.ntnu.idi.stud.savingsapp.properties.TokenProperties; import org.springframework.stereotype.Component; @@ -23,7 +23,7 @@ public final class TokenUtils { */ public static String generateToken(final User user) { final Instant now = Instant.now(); - final Algorithm hmac512 = Algorithm.HMAC512(TokenProperties.SECRET);; + final Algorithm hmac512 = Algorithm.HMAC512(TokenProperties.SECRET); return JWT.create() .withSubject(String.valueOf(user.getId())) .withClaim("user_role", user.getRole().name())