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..3f0c463 --- /dev/null +++ b/src/main/generated/com/moplus/moplus_server/domain/problemset/domain/QProblemSet.java @@ -0,0 +1,65 @@ +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; + + 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); + + 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 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) { + this(ProblemSet.class, forVariable(variable), INITS); + } + + public QProblemSet(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProblemSet(PathMetadata 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/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<Publish> { + + 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<java.time.LocalDateTime> createdDate = _super.createdDate; + + public final NumberPath<Long> id = createNumber("id", Long.class); + + public final NumberPath<Long> problemSetId = createNumber("problemSetId", Long.class); + + public final DatePath<java.time.LocalDate> publishedDate = createDate("publishedDate", java.time.LocalDate.class); + + //inherited + public final DateTimePath<java.time.LocalDateTime> updatedDate = _super.updatedDate; + + public QPublish(String variable) { + super(Publish.class, forVariable(variable)); + } + + public QPublish(Path<? extends Publish> 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<Server> 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<ServerProperties> 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 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