From 9b5304ae3cef23f17f8da98d5ef7d9d31f139765 Mon Sep 17 00:00:00 2001 From: Marcin Alchimowicz Date: Wed, 17 Jan 2024 20:16:29 +0100 Subject: [PATCH] feat: added ActivityLog stack --- .../controller/ActivityLogController.java | 54 ++++++++++++++ .../prapro2spring/dto/ActivityLogDTO.java | 70 +++++++++++++++++++ .../service/ActivityLogDTOService.java | 9 +++ .../service/ActivityLogService.java | 9 +++ 4 files changed, 142 insertions(+) create mode 100644 src/main/java/com/example/prapro2spring/controller/ActivityLogController.java create mode 100644 src/main/java/com/example/prapro2spring/dto/ActivityLogDTO.java create mode 100644 src/main/java/com/example/prapro2spring/service/ActivityLogDTOService.java create mode 100644 src/main/java/com/example/prapro2spring/service/ActivityLogService.java diff --git a/src/main/java/com/example/prapro2spring/controller/ActivityLogController.java b/src/main/java/com/example/prapro2spring/controller/ActivityLogController.java new file mode 100644 index 0000000..d67702f --- /dev/null +++ b/src/main/java/com/example/prapro2spring/controller/ActivityLogController.java @@ -0,0 +1,54 @@ +package com.example.prapro2spring.controller; + +import com.example.prapro2spring.dto.ActivityLogDTO; +import com.example.prapro2spring.model.ActivityLog; +import com.example.prapro2spring.service.ActivityLogService; +import com.example.prapro2spring.service.ActivityLogDTOService; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/api/activityLogs") +public class ActivityLogController { + + @Autowired + private ActivityLogService activityLogService; + @Autowired + private ActivityLogDTOService activityLogDTOService; + + @GetMapping + public List getAllActivityLogs() { + return activityLogService.findAll(); + } + + @GetMapping("/{id}") + public ActivityLog getActivityLogById(@PathVariable Long id) { + return activityLogService.findById(id).orElse(null); + } + + @PostMapping + public ActivityLogDTO createActivityLog(@RequestBody ActivityLogDTO activityLog) { + activityLog.setId(null); + return activityLogDTOService.save(activityLog); + } + + @PutMapping("/{id}") + public ActivityLogDTO updateActivityLog(@PathVariable Long id, @RequestBody ActivityLogDTO activityLogDetails) { + ActivityLogDTO activityLog = activityLogDTOService.findById(id).orElse(null); + if (activityLog != null) { + activityLog.setActivityId(activityLogDetails.getActivityId()); + activityLog.setPersonId(activityLogDetails.getPersonId()); + activityLog.setStartTimestamp(activityLogDetails.getStartTimestamp()); + activityLog.setEndTimestamp(activityLogDetails.getEndTimestamp()); + return activityLogDTOService.save(activityLog); + } + return null; + } + + @DeleteMapping("/{id}") + public void deleteActivityLog(@PathVariable Long id) { + activityLogService.deleteById(id); + } +} \ No newline at end of file diff --git a/src/main/java/com/example/prapro2spring/dto/ActivityLogDTO.java b/src/main/java/com/example/prapro2spring/dto/ActivityLogDTO.java new file mode 100644 index 0000000..a67ee29 --- /dev/null +++ b/src/main/java/com/example/prapro2spring/dto/ActivityLogDTO.java @@ -0,0 +1,70 @@ +package com.example.prapro2spring.dto; + +import com.example.prapro2spring.model.Activity; +import com.example.prapro2spring.model.Person; +import jakarta.persistence.*; + +import java.time.LocalDateTime; + +@Entity +@Table(name = "activity_log") +public class ActivityLogDTO { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + + @Column(name = "activityId") + private Long activityId; + + @Column(name = "humanId") + private Long personId; + + @Column(name = "start_timestamp") + private LocalDateTime startTimestamp; + + @Column(name = "end_timestamp") + private LocalDateTime endTimestamp; + + // getters and setters + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public Long getActivityId() { + return activityId; + } + + public void setActivityId(Long activityId) { + this.activityId = activityId; + } + + public Long getPersonId() { + return personId; + } + + public void setPersonId(Long person) { + this.personId = person; + } + + public LocalDateTime getStartTimestamp() { + return startTimestamp; + } + + public void setStartTimestamp(LocalDateTime startTimestamp) { + this.startTimestamp = startTimestamp; + } + + public LocalDateTime getEndTimestamp() { + return endTimestamp; + } + + public void setEndTimestamp(LocalDateTime endTimestamp) { + this.endTimestamp = endTimestamp; + } +} \ No newline at end of file diff --git a/src/main/java/com/example/prapro2spring/service/ActivityLogDTOService.java b/src/main/java/com/example/prapro2spring/service/ActivityLogDTOService.java new file mode 100644 index 0000000..2b53300 --- /dev/null +++ b/src/main/java/com/example/prapro2spring/service/ActivityLogDTOService.java @@ -0,0 +1,9 @@ +package com.example.prapro2spring.service; + +import com.example.prapro2spring.dto.ActivityLogDTO; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@Service +public interface ActivityLogDTOService extends JpaRepository { +} \ No newline at end of file diff --git a/src/main/java/com/example/prapro2spring/service/ActivityLogService.java b/src/main/java/com/example/prapro2spring/service/ActivityLogService.java new file mode 100644 index 0000000..9971c31 --- /dev/null +++ b/src/main/java/com/example/prapro2spring/service/ActivityLogService.java @@ -0,0 +1,9 @@ +package com.example.prapro2spring.service; + +import com.example.prapro2spring.model.ActivityLog; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.stereotype.Service; + +@Service +public interface ActivityLogService extends JpaRepository { +} \ No newline at end of file