diff --git a/src/main/java/com/example/clientproject/data/events/Events.java b/src/main/java/com/example/clientproject/data/events/Events.java new file mode 100644 index 0000000000000000000000000000000000000000..9a48c0f240a2a3424636102ebb43032dc90fbdc4 --- /dev/null +++ b/src/main/java/com/example/clientproject/data/events/Events.java @@ -0,0 +1,27 @@ +package com.example.clientproject.data.events; + +import com.example.clientproject.data.logs.Logs; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; +import java.util.Set; + +/** + * Entity object for events which trigger a log + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +public class Events { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long eventId; + private String eventName; + + @OneToMany(cascade=CascadeType.ALL, orphanRemoval = true) + @JoinColumn(name="Event_Id", nullable = false) + private Set<Logs> logs; +} diff --git a/src/main/java/com/example/clientproject/data/events/EventsRepo.java b/src/main/java/com/example/clientproject/data/events/EventsRepo.java new file mode 100644 index 0000000000000000000000000000000000000000..69b5d3e7e6f63065aa47be3b3b4c22f9dc518445 --- /dev/null +++ b/src/main/java/com/example/clientproject/data/events/EventsRepo.java @@ -0,0 +1,19 @@ +package com.example.clientproject.data.events; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.Optional; + +/** + * Repository for the "Events" Entity + */ +public interface EventsRepo extends JpaRepository<Events, Long> { + /** + * Find an event by its name + * @param name - the name to search by + * @return - the event as an optional + */ + @Query("select e from Events e where e.eventName = ?1") + Optional<Events> findByEventName(String name); +} diff --git a/src/main/java/com/example/clientproject/data/logs/Logs.java b/src/main/java/com/example/clientproject/data/logs/Logs.java new file mode 100644 index 0000000000000000000000000000000000000000..190fee8fbbb18c4ad103465226f9b7d8ea95c39b --- /dev/null +++ b/src/main/java/com/example/clientproject/data/logs/Logs.java @@ -0,0 +1,43 @@ +package com.example.clientproject.data.logs; + +import com.example.clientproject.data.converters.TinyIntToBoolean; +import com.example.clientproject.data.events.Events; +import com.example.clientproject.data.users.Users; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +/** + * Entity object for logs + */ +@Data +@AllArgsConstructor +@NoArgsConstructor +@Entity +public class Logs { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private long logId; + private String logDetails; + private String logDateTime; + @Convert(converter = TinyIntToBoolean.class) + private boolean logSuperAdmin; + + @ManyToOne + @JoinColumn(name="User_Id", nullable=false) + private Users user; + + @ManyToOne + @JoinColumn(name="Event_Id", nullable=false) + private Events event; + + public Logs(String details, String dateTime, boolean superAdmin, Users aUser, Events aEvent) { + logDetails = details; + logDateTime = dateTime; + logSuperAdmin = superAdmin; + user = aUser; + event = aEvent; + } +} diff --git a/src/main/java/com/example/clientproject/data/logs/LogsRepo.java b/src/main/java/com/example/clientproject/data/logs/LogsRepo.java new file mode 100644 index 0000000000000000000000000000000000000000..7c5921939f46b8b1e27c720ec86bcebd05f78158 --- /dev/null +++ b/src/main/java/com/example/clientproject/data/logs/LogsRepo.java @@ -0,0 +1,43 @@ +package com.example.clientproject.data.logs; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +/** + * JPA Repo for the Logs entity + */ +public interface LogsRepo extends JpaRepository<Logs, Long> { + /** + * Find all the logs from a specific date time + * @param dateTime - the datetime to search by + * @return - list of logs from that date time + */ + @Query("select l from Logs l where l.logDateTime like ?1") + List<Logs> findByDateTime(String dateTime); + + /** + * Find all the logs for a specific event + * @param eventId - the id of the event to search by + * @return - a list of logs with that event + */ + @Query("select l from Logs l where l.event.eventId = ?1") + List<Logs> findByEventId(long eventId); + + /** + * Find all the logs for a specific user + * @param userId - the id of the user to search by + * @return - a list of all the logs for that user + */ + @Query("select l from Logs l where l.user.userId = ?1") + List<Logs> findByUserId(long userId); + + /** + * Find all the logs by a specific super admin status + * @param superAdminStatus - the status to search by + * @return - a list of the logs found + */ + @Query("select l from Logs l where l.logSuperAdmin = ?1") + List<Logs> findBySuperAdminStatus(boolean superAdminStatus); +} diff --git a/src/main/java/com/example/clientproject/data/users/Users.java b/src/main/java/com/example/clientproject/data/users/Users.java index f5c48347b44bafc85413a54965026fa739ca0a3f..96803f2a5639b05db74eb3b6e8c01ea9e8933e8f 100644 --- a/src/main/java/com/example/clientproject/data/users/Users.java +++ b/src/main/java/com/example/clientproject/data/users/Users.java @@ -1,5 +1,6 @@ package com.example.clientproject.data.users; +import com.example.clientproject.data.logs.Logs; import com.example.clientproject.data.shops.Shops; import com.example.clientproject.data.userStampBoards.UserStampBoards; import com.example.clientproject.data.tags.Tags; @@ -91,6 +92,10 @@ public class Users { ) private List<Tags> favouriteTags; + @OneToMany(cascade=CascadeType.ALL, orphanRemoval = true) + @JoinColumn(name="User_Id", nullable=false) + private Set<Logs> logs; + public String toString(){ return "User:" + this.getUserFirstName(); }