Skip to content

Commit e3d46f9

Browse files
authored
feat(repository): repository 레포지토리 삭제 구현
feat(repository): repository 레포지토리 삭제 구현
2 parents 1344bc3 + 1180f65 commit e3d46f9

File tree

8 files changed

+42
-7
lines changed

8 files changed

+42
-7
lines changed

backend/src/main/java/com/backend/domain/analysis/controller/AnalysisController.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
import com.backend.domain.repository.entity.Repositories;
1010
import com.backend.domain.repository.entity.RepositoryLanguage;
1111
import com.backend.domain.repository.service.RepositoryService;
12+
import com.backend.global.exception.BusinessException;
13+
import com.backend.global.exception.ErrorCode;
1214
import com.backend.global.response.ApiResponse;
1315
import lombok.RequiredArgsConstructor;
1416
import org.springframework.http.ResponseEntity;

backend/src/main/java/com/backend/domain/analysis/repository/AnalysisResultRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@
99

1010
@Repository
1111
public interface AnalysisResultRepository extends JpaRepository <AnalysisResult, Long>{
12-
Optional<AnalysisResult> findByRepositories_Id(Long repositoryId);
12+
Optional<AnalysisResult> findByRepositoriesId(Long repositoryId);
1313
}

backend/src/main/java/com/backend/domain/analysis/service/AnalysisService.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,6 @@ private String[] parseGitHubUrl(String githubUrl) {
5757

5858
// AnalysisRresult에서 repository id로 분석 결과 찾기
5959
public Optional<AnalysisResult> findAnalysisResultByRepositoryId (Long RepositoryId){
60-
return analysisResultRepository.findByRepositories_Id(RepositoryId);
60+
return analysisResultRepository.findByRepositoriesId(RepositoryId);
6161
}
6262
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package com.backend.domain.repository.controller;
2+
3+
import com.backend.domain.repository.entity.Repositories;
4+
import com.backend.domain.repository.service.RepositoryService;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.web.bind.annotation.*;
7+
8+
@RestController
9+
@RequiredArgsConstructor
10+
@RequestMapping("/api/repository")
11+
public class RepositoriseController {
12+
private final RepositoryService repositoryService;
13+
14+
// 리포지토리 삭제
15+
@DeleteMapping("/delete/{repositoriesId}")
16+
public void deleteRepository(@PathVariable("repositoriesId") Long repositoriesId){
17+
repositoryService.delete(repositoriesId);
18+
}
19+
}

backend/src/main/java/com/backend/domain/repository/entity/Repositories.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.backend.domain.repository.entity;
22

3+
import com.backend.domain.analysis.entity.AnalysisResult;
34
import com.backend.domain.user.entity.User;
45
import com.backend.global.entity.BaseEntity;
56
import jakarta.persistence.*;
@@ -24,6 +25,9 @@ public class Repositories extends BaseEntity {
2425
@JoinColumn(name = "user_id", nullable = false)
2526
private User user;
2627

28+
@OneToMany(mappedBy = "repositories", cascade = CascadeType.ALL, orphanRemoval = true)
29+
private List<AnalysisResult> analysisResults = new ArrayList<>();
30+
2731
@Column(nullable = false)
2832
private String name;
2933

backend/src/main/java/com/backend/domain/repository/service/RepositoryService.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,20 +5,23 @@
55
import com.backend.domain.repository.entity.Language;
66
import com.backend.domain.repository.entity.Repositories;
77
import com.backend.domain.repository.repository.RepositoryJpaRepository;
8+
import com.backend.global.exception.BusinessException;
9+
import com.backend.global.exception.ErrorCode;
810
import com.backend.domain.repository.service.fetcher.GitHubDataFetcher;
911
import com.backend.domain.repository.service.mapper.ReadmeInfoMapper;
1012
import com.backend.domain.repository.service.mapper.RepositoriesMapper;
1113
import com.backend.domain.repository.service.mapper.RepositoryInfoMapper;
1214
import com.backend.domain.user.entity.User;
1315
import com.backend.domain.user.repository.UserRepository;
14-
import com.backend.global.exception.BusinessException;
15-
import com.backend.global.exception.ErrorCode;
1616
import lombok.RequiredArgsConstructor;
1717
import lombok.extern.slf4j.Slf4j;
1818
import org.springframework.stereotype.Service;
1919
import org.springframework.transaction.annotation.Transactional;
2020

2121
import java.util.List;
22+
import java.util.Optional;
23+
24+
import static com.backend.global.exception.ErrorCode.GITHUB_REPO_NOT_FOUND;
2225

2326
@Slf4j
2427
@Service
@@ -114,7 +117,13 @@ public List<Language> findLanguagesByRepisotryId(Long gitRepositoryId){
114117
}
115118

116119
// repostiroy 삭제
117-
public void delete(Repositories gitRepository){
118-
repositoryJpaRepository.delete(gitRepository);
120+
public void delete(Long repositoriesId){
121+
Optional<Repositories> optionalRepository = repositoryJpaRepository.findById(repositoriesId);
122+
if(optionalRepository.isPresent()){
123+
Repositories targetRepository = optionalRepository.get();
124+
repositoryJpaRepository.delete(targetRepository);
125+
}else{
126+
throw new BusinessException(ErrorCode.GITHUB_REPO_NOT_FOUND);
127+
}
119128
}
120129
}

backend/src/main/java/com/backend/global/exception/ErrorCode.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ public enum ErrorCode {
1616
// ========== analysis 도메인 에러 ==========
1717
INVALID_GITHUB_URL("A001", HttpStatus.BAD_REQUEST, "올바른 GitHub 저장소 URL이 아닙니다."),
1818
INVALID_REPOSITORY_PATH("A002", HttpStatus.BAD_REQUEST, "저장소 URL 형식이 잘못되었습니다. 예: https://github.com/{owner}/{repo}"),
19+
ANALYSIS_NOT_FOUND("A003", HttpStatus.BAD_REQUEST, "분석 결과를 찾을 수 없습니다."),
1920

2021
// ========== repository 도메인 에러 ==========
2122
GITHUB_REPO_NOT_FOUND("G001", HttpStatus.BAD_REQUEST, "GitHub 저장소를 찾을 수 없습니다."),

backend/src/main/resources/application-dev.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,4 @@ spring:
2525

2626
jpa:
2727
hibernate:
28-
ddl-auto: update
28+
ddl-auto: create

0 commit comments

Comments
 (0)