From 3debc20cfb2709858299bab852d767d4225d59dc Mon Sep 17 00:00:00 2001 From: bungetan Date: Mon, 10 Apr 2023 16:22:45 +0900 Subject: [PATCH 1/6] Create blank.yml --- .github/workflows/blank.yml | 79 +++++++++++++++++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 .github/workflows/blank.yml diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml new file mode 100644 index 0000000..a4b5dd9 --- /dev/null +++ b/.github/workflows/blank.yml @@ -0,0 +1,79 @@ +# This is a basic workflow to help you get started with Actions + +name: CI + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "main" branch + push: + branches: [ "main" ] + pull_request: + branches: [ "main" ] + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + # This workflow contains a single job called "build" + build: + runs-on: ubuntu-latest + + # Steps represent a sequence of tasks that will be executed as part of the job + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + - name: Bulid with Gradle + uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 + with : + arguments: bulid + - uses: actions/upload-artifact@v3 + with: + name: jar + path: bulid/libs + + send-jar: + needs: build + runs-on: ubuntu-latest + steps: + - name: Download jar + uses: actions/download-artifact@v3 + with: + name: jar + - name: Send jar to remote server + uses: appleboy/scp-action@master + with: + host: 34.64.204.61 + username: dadd55 + source: "real_coding_server.jar" + target: "/home/dadd55" + key: ${{ secrets.PRIVATE_KEY }} + + run-app: + needs: send-jar + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Move deploy.sh + uses: appleboy/scp-action@master + with: + host: 34.64.204.61 + username: dadd55 + source: "deploy.sh" + target: "/home/dadd55" + key: ${{ secrets.PRIVATE_KEY }} + - name: Execute script + uses: appleboy/ssh-action@master + with: + username: dadd55 + host: 34.64.204.61 + key: ${{ secrets.PRIVATE_KEY }} + script_stop: true + script: cd /home/dadd55 && chmod +x deploy.sh && ./deploy.sh + From dc62857dc1d5631ccbd9ddde6de4f1dab0711342 Mon Sep 17 00:00:00 2001 From: bungetan Date: Mon, 10 Apr 2023 16:25:48 +0900 Subject: [PATCH 2/6] Update blank.yml --- .github/workflows/blank.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml index a4b5dd9..c620278 100644 --- a/.github/workflows/blank.yml +++ b/.github/workflows/blank.yml @@ -50,7 +50,7 @@ jobs: with: host: 34.64.204.61 username: dadd55 - source: "real_coding_server.jar" + source: "real_coding_server-0.0.1-SNAPSHOT.jar" target: "/home/dadd55" key: ${{ secrets.PRIVATE_KEY }} From 94a365fb0732d2eac0204c4f5749adedcf7ff222 Mon Sep 17 00:00:00 2001 From: bungetan Date: Mon, 10 Apr 2023 16:29:11 +0900 Subject: [PATCH 3/6] Update blank.yml --- .github/workflows/blank.yml | 57 ++++++++++++++++++------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml index c620278..c689af8 100644 --- a/.github/workflows/blank.yml +++ b/.github/workflows/blank.yml @@ -1,46 +1,44 @@ -# This is a basic workflow to help you get started with Actions +# This workflow uses actions that are not certified by GitHub. +# They are provided by a third-party and are governed by +# separate terms of service, privacy policy, and support +# documentation. +# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time +# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle -name: CI +name: Deployment -# Controls when the workflow will run on: - # Triggers the workflow on push or pull request events but only for the "main" branch + workflow_dispatch: push: branches: [ "main" ] - pull_request: - branches: [ "main" ] - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: +permissions: + contents: read -# A workflow run is made up of one or more jobs that can run sequentially or in parallel jobs: - # This workflow contains a single job called "build" build: runs-on: ubuntu-latest - - # Steps represent a sequence of tasks that will be executed as part of the job steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - - name: Bulid with Gradle - uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 - with : - arguments: bulid - - uses: actions/upload-artifact@v3 - with: - name: jar - path: bulid/libs - + - name: Checkout + uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + java-version: '17' + distribution: 'temurin' + - name: Build with Gradle + uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 + with: + arguments: build + - uses: actions/upload-artifact@v3 + with: + name: jar + path: build/libs + send-jar: needs: build runs-on: ubuntu-latest - steps: + steps: - name: Download jar uses: actions/download-artifact@v3 with: @@ -76,4 +74,3 @@ jobs: key: ${{ secrets.PRIVATE_KEY }} script_stop: true script: cd /home/dadd55 && chmod +x deploy.sh && ./deploy.sh - From de7843b2452ba1fae57cda9a1d2a3889bd657be5 Mon Sep 17 00:00:00 2001 From: bungetan Date: Mon, 10 Apr 2023 16:43:43 +0900 Subject: [PATCH 4/6] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 32187be..1e66f4f 100644 --- a/README.md +++ b/README.md @@ -37,3 +37,5 @@ WebMvcConfig에서 CORS를 위해 추가한 파일이라고 알아주시면 될 글솜씨가 없어 간단히 적었지만, 토이프로젝트를 하다보면 정말 자주 마주치는 문제 중 하나가 CORS입니다!!! 기본적인 지식이기도 하니 시간되실 때 아래의 블로그를 읽어보셔도 좋을 것 같습니다 📌 https://it-eldorado.tistory.com/163 + +silsil Bagenya From eaf6ca95682dab5cb7ef648b7da1a9cc6f642aa9 Mon Sep 17 00:00:00 2001 From: bungetan Date: Mon, 10 Apr 2023 17:00:19 +0900 Subject: [PATCH 5/6] Delete deployment.yml --- .github/workflows/deployment.yml | 76 -------------------------------- 1 file changed, 76 deletions(-) delete mode 100644 .github/workflows/deployment.yml diff --git a/.github/workflows/deployment.yml b/.github/workflows/deployment.yml deleted file mode 100644 index 2be1220..0000000 --- a/.github/workflows/deployment.yml +++ /dev/null @@ -1,76 +0,0 @@ -# This workflow uses actions that are not certified by GitHub. -# They are provided by a third-party and are governed by -# separate terms of service, privacy policy, and support -# documentation. -# This workflow will build a Java project with Gradle and cache/restore any dependencies to improve the workflow execution time -# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-java-with-gradle - -name: Deployment - -on: - workflow_dispatch: - push: - branches: [ "main" ] - -permissions: - contents: read - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Set up JDK 17 - uses: actions/setup-java@v3 - with: - java-version: '17' - distribution: 'temurin' - - name: Build with Gradle - uses: gradle/gradle-build-action@67421db6bd0bf253fb4bd25b31ebb98943c375e1 - with: - arguments: build - - uses: actions/upload-artifact@v3 - with: - name: jar - path: build/libs - - send-jar: - needs: build - runs-on: ubuntu-latest - steps: - - name: Download jar - uses: actions/download-artifact@v3 - with: - name: jar - - name: Send jar to remote server - uses: appleboy/scp-action@master - with: - host: {나의 public ip} - username: {나의 userName} - source: "real_coding_server-0.0.1-SNAPSHOT.jar" - target: "/home/{나의 userName}" - key: ${{ secrets.PRIVATE_KEY }} - - run-app: - needs: send-jar - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Move deploy.sh - uses: appleboy/scp-action@master - with: - host: {나의 public ip} - username: {나의 userName} - source: "deploy.sh" - target: "/home/{나의 userName}" - key: ${{ secrets.PRIVATE_KEY }} - - name: Execute script - uses: appleboy/ssh-action@master - with: - username: {나의 userName} - host: {나의 public ip} - key: ${{ secrets.PRIVATE_KEY }} - script_stop: true - script: cd /home/{나의 userName} && chmod +x deploy.sh && ./deploy.sh From 70616325ad4251bce38dcb4627a68379c9f46759 Mon Sep 17 00:00:00 2001 From: bungetan Date: Mon, 17 Apr 2023 18:54:56 +0900 Subject: [PATCH 6/6] realCodingPr --- .../controller/PostController.java | 1 + .../controller/ProjectController.java | 45 ++++++++++++++++++ .../service/ProjectService.java | 46 +++++++++++++++++++ 3 files changed, 92 insertions(+) create mode 100644 src/main/java/com/cnu/real_coding_server/controller/ProjectController.java create mode 100644 src/main/java/com/cnu/real_coding_server/service/ProjectService.java diff --git a/src/main/java/com/cnu/real_coding_server/controller/PostController.java b/src/main/java/com/cnu/real_coding_server/controller/PostController.java index c31c90e..56678f5 100644 --- a/src/main/java/com/cnu/real_coding_server/controller/PostController.java +++ b/src/main/java/com/cnu/real_coding_server/controller/PostController.java @@ -3,6 +3,7 @@ import com.cnu.real_coding_server.entity.Post; import com.cnu.real_coding_server.model.request.PostRequest; import com.cnu.real_coding_server.service.PostService; +import com.cnu.real_coding_server.service.ProjectService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/com/cnu/real_coding_server/controller/ProjectController.java b/src/main/java/com/cnu/real_coding_server/controller/ProjectController.java new file mode 100644 index 0000000..1ba6c5c --- /dev/null +++ b/src/main/java/com/cnu/real_coding_server/controller/ProjectController.java @@ -0,0 +1,45 @@ +package com.cnu.real_coding_server.controller; + +import com.cnu.real_coding_server.entity.Project; +import com.cnu.real_coding_server.model.request.ProjectRequest; +import com.cnu.real_coding_server.service.ProjectService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/projects") +@RequiredArgsConstructor +public class ProjectController { + private final ProjectService projectService; + + @PostMapping + public ResponseEntity createProject(@RequestBody ProjectRequest projectRequest) { + return ResponseEntity.ok(projectService.createProject(projectRequest)); + } + + @GetMapping + public ResponseEntity> getProjects() { + return ResponseEntity.ok(projectService.getProjects()); + } + + @GetMapping("/{projectId}") + public ResponseEntity getProject(@PathVariable("projectId") Integer projectId) { + return ResponseEntity.ok(projectService.getProject(projectId).orElse(null)); + } + + @PutMapping("/{projectId}") + public ResponseEntity updateProject(@PathVariable("projectId")Integer projectId, + @RequestBody ProjectRequest projectRequest) { + return ResponseEntity.ok(projectService.updateProject(projectId, projectRequest).orElse(null)); + } + + @DeleteMapping("/{projectId}") + public ResponseEntity deleteProject(@PathVariable("projectId") Integer projectId) { + projectService.deleteProject(projectId); + + return ResponseEntity.noContent().build(); + } +} diff --git a/src/main/java/com/cnu/real_coding_server/service/ProjectService.java b/src/main/java/com/cnu/real_coding_server/service/ProjectService.java new file mode 100644 index 0000000..f7c8616 --- /dev/null +++ b/src/main/java/com/cnu/real_coding_server/service/ProjectService.java @@ -0,0 +1,46 @@ +package com.cnu.real_coding_server.service; + +import com.cnu.real_coding_server.entity.Project; +import com.cnu.real_coding_server.model.request.ProjectRequest; +import com.cnu.real_coding_server.repository.ProjectRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Optional; + +@Service +@RequiredArgsConstructor +public class ProjectService { + + private final ProjectRepository projectRepository; + + public Project createProject(ProjectRequest projectRequest) { + return projectRepository.save(projectRequest.toEntity()); + } + + public List getProjects() { + return projectRepository.findAll(); + } + + public Optional getProject(Integer projectId) { + return projectRepository.findById(projectId); + } + + public Optional updateProject(Integer projectId, ProjectRequest projectRequest) { + return projectRepository.findById(projectId) + .map(project -> { + project.setTitle(projectRequest.getTitle()); + project.setStartDate(projectRequest.getStartDate()); + project.setEndDate(projectRequest.getEndDate()); + project.setSummary(projectRequest.getSummary()); + project.setDescription(projectRequest.getDescription()); + return projectRepository.save(project); + }); + } + + public void deleteProject(Integer projectId) { + projectRepository.findById(projectId) + .ifPresent(projectRepository::delete); + } +}