Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

이벤트 조회,작성,수정,삭제 api #11

Merged
merged 2 commits into from
Oct 24, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 44 additions & 0 deletions src/main/java/com/pjw/retry_view/controller/EventController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
package com.pjw.retry_view.controller;

import com.pjw.retry_view.dto.EventDTO;
import com.pjw.retry_view.request.WriteEventRequest;
import com.pjw.retry_view.service.EventService;
import jakarta.validation.Valid;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/admin/event")
public class EventController {
private final EventService eventService;

public EventController(EventService eventService){
this.eventService = eventService;
}

@GetMapping
public List<EventDTO> getEventList(){
return eventService.getEventList();
}

@GetMapping("/{id}")
public EventDTO getEvent(@PathVariable(name = "id")Long id){
return eventService.getEvent(id);
}

@PostMapping
public EventDTO writeEvent(@RequestBody @Valid WriteEventRequest event){
return eventService.saveEvent(event);
}

@PutMapping
public EventDTO updateEvent(@RequestBody @Valid WriteEventRequest event){
return eventService.updateEvent(event);
}

@DeleteMapping("/{id}")
public void deleteEvent(@PathVariable(name = "id")Long id){
eventService.deleteEvent(id);
}
}
41 changes: 41 additions & 0 deletions src/main/java/com/pjw/retry_view/dto/EventDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.pjw.retry_view.dto;

import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.time.ZonedDateTime;
import java.util.List;

@Getter
@Setter
@NoArgsConstructor
public class EventDTO {
private Long id;
private String content;
private Long viewCount;
private ZonedDateTime startAt;
private ZonedDateTime endAt;

private Long createdBy;
private ZonedDateTime createdAt;
private Long updatedBy;
private ZonedDateTime updatedAt;

private List<EventImageDTO> images;

@Builder
public EventDTO(Long id, String content, Long viewCount, ZonedDateTime startAt, ZonedDateTime endAt, Long createdBy, ZonedDateTime createdAt, Long updatedBy, ZonedDateTime updatedAt, List<EventImageDTO> images) {
this.id = id;
this.content = content;
this.viewCount = viewCount;
this.startAt = startAt;
this.endAt = endAt;
this.createdBy = createdBy;
this.createdAt = createdAt;
this.updatedBy = updatedBy;
this.updatedAt = updatedAt;
this.images = images;
}
}
50 changes: 50 additions & 0 deletions src/main/java/com/pjw/retry_view/dto/EventImageDTO.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package com.pjw.retry_view.dto;

import com.pjw.retry_view.entity.BoardImage;
import com.pjw.retry_view.entity.EventImage;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.time.ZonedDateTime;

@Getter
@Setter
@NoArgsConstructor
public class EventImageDTO {
private Long id;
private Long eventId;
private String imageUrl;

private Long createdBy;
private ZonedDateTime createdAt;
private Long updatedBy;
private ZonedDateTime updatedAt;

public static EventImageDTO getImageDTO(String imageUrl){
return EventImageDTO.builder().imageUrl(imageUrl).build();
}

public EventImage toEntity(){
return EventImage.builder()
.id(id)
.imageUrl(imageUrl)
.createdBy(createdBy)
.createdAt(createdAt)
.updatedBy(updatedBy)
.updatedAt(updatedAt)
.build();
}

@Builder
public EventImageDTO(Long id, Long eventId, String imageUrl, Long createdBy, ZonedDateTime createdAt, Long updatedBy, ZonedDateTime updatedAt) {
this.id = id;
this.eventId = eventId;
this.imageUrl = imageUrl;
this.createdBy = createdBy;
this.createdAt = createdAt;
this.updatedBy = updatedBy;
this.updatedAt = updatedAt;
}
}
102 changes: 102 additions & 0 deletions src/main/java/com/pjw/retry_view/entity/Event.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package com.pjw.retry_view.entity;

import com.pjw.retry_view.dto.EventDTO;
import com.pjw.retry_view.dto.EventImageDTO;
import com.pjw.retry_view.request.WriteBoardRequest;
import com.pjw.retry_view.request.WriteEventRequest;
import jakarta.persistence.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.hibernate.annotations.ColumnDefault;
import org.springframework.util.CollectionUtils;

import java.time.ZonedDateTime;
import java.util.ArrayList;
import java.util.List;

@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "event")
public class Event {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "content")
private String content;
@Column(name = "view_count")
@ColumnDefault("0")
private Long viewCount;
@Column(name = "start_at")
private ZonedDateTime startAt;
@Column(name = "end_at")
private ZonedDateTime endAt;
@OneToMany(mappedBy = "event", fetch = FetchType.LAZY)
private List<EventImage> eventImage = new ArrayList<>();

@Column(name = "created_by")
private Long createdBy;
@Column(name = "created_at")
private ZonedDateTime createdAt;
@Column(name = "updated_by")
private Long updatedBy;
@Column(name = "updated_at")
private ZonedDateTime updatedAt;

public EventDTO toDTO(){
return EventDTO.builder()
.id(id)
.content(content)
.viewCount(viewCount)
.startAt(startAt)
.endAt(endAt)
.images(imagesToDTO())
.createdBy(createdBy)
.createdAt(createdAt)
.updatedBy(updatedBy)
.updatedAt(updatedAt)
.build();
}

public void updateEvent(String content, ZonedDateTime startAt, ZonedDateTime endAt, Long updatedBy){
this.content =content;
this.startAt = startAt;
this.endAt = endAt;
this.updatedBy = updatedBy;
this.updatedAt = ZonedDateTime.now();
}

public static Event newOne(String content, ZonedDateTime startAt, ZonedDateTime endAt, Long createdBy){
return Event.builder()
.content(content)
.viewCount(0L)
.startAt(startAt)
.endAt(endAt)
.eventImage(new ArrayList<EventImage>())
.createdBy(createdBy)
.createdAt(ZonedDateTime.now())
.build();
}

@Builder
public Event(Long id, String content, Long viewCount, ZonedDateTime startAt, ZonedDateTime endAt, List<EventImage> eventImage, Long createdBy, ZonedDateTime createdAt, Long updatedBy, ZonedDateTime updatedAt) {
this.id = id;
this.content = content;
this.viewCount = viewCount;
this.startAt = startAt;
this.endAt = endAt;
this.eventImage = eventImage;
this.createdBy = createdBy;
this.createdAt = createdAt;
this.updatedBy = updatedBy;
this.updatedAt = updatedAt;
}

private List<EventImageDTO> imagesToDTO(){
if(CollectionUtils.isEmpty(eventImage)) return null;
return eventImage.stream().map(EventImage::toDTO).toList();
}
}
85 changes: 85 additions & 0 deletions src/main/java/com/pjw/retry_view/entity/EventImage.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,85 @@
package com.pjw.retry_view.entity;

import com.pjw.retry_view.dto.EventImageDTO;
import jakarta.persistence.*;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.time.ZonedDateTime;

@Getter
@Setter
@NoArgsConstructor
@Entity
@Table(name = "event_image")
public class EventImage {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "event_id")
private Event event;
@Column(name = "image_url")
private String imageUrl;

@Column(name = "created_by")
private Long createdBy;
@Column(name = "created_at")
private ZonedDateTime createdAt;
@Column(name = "updated_by")
private Long updatedBy;
@Column(name = "updated_at")
private ZonedDateTime updatedAt;

public void changeEvent(Event event){
event.getEventImage().add(this);
this.event = event;
}

public static EventImage newOne(Long imageId, String imageUrl, Long createdBy){
return EventImage.builder()
.id(imageId)
.imageUrl(imageUrl)
.createdBy(createdBy)
.createdAt(ZonedDateTime.now())
.build();
}

@Builder
public EventImage(Long id, Event event, String imageUrl, Long createdBy, ZonedDateTime createdAt, Long updatedBy, ZonedDateTime updatedAt) {
this.id = id;
this.event = event;
this.imageUrl = imageUrl;
this.createdBy = createdBy;
this.createdAt = createdAt;
this.updatedBy = updatedBy;
this.updatedAt = updatedAt;
}

public EventImageDTO toDTO(){
return EventImageDTO.builder()
.id(id)
.eventId(event.getId())
.imageUrl(imageUrl)
.createdBy(createdBy)
.createdAt(createdAt)
.updatedBy(updatedBy)
.updatedAt(updatedAt)
.build();
}

@Override
public String toString() {
return "EventImage{" +
"id=" + id +
", event=" + event +
", imageUrl='" + imageUrl + '\'' +
", createdBy=" + createdBy +
", createdAt=" + createdAt +
", updatedBy=" + updatedBy +
", updatedAt=" + updatedAt +
'}';
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.pjw.retry_view.repository;

import com.pjw.retry_view.entity.EventImage;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

@Repository
public interface EventImageRepository extends JpaRepository<EventImage, Long> {
public List<EventImage> findAll();
public List<EventImage> findByEventId(Long eventId);
public EventImage save(EventImage EventImage);
@Modifying
@Query("delete from EventImage ei where ei.id in :ids")
public void deleteByIds(@Param("ids") List<Long> ids);
}
16 changes: 16 additions & 0 deletions src/main/java/com/pjw/retry_view/repository/EventRepository.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.pjw.retry_view.repository;

import com.pjw.retry_view.entity.Event;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.Optional;

@Repository
public interface EventRepository extends JpaRepository<Event, Long> {
public List<Event> findAll();
public Optional<Event> findById(Long id);
public Event save(Event Event);
public void deleteById(Long id);
}
Loading
Loading