From e2b8c78704d7dc280f73bf4744a4ceb65e9651d6 Mon Sep 17 00:00:00 2001 From: 023-dev Date: Tue, 14 Jul 2026 19:51:55 +0900 Subject: [PATCH] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=EC=A0=9D=ED=8A=B8=20?= =?UTF-8?q?GitHub=20URL=20=EB=B0=8F=204=EA=B8=B0=20=EC=B9=B4=ED=85=8C?= =?UTF-8?q?=EA=B3=A0=EB=A6=AC=20=EC=B6=94=EA=B0=80=20(#589)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../support/domain/jectalk/controller/JectalkApiSpec.java | 2 +- .../support/domain/project/dto/ProjectDetailResponse.java | 2 ++ .../org/ject/support/domain/project/entity/Project.java | 6 +++++- .../db/migration/V34__add_github_url_to_project.sql | 2 ++ .../support/domain/project/service/ProjectServiceTest.java | 5 +++++ 5 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 src/main/resources/db/migration/V34__add_github_url_to_project.sql diff --git a/src/main/java/org/ject/support/domain/jectalk/controller/JectalkApiSpec.java b/src/main/java/org/ject/support/domain/jectalk/controller/JectalkApiSpec.java index e89b16de..00d539da 100644 --- a/src/main/java/org/ject/support/domain/jectalk/controller/JectalkApiSpec.java +++ b/src/main/java/org/ject/support/domain/jectalk/controller/JectalkApiSpec.java @@ -19,6 +19,6 @@ public interface JectalkApiSpec { ) Page findJectalks( @PageableDefault(size = 12) Pageable pageable, - @Parameter(description = "기수 (SEMESTER_1, SEMESTER_2, SEMESTER_3)", example = "SEMESTER_1") + @Parameter(description = "기수 (SEMESTER_1, SEMESTER_2, SEMESTER_3, SEMESTER_4)", example = "SEMESTER_1") @RequestParam(required = false) Project.Category category); } diff --git a/src/main/java/org/ject/support/domain/project/dto/ProjectDetailResponse.java b/src/main/java/org/ject/support/domain/project/dto/ProjectDetailResponse.java index 414f8a01..744251f5 100644 --- a/src/main/java/org/ject/support/domain/project/dto/ProjectDetailResponse.java +++ b/src/main/java/org/ject/support/domain/project/dto/ProjectDetailResponse.java @@ -18,6 +18,7 @@ public record ProjectDetailResponse( List badges, String description, String serviceUrl, + String githubUrl, ProjectIntroResponse bannerImageUrl, List sampleImageUrls, List descriptionImageUrls @@ -41,6 +42,7 @@ public static ProjectDetailResponse toResponse(Project project, .badges(project.getBadges()) .description(project.getDescription()) .serviceUrl(project.getServiceUrl()) + .githubUrl(project.getGithubUrl()) .bannerImageUrl(bannerImageUrl) .sampleImageUrls(sampleImageUrls) .descriptionImageUrls(descriptionImageUrls) diff --git a/src/main/java/org/ject/support/domain/project/entity/Project.java b/src/main/java/org/ject/support/domain/project/entity/Project.java index ba11b7a6..78614de8 100644 --- a/src/main/java/org/ject/support/domain/project/entity/Project.java +++ b/src/main/java/org/ject/support/domain/project/entity/Project.java @@ -67,6 +67,9 @@ public class Project extends BaseTimeEntity { @Column(length = 2083) private String serviceUrl; + @Column(length = 2083) + private String githubUrl; + @Column(length = 50, nullable = false) private String serviceType; @@ -90,7 +93,8 @@ public enum Category { SEMESTER_1(1, "1기"), SEMESTER_2(2, "2기"), - SEMESTER_3(3, "3기"); + SEMESTER_3(3, "3기"), + SEMESTER_4(4, "4기"); private final int order; private final String displayName; diff --git a/src/main/resources/db/migration/V34__add_github_url_to_project.sql b/src/main/resources/db/migration/V34__add_github_url_to_project.sql new file mode 100644 index 00000000..4bf70d1f --- /dev/null +++ b/src/main/resources/db/migration/V34__add_github_url_to_project.sql @@ -0,0 +1,2 @@ +ALTER TABLE project + ADD COLUMN github_url VARCHAR(2083) NULL AFTER service_url; diff --git a/src/test/java/org/ject/support/domain/project/service/ProjectServiceTest.java b/src/test/java/org/ject/support/domain/project/service/ProjectServiceTest.java index c72abe68..6067577f 100644 --- a/src/test/java/org/ject/support/domain/project/service/ProjectServiceTest.java +++ b/src/test/java/org/ject/support/domain/project/service/ProjectServiceTest.java @@ -62,6 +62,7 @@ void setUp() { .description("description") .thumbnailUrl("thumbnail.png") .serviceUrl("service.com") + .githubUrl("https://github.com/JECT-Study/project") .team(Team.builder().id(1L).name("team").semesterId(1L).build()) .projectIntros(List.of(serviceIntro1, serviceIntro2, serviceIntro3, devIntro1)) .build(); @@ -82,6 +83,7 @@ void setUp() { assertThat(result.endDate()).isEqualTo(project.getEndDate()); assertThat(result.description()).isEqualTo(project.getDescription()); assertThat(result.serviceUrl()).isEqualTo(project.getServiceUrl()); + assertThat(result.githubUrl()).isEqualTo(project.getGithubUrl()); assertThat(result.sampleImageUrls()).hasSize(3); assertThat(result.descriptionImageUrls()).hasSize(1); } @@ -148,6 +150,9 @@ void setUp() { assertThat(summary.categorySummaries().get(3).categoryName()).isEqualTo(Project.Category.SEMESTER_3.name()); assertThat(summary.categorySummaries().get(3).count()).isEqualTo(0L); + + assertThat(summary.categorySummaries().get(4).categoryName()).isEqualTo(Project.Category.SEMESTER_4.name()); + assertThat(summary.categorySummaries().get(4).count()).isEqualTo(0L); } private ProjectIntro createProjectIntro(Long id, String imageUrl, Category category, int sequence) {