Skip to content

Commit b01fbef

Browse files
authored
Merge pull request #33 from Nexters/dev
1차 MVP 개선 배포
2 parents 85810b1 + b120ab9 commit b01fbef

File tree

25 files changed

+546
-30
lines changed

25 files changed

+546
-30
lines changed

.github/workflows/cd.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,10 @@ jobs:
4343
echo "${{ secrets.PROPERTIES_PROD }}" > ./application-prod.properties
4444
shell: bash
4545

46+
- name: Add FCM service account JSON key
47+
run: |
48+
echo "${{ secrets.FCM_SERVICE_ACCOUNT_JSON }}" > ./resources/donmani-5d3f6-firebase-adminsdk-fbsvc-22a01911fd.json
49+
4650
#test를 제외한 프로젝트 빌드
4751
- name: Build With Gradle
4852
run: ./gradlew build -x test
@@ -81,5 +85,5 @@ jobs:
8185
docker stop donmani
8286
docker rm donmani
8387
sudo docker pull ${{ secrets.DOCKER_HUB_USERNAME }}/donmani
84-
docker run -d --name donmani -p 8080:8080 ${{ secrets.DOCKER_HUB_USERNAME }}/donmani
88+
docker run -d --name donmani --network donmani-network -p 8080:8080 ${{ secrets.DOCKER_HUB_USERNAME }}/donmani
8589
docker images -f "dangling=true" -q | xargs -r docker rmi -f

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,4 +37,7 @@ out/
3737
.vscode/
3838

3939
### Log ###
40-
**/*.log
40+
**/*.log
41+
42+
# Firebase Admin SDK JSON Key
43+
/src/main/resources/*.json

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ dependencies {
3434
testImplementation 'org.springframework.boot:spring-boot-starter-test'
3535
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
3636
implementation 'org.springdoc:springdoc-openapi-starter-webmvc-ui:2.8.4'
37+
implementation 'com.google.firebase:firebase-admin:9.4.3'
3738
}
3839

3940
tasks.named('test') {

src/main/java/donmani/donmani_server/DonmaniServerApplication.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33
import org.springframework.boot.SpringApplication;
44
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
import org.springframework.scheduling.annotation.EnableScheduling;
56

67
@SpringBootApplication
8+
@EnableScheduling
79
public class DonmaniServerApplication {
810

911
public static void main(String[] args) {
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package donmani.donmani_server.appversion.controller;
2+
3+
import org.springframework.http.HttpStatus;
4+
import org.springframework.http.ResponseEntity;
5+
import org.springframework.web.bind.annotation.GetMapping;
6+
import org.springframework.web.bind.annotation.PathVariable;
7+
import org.springframework.web.bind.annotation.RestController;
8+
9+
import donmani.donmani_server.appversion.entity.PlatformType;
10+
import donmani.donmani_server.appversion.dto.AppVersionDTO;
11+
import donmani.donmani_server.appversion.service.AppVersionService;
12+
import donmani.donmani_server.common.httpStatus.HttpStatusDTO;
13+
import lombok.RequiredArgsConstructor;
14+
15+
@RestController
16+
@RequiredArgsConstructor
17+
public class AppVersionController {
18+
private final AppVersionService appVersionService;
19+
20+
@GetMapping("api/v1/appVersion/{platformType}")
21+
public ResponseEntity<HttpStatusDTO<AppVersionDTO>> getLatestVersion(@PathVariable PlatformType platformType) {
22+
AppVersionDTO appVersion = appVersionService.getLatestVersionByPlatform((platformType));
23+
return ResponseEntity.ok(
24+
HttpStatusDTO.response(HttpStatus.OK.value(), "성공", appVersion));
25+
}
26+
}
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package donmani.donmani_server.appversion.dto;
2+
3+
import donmani.donmani_server.appversion.entity.PlatformType;
4+
import lombok.AllArgsConstructor;
5+
import lombok.Builder;
6+
import lombok.Getter;
7+
import lombok.NoArgsConstructor;
8+
import lombok.Setter;
9+
10+
@Getter
11+
@Setter
12+
@NoArgsConstructor
13+
@AllArgsConstructor
14+
@Builder
15+
public class AppVersionDTO {
16+
private PlatformType platformType;
17+
private String latestVersion;
18+
private String forcedUpdateYn;
19+
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package donmani.donmani_server.appversion.entity;
2+
3+
import jakarta.persistence.Entity;
4+
import jakarta.persistence.EnumType;
5+
import jakarta.persistence.Enumerated;
6+
import jakarta.persistence.GeneratedValue;
7+
import jakarta.persistence.GenerationType;
8+
import jakarta.persistence.Id;
9+
import lombok.AllArgsConstructor;
10+
import lombok.Getter;
11+
import lombok.NoArgsConstructor;
12+
import lombok.Setter;
13+
14+
@Entity
15+
@Getter
16+
@Setter
17+
@NoArgsConstructor
18+
@AllArgsConstructor
19+
public class AppVersion {
20+
21+
@Id
22+
@GeneratedValue(strategy = GenerationType.IDENTITY)
23+
private Long id;
24+
25+
@Enumerated(EnumType.STRING)
26+
private PlatformType platformType;
27+
28+
private String latestVersion;
29+
30+
private String forceUpdateYn; // 강제 업데이트 여부
31+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
package donmani.donmani_server.appversion.entity;
2+
3+
public enum PlatformType {
4+
Android,
5+
iOS
6+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package donmani.donmani_server.appversion.repository;
2+
3+
import org.springframework.data.jpa.repository.JpaRepository;
4+
import org.springframework.data.jpa.repository.Query;
5+
import org.springframework.data.repository.query.Param;
6+
7+
import donmani.donmani_server.appversion.entity.PlatformType;
8+
import donmani.donmani_server.appversion.entity.AppVersion;
9+
10+
public interface AppVersionRepository extends JpaRepository<AppVersion, Long> {
11+
@Query("SELECT a FROM AppVersion a WHERE a.platformType = :platformType ORDER BY a.id DESC LIMIT 1")
12+
AppVersion findLatestVersionByPlatform(@Param("platformType") PlatformType platformType);
13+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package donmani.donmani_server.appversion.service;
2+
3+
import org.springframework.stereotype.Service;
4+
5+
import donmani.donmani_server.appversion.entity.PlatformType;
6+
import donmani.donmani_server.appversion.repository.AppVersionRepository;
7+
import donmani.donmani_server.appversion.dto.AppVersionDTO;
8+
import donmani.donmani_server.appversion.entity.AppVersion;
9+
import lombok.RequiredArgsConstructor;
10+
11+
@Service
12+
@RequiredArgsConstructor
13+
public class AppVersionService {
14+
15+
private final AppVersionRepository appVersionRepository;
16+
17+
public AppVersionDTO getLatestVersionByPlatform(PlatformType platformType) {
18+
AppVersion appVersion = appVersionRepository.findLatestVersionByPlatform(platformType);
19+
20+
return AppVersionDTO.builder()
21+
.platformType(appVersion.getPlatformType())
22+
.latestVersion(appVersion.getLatestVersion())
23+
.forcedUpdateYn(appVersion.getForceUpdateYn())
24+
.build();
25+
}
26+
}

0 commit comments

Comments
 (0)