Skip to content

Commit 50e5474

Browse files
committed
feat: 아티스트 공연 기록 저장
1 parent b8b72c4 commit 50e5474

4 files changed

Lines changed: 40 additions & 9 deletions

File tree

src/main/java/com/back/web7_9_codecrete_be/domain/artists/controller/ArtistsController.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,16 @@ public RsData<Void> deleteArtistLikes(
115115
return RsData.success("아티스트 찜 해제 성공", null);
116116
}
117117

118+
@Operation(summary = "아티스트 공연 기록 저장", description = "아티스트 id 와 공연 id 를 받아 해당 아티스트의 공연 기록을 저장합니다.")
119+
@PostMapping("/link/{artistId}/{concertId}")
120+
public RsData<Void> saveConcertArtist(
121+
@PathVariable Long artistId,
122+
@PathVariable Long concertId
123+
) {
124+
artistService.linkArtistConcert(artistId, concertId);
125+
return RsData.success("아티스트 공연 기록 저장 성공", null);
126+
}
127+
118128
@Operation(summary = "개인화된 공연 리스트 생성", description = "유저가 찜한 아티스트를 기반으로 공연 리스트를 생성합니다.")
119129
@PostMapping("/list")
120130
public void concertList() {}

src/main/java/com/back/web7_9_codecrete_be/domain/artists/entity/ArtistLike.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.back.web7_9_codecrete_be.domain.users.entity.User;
44
import jakarta.persistence.*;
5+
import lombok.AccessLevel;
56
import lombok.Getter;
67
import lombok.NoArgsConstructor;
78
import org.springframework.data.annotation.CreatedDate;
@@ -12,7 +13,7 @@
1213

1314
@Entity
1415
@Getter
15-
@NoArgsConstructor
16+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
1617
@EntityListeners(AuditingEntityListener.class)
1718
@Table(name = "artist_like")
1819
public class ArtistLike {
Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,14 @@
11
package com.back.web7_9_codecrete_be.domain.artists.entity;
22

3+
import com.back.web7_9_codecrete_be.domain.concerts.entity.Concert;
34
import jakarta.persistence.*;
5+
import lombok.AccessLevel;
46
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
58

69
@Entity
710
@Getter
11+
@NoArgsConstructor(access = AccessLevel.PROTECTED)
812
@Table(name = "concert_artist")
913
public class ConcertArtist {
1014
@Id
@@ -13,11 +17,15 @@ public class ConcertArtist {
1317
private long id;
1418

1519
@ManyToOne(fetch = FetchType.LAZY)
20+
@JoinColumn(name = "artist_id", nullable = false)
1621
private Artist artist;
1722

18-
// TODO : 추후 concert entity 보고 확인 예정 우선 주석 처리
19-
/*
2023
@ManyToOne(fetch = FetchType.LAZY)
24+
@JoinColumn(name = "concert_id", nullable = false)
2125
private Concert concert;
22-
*/
26+
27+
public ConcertArtist(Artist artist, Concert concert) {
28+
this.artist = artist;
29+
this.concert = concert;
30+
}
2331
}

src/main/java/com/back/web7_9_codecrete_be/domain/artists/service/ArtistService.java

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,16 +4,16 @@
44
import com.back.web7_9_codecrete_be.domain.artists.dto.response.ArtistListResponse;
55
import com.back.web7_9_codecrete_be.domain.artists.dto.response.ArtistDetailResponse;
66
import com.back.web7_9_codecrete_be.domain.artists.dto.response.SearchResponse;
7-
import com.back.web7_9_codecrete_be.domain.artists.entity.Artist;
8-
import com.back.web7_9_codecrete_be.domain.artists.entity.ArtistLike;
9-
import com.back.web7_9_codecrete_be.domain.artists.entity.ArtistType;
10-
import com.back.web7_9_codecrete_be.domain.artists.entity.Genre;
7+
import com.back.web7_9_codecrete_be.domain.artists.entity.*;
118
import com.back.web7_9_codecrete_be.domain.artists.repository.ArtistRepository;
129
import com.back.web7_9_codecrete_be.domain.artists.repository.ArtistLikeRepository;
10+
import com.back.web7_9_codecrete_be.domain.artists.repository.ConcertArtistRepository;
11+
import com.back.web7_9_codecrete_be.domain.concerts.entity.Concert;
12+
import com.back.web7_9_codecrete_be.domain.concerts.repository.ConcertRepository;
13+
import com.back.web7_9_codecrete_be.domain.concerts.service.ConcertService;
1314
import com.back.web7_9_codecrete_be.domain.users.entity.User;
1415
import com.back.web7_9_codecrete_be.global.error.code.ArtistErrorCode;
1516
import com.back.web7_9_codecrete_be.global.error.exception.BusinessException;
16-
import com.back.web7_9_codecrete_be.global.rq.Rq;
1717
import lombok.AccessLevel;
1818
import org.springframework.transaction.annotation.Transactional;
1919
import lombok.RequiredArgsConstructor;
@@ -29,6 +29,8 @@ public class ArtistService {
2929
private final ArtistRepository artistRepository;
3030
private final GenreService genreService;
3131
private final ArtistLikeRepository artistLikeRepository;
32+
private final ConcertArtistRepository concertArtistRepository;
33+
private final ConcertRepository concertRepository;
3234

3335
@Transactional(readOnly = true)
3436
public Artist findArtist(Long artistId) {
@@ -153,4 +155,14 @@ public void deleteLikeArtist(Long artistId, User user) {
153155
artist.decreaseLikeCount();
154156
}
155157

158+
@Transactional
159+
public void linkArtistConcert(Long artistId, Long concertId) {
160+
Artist artist = findArtist(artistId);
161+
Concert concert = concertRepository.findById(concertId)
162+
.orElseThrow();
163+
164+
concertArtistRepository.save(new ConcertArtist(artist, concert));
165+
}
166+
167+
156168
}

0 commit comments

Comments
 (0)