From b929a2305c1651892915a132c52f7a5b19ec3c4c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B8=EC=A4=80?= <74056843+sejoon00@users.noreply.github.com> Date: Sat, 8 Feb 2025 16:41:12 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[fix/#36]=20swagger=20=EC=84=9C=EB=B2=84=20?= =?UTF-8?q?url=20=EC=84=A0=ED=83=9D=20=EA=B0=80=EB=8A=A5=ED=95=98=EA=B2=8C?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/ChildProblemMapperImpl.java | 2 +- .../service/mapper/ProblemMapperImpl.java | 2 +- .../domain/problemset/domain/QProblemSet.java | 54 +++++++++++++++++++ .../domain/publish/domain/QPublish.java | 49 +++++++++++++++++ .../config/properties/PropertiesConfig.java | 4 +- .../global/config/swagger/SwaggerConfig.java | 20 ++++++- .../properties/swagger/SwaggerProperties.java | 15 ++++++ src/main/resources/application-dev.yml | 9 ++++ src/main/resources/application-local.yml | 5 ++ src/main/resources/application-prod.yml | 9 ++++ 10 files changed, 165 insertions(+), 4 deletions(-) create mode 100644 src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java create mode 100644 src/main/generated/com/moplus/moplus_server/domain/publish/domain/QPublish.java create mode 100644 src/main/java/com/moplus/moplus_server/global/properties/swagger/SwaggerProperties.java diff --git a/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java b/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java index 53469fa..e764eac 100644 --- a/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java +++ b/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ChildProblemMapperImpl.java @@ -10,7 +10,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2025-01-31T02:55:57+0900", + date = "2025-02-08T16:27:45+0900", comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.10 (JetBrains s.r.o.)" ) @Component diff --git a/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java b/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java index ba945c8..21c19b6 100644 --- a/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java +++ b/src/main/generated/com/moplus/moplus_server/domain/problem/service/mapper/ProblemMapperImpl.java @@ -12,7 +12,7 @@ @Generated( value = "org.mapstruct.ap.MappingProcessor", - date = "2025-01-31T02:55:56+0900", + date = "2025-02-08T16:27:45+0900", comments = "version: 1.6.3, compiler: javac, environment: Java 17.0.10 (JetBrains s.r.o.)" ) @Component diff --git a/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java new file mode 100644 index 0000000..f3b8747 --- /dev/null +++ b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java @@ -0,0 +1,54 @@ +package com.moplus.moplus_server.domain.problemset.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; +import com.querydsl.core.types.dsl.PathInits; + + +/** + * QProblemSet is a Querydsl query type for ProblemSet + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProblemSet extends EntityPathBase { + + private static final long serialVersionUID = -499971265L; + + public static final QProblemSet problemSet = new QProblemSet("problemSet"); + + public final com.moplus.moplus_server.global.common.QBaseEntity _super = new com.moplus.moplus_server.global.common.QBaseEntity(this); + + public final EnumPath confirmStatus = createEnum("confirmStatus", ProblemSetConfirmStatus.class); + + //inherited + public final DateTimePath createdDate = _super.createdDate; + + public final NumberPath id = createNumber("id", Long.class); + + public final BooleanPath isDeleted = createBoolean("isDeleted"); + + public final StringPath name = createString("name"); + + public final ListPath problemIds = this.createList("problemIds", com.moplus.moplus_server.domain.problem.domain.problem.ProblemId.class, com.moplus.moplus_server.domain.problem.domain.problem.QProblemId.class, PathInits.DIRECT2); + + //inherited + public final DateTimePath updatedDate = _super.updatedDate; + + public QProblemSet(String variable) { + super(ProblemSet.class, forVariable(variable)); + } + + public QProblemSet(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QProblemSet(PathMetadata metadata) { + super(ProblemSet.class, metadata); + } + +} + diff --git a/src/main/generated/com/moplus/moplus_server/domain/publish/domain/QPublish.java b/src/main/generated/com/moplus/moplus_server/domain/publish/domain/QPublish.java new file mode 100644 index 0000000..41676a4 --- /dev/null +++ b/src/main/generated/com/moplus/moplus_server/domain/publish/domain/QPublish.java @@ -0,0 +1,49 @@ +package com.moplus.moplus_server.domain.publish.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; + + +/** + * QPublish is a Querydsl query type for Publish + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QPublish extends EntityPathBase { + + private static final long serialVersionUID = 1565569153L; + + public static final QPublish publish = new QPublish("publish"); + + public final com.moplus.moplus_server.global.common.QBaseEntity _super = new com.moplus.moplus_server.global.common.QBaseEntity(this); + + //inherited + public final DateTimePath createdDate = _super.createdDate; + + public final NumberPath id = createNumber("id", Long.class); + + public final NumberPath problemSetId = createNumber("problemSetId", Long.class); + + public final DatePath publishedDate = createDate("publishedDate", java.time.LocalDate.class); + + //inherited + public final DateTimePath updatedDate = _super.updatedDate; + + public QPublish(String variable) { + super(Publish.class, forVariable(variable)); + } + + public QPublish(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QPublish(PathMetadata metadata) { + super(Publish.class, metadata); + } + +} + diff --git a/src/main/java/com/moplus/moplus_server/global/config/properties/PropertiesConfig.java b/src/main/java/com/moplus/moplus_server/global/config/properties/PropertiesConfig.java index f616ece..07dde35 100644 --- a/src/main/java/com/moplus/moplus_server/global/config/properties/PropertiesConfig.java +++ b/src/main/java/com/moplus/moplus_server/global/config/properties/PropertiesConfig.java @@ -1,11 +1,13 @@ package com.moplus.moplus_server.global.config.properties; import com.moplus.moplus_server.global.properties.jwt.JwtProperties; +import com.moplus.moplus_server.global.properties.swagger.SwaggerProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.context.annotation.Configuration; @EnableConfigurationProperties({ - JwtProperties.class + JwtProperties.class, + SwaggerProperties.class }) @Configuration public class PropertiesConfig { diff --git a/src/main/java/com/moplus/moplus_server/global/config/swagger/SwaggerConfig.java b/src/main/java/com/moplus/moplus_server/global/config/swagger/SwaggerConfig.java index f532118..63543a2 100644 --- a/src/main/java/com/moplus/moplus_server/global/config/swagger/SwaggerConfig.java +++ b/src/main/java/com/moplus/moplus_server/global/config/swagger/SwaggerConfig.java @@ -1,28 +1,46 @@ package com.moplus.moplus_server.global.config.swagger; +import com.moplus.moplus_server.global.properties.swagger.SwaggerProperties; import io.swagger.v3.oas.models.Components; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.security.SecurityRequirement; import io.swagger.v3.oas.models.security.SecurityScheme; +import io.swagger.v3.oas.models.servers.Server; +import java.util.List; +import java.util.stream.Collectors; +import lombok.RequiredArgsConstructor; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration +@RequiredArgsConstructor public class SwaggerConfig { + private final SwaggerProperties swaggerProperties; + private SecurityScheme createAPIKeyScheme() { return new SecurityScheme().type(SecurityScheme.Type.HTTP) .bearerFormat("JWT") .scheme("Bearer"); } + private List addServerUrl() { + return swaggerProperties.servers().stream() + .map(serverProp -> new Server() + .url(serverProp.url()) + .description(serverProp.description())) + .collect(Collectors.toList()); + } + @Bean public OpenAPI openAPI() { + return new OpenAPI().addSecurityItem(new SecurityRequirement().addList("JWT")) .components(new Components().addSecuritySchemes("JWT", createAPIKeyScheme())) .info(new Info().title("모플 API 명세서") .description("모플 API 명세서 입니다") - .version("v0.0.1")); + .version("v0.0.1")) + .servers(addServerUrl()); } } diff --git a/src/main/java/com/moplus/moplus_server/global/properties/swagger/SwaggerProperties.java b/src/main/java/com/moplus/moplus_server/global/properties/swagger/SwaggerProperties.java new file mode 100644 index 0000000..d6a3a96 --- /dev/null +++ b/src/main/java/com/moplus/moplus_server/global/properties/swagger/SwaggerProperties.java @@ -0,0 +1,15 @@ +package com.moplus.moplus_server.global.properties.swagger; + +import java.util.List; +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties(prefix = "swagger") +public record SwaggerProperties( + List servers +) { + public static record ServerProperties( + String url, + String description + ) { + } +} diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml index 1055bfb..0fbcc02 100644 --- a/src/main/resources/application-dev.yml +++ b/src/main/resources/application-dev.yml @@ -20,6 +20,15 @@ spring: connection-timeout: 3000 # 30 seconds in milliseconds keepalive-time: 600000 # 5 minutes in milliseconds +swagger: + servers: + - url: https://dev.mopl.kr + description: "mopl dev https 서버입니다." + - url: http://dev.mopl.kr + description: "mopl dev http 서버입니다." + - url: http://localhost:8080 + description: "mopl local 서버입니다." + logging: level: root: ERROR \ No newline at end of file diff --git a/src/main/resources/application-local.yml b/src/main/resources/application-local.yml index 72180bd..ea4aef2 100644 --- a/src/main/resources/application-local.yml +++ b/src/main/resources/application-local.yml @@ -10,3 +10,8 @@ spring: use_sql_comments: true hibernate: ddl-auto: update + +swagger: + servers: + - url: http://localhost:8080 + description: "mopl local 서버입니다." \ No newline at end of file diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml index 1f05607..1778d4d 100644 --- a/src/main/resources/application-prod.yml +++ b/src/main/resources/application-prod.yml @@ -15,6 +15,15 @@ spring: connection-timeout: 3000 # 30 seconds in milliseconds keepalive-time: 600000 # 5 minutes in milliseconds +swagger: + servers: + - url: https://prod.mopl.kr + description: "mopl prod https 서버입니다." + - url: http://prod.mopl.kr + description: "mopl prod http 서버입니다." + - url: http://localhost:8080 + description: "mopl local 서버입니다." + logging: level: root: ERROR \ No newline at end of file From 40420a3947806304960ebf5ff3ebc7291dbf3d5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EB=B0=95=EC=84=B8=EC=A4=80?= <74056843+sejoon00@users.noreply.github.com> Date: Sat, 8 Feb 2025 16:55:30 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[fix/#36]=20test=20yml=EC=97=90=EB=8F=84=20?= =?UTF-8?q?swagger=20=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/problemset/domain/QProblemSet.java | 21 ++++++++--- .../domain/problemset/domain/QTitle.java | 37 +++++++++++++++++++ src/test/resources/application-h2test.yml | 5 +++ 3 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QTitle.java diff --git a/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java index f3b8747..3f0c463 100644 --- a/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java +++ b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java @@ -18,6 +18,8 @@ public class QProblemSet extends EntityPathBase { private static final long serialVersionUID = -499971265L; + private static final PathInits INITS = PathInits.DIRECT2; + public static final QProblemSet problemSet = new QProblemSet("problemSet"); public final com.moplus.moplus_server.global.common.QBaseEntity _super = new com.moplus.moplus_server.global.common.QBaseEntity(this); @@ -31,23 +33,32 @@ public class QProblemSet extends EntityPathBase { public final BooleanPath isDeleted = createBoolean("isDeleted"); - public final StringPath name = createString("name"); - public final ListPath problemIds = this.createList("problemIds", com.moplus.moplus_server.domain.problem.domain.problem.ProblemId.class, com.moplus.moplus_server.domain.problem.domain.problem.QProblemId.class, PathInits.DIRECT2); + public final QTitle title; + //inherited public final DateTimePath updatedDate = _super.updatedDate; public QProblemSet(String variable) { - super(ProblemSet.class, forVariable(variable)); + this(ProblemSet.class, forVariable(variable), INITS); } public QProblemSet(Path path) { - super(path.getType(), path.getMetadata()); + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); } public QProblemSet(PathMetadata metadata) { - super(ProblemSet.class, metadata); + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProblemSet(PathMetadata metadata, PathInits inits) { + this(ProblemSet.class, metadata, inits); + } + + public QProblemSet(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.title = inits.isInitialized("title") ? new QTitle(forProperty("title")) : null; } } diff --git a/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QTitle.java b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QTitle.java new file mode 100644 index 0000000..d6ad4db --- /dev/null +++ b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QTitle.java @@ -0,0 +1,37 @@ +package com.moplus.moplus_server.domain.problemset.domain; + +import static com.querydsl.core.types.PathMetadataFactory.*; + +import com.querydsl.core.types.dsl.*; + +import com.querydsl.core.types.PathMetadata; +import javax.annotation.processing.Generated; +import com.querydsl.core.types.Path; + + +/** + * QTitle is a Querydsl query type for Title + */ +@Generated("com.querydsl.codegen.DefaultEmbeddableSerializer") +public class QTitle extends BeanPath { + + private static final long serialVersionUID = -324250916L; + + public static final QTitle title = new QTitle("title"); + + public final StringPath value = createString("value"); + + public QTitle(String variable) { + super(Title.class, forVariable(variable)); + } + + public QTitle(Path<? extends Title> path) { + super(path.getType(), path.getMetadata()); + } + + public QTitle(PathMetadata metadata) { + super(Title.class, metadata); + } + +} + diff --git a/src/test/resources/application-h2test.yml b/src/test/resources/application-h2test.yml index 6095227..10c6a0f 100644 --- a/src/test/resources/application-h2test.yml +++ b/src/test/resources/application-h2test.yml @@ -36,3 +36,8 @@ cloud: cors-allowed-origins: http://localhost:8080, http://localhost:3000, + +swagger: + servers: + - url: http://localhost:8080 + description: "mopl local 서버입니다." \ No newline at end of file