Skip to content

Commit

Permalink
Merge branch 'develop' into features/member
Browse files Browse the repository at this point in the history
# Conflicts:
#	src/test/java/org/guzzing/studayserver/domain/academy/service/AcademyServiceTest.java
  • Loading branch information
wonu606 committed Nov 5, 2023
2 parents 05daba6 + a0eec9a commit 0afcf76
Show file tree
Hide file tree
Showing 88 changed files with 12,837 additions and 320 deletions.
4 changes: 2 additions & 2 deletions .github/workflows/ci-develop.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@ name: develop branch Build to EC2
on:
pull_request:
branches: [ "develop" ]

workflow_dispatch:

env:
BUCKET_NAME: team09-cicd-bucket
PROJECT_NAME: studay
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/develop-cicd.yml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ on:
branches: [ "develop" ]

workflow_dispatch:

env:
BUCKET_NAME: team09-cicd-bucket
PROJECT_NAME: studay
Expand Down
22 changes: 3 additions & 19 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -60,26 +60,10 @@ dependencies {
implementation group: 'io.jsonwebtoken', name: 'jjwt-impl', version: '0.11.2'
implementation group: 'io.jsonwebtoken', name: 'jjwt-jackson', version: '0.11.2'

// spatial type
implementation 'org.hibernate:hibernate-spatial:6.3.1.Final'

}
tasks.named('test') {
useJUnitPlatform()
}

swaggerSources {
sample {
setInputFile(file("${project.buildDir}/api-spec/openapi3.yml"))
}
}

openapi3 {
setServer("http://localhost:8080") // API 요청을 보낼 서버 주소 설정
title = "restdocs-swagger API Documentation" // API 문서 제목
description = "Spring REST Docs with SwaggerUI." // API 문서 설명
version = "0.0.1" // API 문서 버전
outputFileNamePrefix = "openapi3"
format = "yml" // API 문서 출력 포맷 (default = JSON)
}




12 changes: 6 additions & 6 deletions root project 'studayserver'/resources/main/static/docs/index.css
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}

*,
*:before,
*:after {
box-sizing: inherit;
box-sizing: inherit;
}

body {
margin: 0;
background: #fafafa;
margin: 0;
background: #fafafa;
}
78 changes: 42 additions & 36 deletions root project 'studayserver'/resources/main/static/docs/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,27 @@
<head>
<meta charset="UTF-8">
<title>Swagger UI</title>
<link href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="./swagger-ui.css" >
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16" />
<link
href="https://fonts.googleapis.com/css?family=Open+Sans:400,700|Source+Code+Pro:300,600|Titillium+Web:400,600,700"
rel="stylesheet">
<link rel="stylesheet" type="text/css" href="./swagger-ui.css">
<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32"/>
<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16"/>
<style>
html
{
html {
box-sizing: border-box;
overflow: -moz-scrollbars-vertical;
overflow-y: scroll;
}

*,
*:before,
*:after
{
*:after {
box-sizing: inherit;
}

body {
margin:0;
margin: 0;
background: #fafafa;
}
</style>
Expand All @@ -34,23 +35,28 @@
<svg xmlns="http://www.w3.org/2000/svg" style="position:absolute;width:0;height:0">
<defs>
<symbol viewBox="0 0 20 20" id="unlocked">
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
<path
d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V6h2v-.801C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8z"></path>
</symbol>

<symbol viewBox="0 0 20 20" id="locked">
<path d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
<path
d="M15.8 8H14V5.6C14 2.703 12.665 1 10 1 7.334 1 6 2.703 6 5.6V8H4c-.553 0-1 .646-1 1.199V17c0 .549.428 1.139.951 1.307l1.197.387C5.672 18.861 6.55 19 7.1 19h5.8c.549 0 1.428-.139 1.951-.307l1.196-.387c.524-.167.953-.757.953-1.306V9.199C17 8.646 16.352 8 15.8 8zM12 8H8V5.199C8 3.754 8.797 3 10 3c1.203 0 2 .754 2 2.199V8z"/>
</symbol>

<symbol viewBox="0 0 20 20" id="close">
<path d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
<path
d="M14.348 14.849c-.469.469-1.229.469-1.697 0L10 11.819l-2.651 3.029c-.469.469-1.229.469-1.697 0-.469-.469-.469-1.229 0-1.697l2.758-3.15-2.759-3.152c-.469-.469-.469-1.228 0-1.697.469-.469 1.228-.469 1.697 0L10 8.183l2.651-3.031c.469-.469 1.228-.469 1.697 0 .469.469.469 1.229 0 1.697l-2.758 3.152 2.758 3.15c.469.469.469 1.229 0 1.698z"/>
</symbol>

<symbol viewBox="0 0 20 20" id="large-arrow">
<path d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
<path
d="M13.25 10L6.109 2.58c-.268-.27-.268-.707 0-.979.268-.27.701-.27.969 0l7.83 7.908c.268.271.268.709 0 .979l-7.83 7.908c-.268.271-.701.27-.969 0-.268-.269-.268-.707 0-.979L13.25 10z"/>
</symbol>

<symbol viewBox="0 0 20 20" id="large-arrow-down">
<path d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
<path
d="M17.418 6.109c.272-.268.709-.268.979 0s.271.701 0 .969l-7.908 7.83c-.27.268-.707.268-.979 0l-7.908-7.83c-.27-.268-.27-.701 0-.969.271-.268.709-.268.979 0L10 13.25l7.418-7.141z"/>
</symbol>


Expand All @@ -67,29 +73,29 @@

<div id="swagger-ui"></div>

<script src="./swagger-ui-bundle.js"> </script>
<script src="./swagger-ui-standalone-preset.js"> </script>
<script src="./swagger-ui-bundle.js"></script>
<script src="./swagger-ui-standalone-preset.js"></script>
<script>
window.onload = function() {

SwaggerUIBundle({
spec: window.swaggerSpec, // (mandatory) use source of swagger-spec.js
validatorUrl: null, // (mandatory) disable validator
docExpansion: 'full', // expand by default

dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})

}
window.onload = function () {

SwaggerUIBundle({
spec: window.swaggerSpec, // (mandatory) use source of swagger-spec.js
validatorUrl: null, // (mandatory) disable validator
docExpansion: 'full', // expand by default

dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
})

}
</script>
<script src="./swagger-spec.js">/* (mandatory) load source */</script>
</body>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
<!doctype html>
<html lang="en-US">
<head>
<title>Swagger UI: OAuth2 Redirect</title>
<title>Swagger UI: OAuth2 Redirect</title>
</head>
<body>
<script>
'use strict';
function run () {

function run() {
var oauth2 = window.opener.swaggerUIRedirectOauth2;
var sentState = oauth2.state;
var redirectUrl = oauth2.redirectUrl;
Expand All @@ -19,7 +20,9 @@
}

arr = qp.split("&");
arr.forEach(function (v,i,_arr) { _arr[i] = '"' + v.replace('=', '":"') + '"';});
arr.forEach(function (v, i, _arr) {
_arr[i] = '"' + v.replace('=', '":"') + '"';
});
qp = qp ? JSON.parse('{' + arr.join() + '}',
function (key, value) {
return key === "" ? value : decodeURIComponent(value);
Expand All @@ -29,9 +32,9 @@
isValid = qp.state === sentState;

if ((
oauth2.auth.schema.get("flow") === "accessCode" ||
oauth2.auth.schema.get("flow") === "authorizationCode" ||
oauth2.auth.schema.get("flow") === "authorization_code"
oauth2.auth.schema.get("flow") === "accessCode" ||
oauth2.auth.schema.get("flow") === "authorizationCode" ||
oauth2.auth.schema.get("flow") === "authorization_code"
) && !oauth2.auth.code) {
if (!isValid) {
oauth2.errCb({
Expand All @@ -49,20 +52,23 @@
} else {
let oauthErrorMsg;
if (qp.error) {
oauthErrorMsg = "["+qp.error+"]: " +
(qp.error_description ? qp.error_description+ ". " : "no accessCode received from the server. ") +
(qp.error_uri ? "More info: "+qp.error_uri : "");
oauthErrorMsg = "[" + qp.error + "]: " +
(qp.error_description ? qp.error_description + ". "
: "no accessCode received from the server. ") +
(qp.error_uri ? "More info: " + qp.error_uri : "");
}

oauth2.errCb({
authId: oauth2.auth.name,
source: "auth",
level: "error",
message: oauthErrorMsg || "[Authorization failed]: no accessCode received from the server"
message: oauthErrorMsg
|| "[Authorization failed]: no accessCode received from the server"
});
}
} else {
oauth2.callback({auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
oauth2.callback(
{auth: oauth2.auth, token: qp, isValid: isValid, redirectUrl: redirectUrl});
}
window.close();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,20 +1,20 @@
window.onload = function() {
//<editor-fold desc="Changeable Configuration Block">
window.onload = function () {
//<editor-fold desc="Changeable Configuration Block">

// the following lines will be replaced by docker/configurator, when it runs in a docker-container
window.ui = SwaggerUIBundle({
url: "https://petstore.swagger.io/v2/swagger.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
});
// the following lines will be replaced by docker/configurator, when it runs in a docker-container
window.ui = SwaggerUIBundle({
url: "https://petstore.swagger.io/v2/swagger.json",
dom_id: '#swagger-ui',
deepLinking: true,
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIStandalonePreset
],
plugins: [
SwaggerUIBundle.plugins.DownloadUrl
],
layout: "StandaloneLayout"
});

//</editor-fold>
//</editor-fold>
};
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
window.swaggerSpec={
"openapi" : "3.0.1",
"info" : {
"title" : "restdocs-swagger API Documentation",
"description" : "Spring REST Docs with SwaggerUI.",
"version" : "0.0.1"
},
"servers" : [ {
"url" : "http://localhost:8080"
} ],
"tags" : [ ],
"paths" : { },
"components" : {
"schemas" : { }
}
window.swaggerSpec = {
"openapi": "3.0.1",
"info": {
"title": "restdocs-swagger API Documentation",
"description": "Spring REST Docs with SwaggerUI.",
"version": "0.0.1"
},
"servers": [{
"url": "http://localhost:8080"
}],
"tags": [],
"paths": {},
"components": {
"schemas": {}
}
}
11,092 changes: 11,090 additions & 2 deletions root project 'studayserver'/resources/main/static/docs/swagger-ui.css

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
package org.guzzing.studayserver.domain.academy.controller;

import jakarta.validation.Valid;
import org.guzzing.studayserver.domain.academy.controller.dto.request.AcademiesByLocationRequest;
import org.guzzing.studayserver.domain.academy.controller.dto.request.AcademiesByNameRequest;
import org.guzzing.studayserver.domain.academy.controller.dto.response.AcademiesByLocationResponses;
import org.guzzing.studayserver.domain.academy.controller.dto.response.AcademiesByNameResponses;
import org.guzzing.studayserver.domain.academy.controller.dto.response.AcademyGetResponse;
import org.guzzing.studayserver.domain.academy.service.AcademyService;

import org.guzzing.studayserver.domain.academy.service.dto.result.AcademiesByLocationResults;
import org.guzzing.studayserver.domain.academy.service.dto.result.AcademiesByNameResults;
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping(value = "/academies")
Expand All @@ -26,7 +29,28 @@ public AcademyController(AcademyService academyService) {
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<AcademyGetResponse> getAcademy(@PathVariable Long academyId) {
return ResponseEntity.status(HttpStatus.OK)
.body(AcademyGetResponse.form(academyService.getAcademy(academyId)));
.body(AcademyGetResponse.from(academyService.getAcademy(academyId)));
}

@GetMapping(
path = "/complexes",
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<AcademiesByLocationResponses> findByLocation(@ModelAttribute @Valid AcademiesByLocationRequest request) {
AcademiesByLocationResults academiesByLocation =
academyService.findAcademiesByLocation(AcademiesByLocationRequest.to(request));

return ResponseEntity.status(HttpStatus.OK)
.body(AcademiesByLocationResponses.from(academiesByLocation));
}

@GetMapping(
path = "/search",
produces = MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<AcademiesByNameResponses> findByName(@ModelAttribute @Valid AcademiesByNameRequest request) {
AcademiesByNameResults academiesByNameResults = academyService.findAcademiesByName(AcademiesByNameRequest.to(request));

return ResponseEntity.status(HttpStatus.OK)
.body(AcademiesByNameResponses.from(academiesByNameResults));
}

}
Loading

0 comments on commit 0afcf76

Please sign in to comment.