-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
* (TK-29)schedule * (TK-29)schedule --------- Co-authored-by: 서민지 <[email protected]>
- Loading branch information
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -40,3 +40,4 @@ out/ | |
|
||
.DS_Store | ||
|
||
.idea/ |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,58 @@ | ||
package com.example.backend.domain.schedule.controller; | ||
|
||
import com.example.backend.domain.schedule.dto.request.ScheduleRequest; | ||
import com.example.backend.domain.schedule.dto.response.ScheduleResponse; | ||
import com.example.backend.domain.schedule.service.ScheduleService; | ||
import com.example.backend.global.jwt.CustomUserDetails; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.http.HttpStatus; | ||
import org.springframework.http.ResponseEntity; | ||
import org.springframework.security.core.annotation.AuthenticationPrincipal; | ||
import org.springframework.web.bind.annotation.*; | ||
import java.util.List; | ||
|
||
|
||
@RestController | ||
@RequestMapping("/api/schedule") | ||
@RequiredArgsConstructor | ||
public class ScheduleController { | ||
|
||
private final ScheduleService scheduleService; | ||
|
||
@PostMapping | ||
public ResponseEntity<ScheduleResponse> createSchedule( | ||
@AuthenticationPrincipal CustomUserDetails customUserDetails, | ||
@RequestBody ScheduleRequest request | ||
) { | ||
ScheduleResponse response = scheduleService.createSchedule(customUserDetails.getUsername(), request); | ||
return new ResponseEntity<>(response, HttpStatus.CREATED); | ||
} | ||
|
||
@GetMapping("/{scheduleId}") | ||
public ResponseEntity<ScheduleResponse> getSchedule(@PathVariable Long scheduleId) { | ||
ScheduleResponse response = scheduleService.getSchedule(scheduleId); | ||
return ResponseEntity.ok(response); | ||
} | ||
|
||
@GetMapping("/manager") | ||
public ResponseEntity<List<ScheduleResponse>> getAllSchedules( | ||
@AuthenticationPrincipal CustomUserDetails customUserDetails | ||
) { | ||
List<ScheduleResponse> responseList = scheduleService.getAllSchedules(customUserDetails.getUsername()); | ||
return ResponseEntity.ok(responseList); | ||
} | ||
|
||
@PutMapping("/{scheduleId}") | ||
public ResponseEntity<ScheduleResponse> updateSchedule( | ||
@PathVariable Long scheduleId, | ||
@RequestBody ScheduleRequest request | ||
) { | ||
ScheduleResponse response = scheduleService.updateSchedule(scheduleId, request); | ||
return ResponseEntity.ok(response); | ||
} | ||
@DeleteMapping("/{scheduleId}") | ||
public ResponseEntity<Void> deleteSchedule(@PathVariable Long scheduleId) { | ||
scheduleService.deleteSchedule(scheduleId); | ||
return ResponseEntity.ok().build(); | ||
} | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.example.backend.domain.schedule.dto.request; | ||
|
||
import com.fasterxml.jackson.annotation.JsonFormat; | ||
import lombok.*; | ||
|
||
import java.time.LocalDateTime; | ||
|
||
@Data | ||
@Builder | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
public class ScheduleRequest { | ||
private Long userId; | ||
private String title; | ||
private String content; | ||
|
||
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") | ||
private LocalDateTime startDate; | ||
|
||
@JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss") | ||
private LocalDateTime endDate; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
package com.example.backend.domain.schedule.dto.response; | ||
|
||
import lombok.AllArgsConstructor; | ||
import lombok.Builder; | ||
import lombok.Data; | ||
import lombok.NoArgsConstructor; | ||
import java.time.LocalDateTime; | ||
|
||
@Data | ||
@Builder | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
public class ScheduleResponse { | ||
private Long scheduleId; | ||
private Long managerId; | ||
private Long userId; | ||
private String title; | ||
private String content; | ||
private LocalDateTime startDate; | ||
private LocalDateTime endDate; | ||
private LocalDateTime createdAt; | ||
private LocalDateTime updatedAt; | ||
private boolean activated; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
package com.example.backend.domain.schedule.entity; | ||
|
||
import com.example.backend.domain.managers.entity.Managers; | ||
import com.example.backend.domain.users.entity.Users; | ||
import lombok.*; | ||
import javax.persistence.*; | ||
import java.time.LocalDateTime; | ||
|
||
@Entity | ||
@Getter | ||
@Setter | ||
@Builder | ||
@AllArgsConstructor | ||
@NoArgsConstructor | ||
public class Schedule { | ||
@Id | ||
@GeneratedValue(strategy = GenerationType.IDENTITY) | ||
private Long scheduleId; | ||
|
||
@ManyToOne | ||
@JoinColumn(name = "user_id") | ||
private Users user; | ||
|
||
@ManyToOne | ||
@JoinColumn(name = "manager_id") | ||
private Managers manager; | ||
private String title; | ||
private String content; | ||
private LocalDateTime startDate; | ||
private LocalDateTime endDate; | ||
private LocalDateTime createdAt; | ||
private LocalDateTime updatedAt; | ||
private boolean activated; | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
package com.example.backend.domain.schedule.repository; | ||
|
||
import com.example.backend.domain.schedule.entity.Schedule; | ||
import com.example.backend.domain.managers.entity.Managers; | ||
import org.springframework.data.jpa.repository.JpaRepository; | ||
import org.springframework.stereotype.Repository; | ||
import java.util.List; | ||
@Repository | ||
public interface ScheduleRepository extends JpaRepository<Schedule, Long> { | ||
List<Schedule> findByManager(Managers manager); | ||
} |
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.example.backend.domain.schedule.service; | ||
|
||
import com.example.backend.domain.schedule.dto.request.ScheduleRequest; | ||
import com.example.backend.domain.schedule.dto.response.ScheduleResponse; | ||
import java.util.List; | ||
public interface ScheduleService { | ||
ScheduleResponse createSchedule(String username, ScheduleRequest request); | ||
ScheduleResponse updateSchedule(Long scheduleId, ScheduleRequest request); | ||
ScheduleResponse getSchedule(Long scheduleId); | ||
List<ScheduleResponse> getAllSchedules(String username); | ||
void deleteSchedule(Long scheduleId); | ||
} |