Skip to content

Commit

Permalink
M3-238 Feat : app version post, get api 작성
Browse files Browse the repository at this point in the history
  • Loading branch information
tkdals802 committed Aug 10, 2024
1 parent 8293be5 commit fa9c88a
Show file tree
Hide file tree
Showing 6 changed files with 171 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.m3pro.groundflip.controller;

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import com.m3pro.groundflip.domain.dto.Response;
import com.m3pro.groundflip.domain.dto.version.VersionRequest;
import com.m3pro.groundflip.domain.dto.version.VersionResponse;
import com.m3pro.groundflip.service.VersionService;

import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;

@RestController
@RequiredArgsConstructor
@RequestMapping("/api")
@Tag(name = "version", description = "앱 버전 API")
public class VersionController {
private final VersionService versionService;

@Operation(summary = "앱 버전 post", description = "현재 앱 버전을 등록한다.")
@PostMapping("/version")
public Response<?> postVersion(
@Parameter(description = "버전 저장", required = true)
@RequestBody VersionRequest versionRequest
) {
versionService.postVersion(versionRequest);
return Response.createSuccessWithNoData();
}

@Operation(summary = "앱 버전 get", description = "현재 앱 버전을 가져온다.")
@GetMapping("/version")
public Response<VersionResponse> getVersion() {
return Response.createSuccess(versionService.getVersion());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.m3pro.groundflip.domain.dto.version;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(title = "앱 버전 등록")
public class VersionRequest {
@Schema(description = "앱 버전", example = "1.0.1")
private String version;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.m3pro.groundflip.domain.dto.version;

import java.time.LocalDateTime;

import io.swagger.v3.oas.annotations.media.Schema;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@Schema(title = "앱 버전 get")
public class VersionResponse {
@Schema(description = "앱 버전", example = "1.0.5")
private String version;

@Schema(description = "생성날짜", example = "2024-08-11 01:37:22.372436")
private LocalDateTime createdDate;
}
39 changes: 39 additions & 0 deletions src/main/java/com/m3pro/groundflip/domain/entity/AppVersion.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.m3pro.groundflip.domain.entity;

import java.time.LocalDateTime;

import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.EntityListeners;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Getter
@Entity
@Table(name = "app_version")
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor
@Builder
@EntityListeners(AuditingEntityListener.class)
public class AppVersion {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "app_version_id")
private Long id;

private String version;

@CreatedDate
@Column(name = "created_date", updatable = false)
private LocalDateTime createdDate;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.m3pro.groundflip.repository;

import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;

import com.m3pro.groundflip.domain.entity.AppVersion;

public interface AppVersionRepository extends CrudRepository<AppVersion, Long> {

@Query(value = """
SELECT av.*
FROM app_version av
ORDER BY av.created_date DESC
limit 1
""", nativeQuery = true)
AppVersion findLaestetVersion();
}
35 changes: 35 additions & 0 deletions src/main/java/com/m3pro/groundflip/service/VersionService.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.m3pro.groundflip.service;

import org.springframework.stereotype.Service;

import com.m3pro.groundflip.domain.dto.version.VersionRequest;
import com.m3pro.groundflip.domain.dto.version.VersionResponse;
import com.m3pro.groundflip.domain.entity.AppVersion;
import com.m3pro.groundflip.repository.AppVersionRepository;

import jakarta.transaction.Transactional;
import lombok.RequiredArgsConstructor;

@Service
@RequiredArgsConstructor
public class VersionService {
private final AppVersionRepository appVersionRepository;

@Transactional
public void postVersion(VersionRequest versionRequest) {
appVersionRepository.save(
AppVersion.builder()
.version(versionRequest.getVersion())
.build()
);
}

public VersionResponse getVersion() {
AppVersion appVersion = appVersionRepository.findLaestetVersion();

return VersionResponse.builder()
.version(appVersion.getVersion())
.createdDate(appVersion.getCreatedDate())
.build();
}
}

0 comments on commit fa9c88a

Please sign in to comment.