From c22d899cdfa5b1dd5873a8cefcb6e9e2cd558f86 Mon Sep 17 00:00:00 2001 From: mininiii <96100666+mininiii@users.noreply.github.com> Date: Mon, 10 Apr 2023 16:19:59 +0900 Subject: [PATCH 1/4] Create blank.yml --- .github/workflows/blank.yml | 76 +++++++++++++++++++++++++++++++++++++ 1 file changed, 76 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..df40c88 --- /dev/null +++ b/.github/workflows/blank.yml @@ -0,0 +1,76 @@ +# 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: 34.64.227.167 + username: didals0521 + source: "real_coding_server-0.0.1-SNAPSHOT.jar" + target: "/home/adulkid.kaya" + 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.227.167 + username: didals0521 + source: "deploy.sh" + target: "/home/{나의 userName}" + key: ${{ secrets.PRIVATE_KEY }} + - name: Execute script + uses: appleboy/ssh-action@master + with: + username: didals0521 + host: 34.64.227.167 + key: ${{ secrets.PRIVATE_KEY }} + script_stop: true + script: cd /home/didals0521 && chmod +x deploy.sh && ./deploy.sh From a24c328a9bcd402783ac9f66d9d1dfe899a89c26 Mon Sep 17 00:00:00 2001 From: mininiii <96100666+mininiii@users.noreply.github.com> Date: Mon, 10 Apr 2023 16:25:18 +0900 Subject: [PATCH 2/4] Update blank.yml --- .github/workflows/blank.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml index df40c88..62d32c3 100644 --- a/.github/workflows/blank.yml +++ b/.github/workflows/blank.yml @@ -49,7 +49,7 @@ jobs: host: 34.64.227.167 username: didals0521 source: "real_coding_server-0.0.1-SNAPSHOT.jar" - target: "/home/adulkid.kaya" + target: "/home/didals0521" key: ${{ secrets.PRIVATE_KEY }} run-app: @@ -64,7 +64,7 @@ jobs: host: 34.64.227.167 username: didals0521 source: "deploy.sh" - target: "/home/{나의 userName}" + target: "/home/didals0521" key: ${{ secrets.PRIVATE_KEY }} - name: Execute script uses: appleboy/ssh-action@master From 8d350d537cce0a3f52dfa2f90589ebe86bb66553 Mon Sep 17 00:00:00 2001 From: mininiii <96100666+mininiii@users.noreply.github.com> Date: Mon, 10 Apr 2023 16:44:35 +0900 Subject: [PATCH 3/4] Update blank.yml --- .github/workflows/blank.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/blank.yml b/.github/workflows/blank.yml index 62d32c3..ab15853 100644 --- a/.github/workflows/blank.yml +++ b/.github/workflows/blank.yml @@ -2,6 +2,7 @@ # 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 From 95052c021808b5be23214451907586854802bc12 Mon Sep 17 00:00:00 2001 From: mininiii Date: Mon, 17 Apr 2023 22:48:16 +0900 Subject: [PATCH 4/4] =?UTF-8?q?project=20CURD=20=EC=83=9D=EC=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/ProjectController.java | 47 ++++++++++++++++++ .../service/ProjectService.java | 48 +++++++++++++++++++ 2 files changed, 95 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/ProjectController.java b/src/main/java/com/cnu/real_coding_server/controller/ProjectController.java new file mode 100644 index 0000000..e9846b2 --- /dev/null +++ b/src/main/java/com/cnu/real_coding_server/controller/ProjectController.java @@ -0,0 +1,47 @@ +package com.cnu.real_coding_server.controller; + +import com.cnu.real_coding_server.entity.Post; +import com.cnu.real_coding_server.entity.Project; +import com.cnu.real_coding_server.model.request.PostRequest; +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, 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..24b9ee5 --- /dev/null +++ b/src/main/java/com/cnu/real_coding_server/service/ProjectService.java @@ -0,0 +1,48 @@ +package com.cnu.real_coding_server.service; + +import com.cnu.real_coding_server.entity.Post; +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.setSummary(projectRequest.getSummary()); + project.setDescription(projectRequest.getDescription()); + project.setStartDate(projectRequest.getStartDate()); + project.setEndDate(projectRequest.getEndDate()); + return projectRepository.save(project); + }); + } + + public void deleteProject(Integer projectId) { + projectRepository.findById(projectId) + .ifPresent(projectRepository::delete); + } + + +}