From b7c5e275fa83a642222c6e31c9f0a22fca00f0af Mon Sep 17 00:00:00 2001 From: seheonnn Date: Tue, 30 Jan 2024 13:20:11 +0900 Subject: [PATCH] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20refactor:=20JPQL=20QueryDS?= =?UTF-8?q?L=EB=A1=9C=20=EB=B3=80=EA=B2=BD=20(#63)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ๐Ÿ™ˆ chore: QueryDsl ์„ค์ • * :recycle: refactor: QueryDsl ์ ์šฉ * ๐Ÿ™ˆchore : gitignore ์ถ”๊ฐ€ * ๐Ÿ™ˆchore : gitignore ์ถ”๊ฐ€ * :recycle: refactor: SonarLint ์ฝ”๋“œ ์Šค๋ฉœ ์ œ๊ฑฐ --- ".github/ISSUE_TEMPLATE/\342\234\250-feat.md" | 20 ----- .../ISSUE_TEMPLATE/\360\237\220\233-fix.md" | 20 ----- .gitignore | 1 + build.gradle | 27 +++++- http/test.http | 4 + .../announcement/entity/QAnnouncement.java | 71 ++++++++++++++++ .../entity/QAnnouncementAttachment.java | 55 +++++++++++++ .../entity/QAnnouncementImage.java | 55 +++++++++++++ .../organization/entity/QOrganization.java | 82 +++++++++++++++++++ .../entity/QOrganizationLink.java | 55 +++++++++++++ .../organization/entity/QOrganizationTag.java | 54 ++++++++++++ .../domain/organization/entity/QTag.java | 39 +++++++++ .../domain/propose/entity/QPropose.java | 82 +++++++++++++++++++ .../propose/entity/QProposeAttachment.java | 55 +++++++++++++ .../domain/report/entity/QReport.java | 44 ++++++++++ .../report/entity/QReportAttachment.java | 55 +++++++++++++ .../sponusbe/global/common/QBaseEntity.java | 39 +++++++++ .../propose/controller/ProposeController.java | 1 + .../repository/ProposeCustomRepository.java | 12 +++ .../ProposeCustomRepositoryImpl.java | 46 +++++++++++ .../propose/repository/ProposeRepository.java | 13 ++- .../propose/service/ProposeQueryService.java | 7 +- .../sponus/sponusbe/domain/s3/S3Config.java | 1 - .../sponus/sponusbe/domain/s3/S3Service.java | 12 +-- 24 files changed, 789 insertions(+), 61 deletions(-) delete mode 100644 ".github/ISSUE_TEMPLATE/\342\234\250-feat.md" delete mode 100644 ".github/ISSUE_TEMPLATE/\360\237\220\233-fix.md" create mode 100644 src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncement.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncementAttachment.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncementImage.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganization.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganizationLink.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganizationTag.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/organization/entity/QTag.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/propose/entity/QPropose.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/propose/entity/QProposeAttachment.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/report/entity/QReport.java create mode 100644 src/main/generated/com/sponus/sponusbe/domain/report/entity/QReportAttachment.java create mode 100644 src/main/generated/com/sponus/sponusbe/global/common/QBaseEntity.java create mode 100644 src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeCustomRepository.java create mode 100644 src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeCustomRepositoryImpl.java diff --git "a/.github/ISSUE_TEMPLATE/\342\234\250-feat.md" "b/.github/ISSUE_TEMPLATE/\342\234\250-feat.md" deleted file mode 100644 index ad636a17..00000000 --- "a/.github/ISSUE_TEMPLATE/\342\234\250-feat.md" +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: "โœจ FEAT" -about: ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ ์ด์Šˆํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. -title: "โœจ feat: " -labels: feat -assignees: '' - ---- - -# Title - -- ์ˆจ์‰ฌ๊ธฐ ๊ธฐ๋Šฅ ๊ฐœ๋ฐœ - -# TODO - -- [ ] ๊ฐ„์ง€๋‚˜๊ฒŒ ์ˆจ์‰ฌ๊ธฐ - -# etc - -- ์–ด์ฉŒ๊ตฌ์ €์ฉŒ๊ตฌ diff --git "a/.github/ISSUE_TEMPLATE/\360\237\220\233-fix.md" "b/.github/ISSUE_TEMPLATE/\360\237\220\233-fix.md" deleted file mode 100644 index 87b955d8..00000000 --- "a/.github/ISSUE_TEMPLATE/\360\237\220\233-fix.md" +++ /dev/null @@ -1,20 +0,0 @@ ---- -name: "๐Ÿ› FIX" -about: ๋ฒ„๊ทธ ์ˆ˜์ • ํ…œํ”Œ๋ฆฟ์ž…๋‹ˆ๋‹ค. -title: "๐Ÿ› fix: " -labels: fix -assignees: '' - ---- - -# Title - -- ์ˆจ์‰ฌ๊ธฐ ๊ธฐ๋Šฅ ๋ฒ„๊ทธ ๋ฐœ๊ฒฌ - -# TODO - -- [ ] ์ˆจ์ฐธ๊ธฐ - -# etc - -- ํ์ diff --git a/.gitignore b/.gitignore index d4a87bab..1c728651 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,7 @@ # Edit at https://www.toptal.com/developers/gitignore?templates=java,gradle *-secret.yml +src/main/generated/ # Mac os *.Ds_Store diff --git a/build.gradle b/build.gradle index b2ef398d..afdf4b21 100644 --- a/build.gradle +++ b/build.gradle @@ -1,3 +1,9 @@ +buildscript { + ext { + queryDslVersion = "5.0.0" + } +} + plugins { id 'java' id 'org.springframework.boot' version '3.2.0' @@ -57,13 +63,32 @@ dependencies { // S3 implementation 'org.springframework.cloud:spring-cloud-starter-aws:2.2.6.RELEASE' + + //querydsl + implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta' + annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta" + annotationProcessor "jakarta.annotation:jakarta.annotation-api" + annotationProcessor "jakarta.persistence:jakarta.persistence-api" } tasks.named('test') { useJUnitPlatform() } -// enable plain.jar +def generated = 'src/main/generated' + +tasks.withType(JavaCompile) { + options.getGeneratedSourceOutputDirectory().set(file(generated)) +} + +sourceSets { + main.java.srcDirs += [generated] +} + +clean { + delete file(generated) +} + jar { enabled = false } diff --git a/http/test.http b/http/test.http index 179d2e7e..af7e6fbd 100644 --- a/http/test.http +++ b/http/test.http @@ -78,6 +78,10 @@ Content-Type: application/json ### ๋ณด๊ณ ์„œ ์กฐํšŒ GET http://localhost:8080/api/v1/reports/0 + +### ๊ณต๊ณ  ๊ฒ€์ƒ‰ +GET http://localhost:8080/api/v1/announcements?search=๋ฌด์‹ ์‚ฌ + ### ๋‚ด ์กฐ์ง ์กฐํšŒ GET http://localhost:8080/api/v1/organizations/me Authorization: Bearer {{matsterToken}} diff --git a/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncement.java b/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncement.java new file mode 100644 index 00000000..65a6baec --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncement.java @@ -0,0 +1,71 @@ +package com.sponus.sponusbe.domain.announcement.entity; + +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; + + +/** + * QAnnouncement is a Querydsl query type for Announcement + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QAnnouncement extends EntityPathBase { + + private static final long serialVersionUID = -1589881557L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QAnnouncement announcement = new QAnnouncement("announcement"); + + public final com.sponus.sponusbe.global.common.QBaseEntity _super = new com.sponus.sponusbe.global.common.QBaseEntity(this); + + public final EnumPath category = createEnum("category", com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementCategory.class); + + public final StringPath content = createString("content"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final EnumPath status = createEnum("status", com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementStatus.class); + + public final StringPath title = createString("title"); + + public final EnumPath type = createEnum("type", com.sponus.sponusbe.domain.announcement.entity.enums.AnnouncementType.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public final NumberPath viewCount = createNumber("viewCount", Long.class); + + public final com.sponus.sponusbe.domain.organization.entity.QOrganization writer; + + public QAnnouncement(String variable) { + this(Announcement.class, forVariable(variable), INITS); + } + + public QAnnouncement(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QAnnouncement(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QAnnouncement(PathMetadata metadata, PathInits inits) { + this(Announcement.class, metadata, inits); + } + + public QAnnouncement(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.writer = inits.isInitialized("writer") ? new com.sponus.sponusbe.domain.organization.entity.QOrganization(forProperty("writer")) : null; + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncementAttachment.java b/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncementAttachment.java new file mode 100644 index 00000000..d058a626 --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncementAttachment.java @@ -0,0 +1,55 @@ +package com.sponus.sponusbe.domain.announcement.entity; + +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; + + +/** + * QAnnouncementAttachment is a Querydsl query type for AnnouncementAttachment + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QAnnouncementAttachment extends EntityPathBase { + + private static final long serialVersionUID = 969494702L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QAnnouncementAttachment announcementAttachment = new QAnnouncementAttachment("announcementAttachment"); + + public final QAnnouncement announcement; + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final StringPath url = createString("url"); + + public QAnnouncementAttachment(String variable) { + this(AnnouncementAttachment.class, forVariable(variable), INITS); + } + + public QAnnouncementAttachment(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QAnnouncementAttachment(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QAnnouncementAttachment(PathMetadata metadata, PathInits inits) { + this(AnnouncementAttachment.class, metadata, inits); + } + + public QAnnouncementAttachment(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.announcement = inits.isInitialized("announcement") ? new QAnnouncement(forProperty("announcement"), inits.get("announcement")) : null; + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncementImage.java b/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncementImage.java new file mode 100644 index 00000000..9cc8311f --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/announcement/entity/QAnnouncementImage.java @@ -0,0 +1,55 @@ +package com.sponus.sponusbe.domain.announcement.entity; + +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; + + +/** + * QAnnouncementImage is a Querydsl query type for AnnouncementImage + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QAnnouncementImage extends EntityPathBase { + + private static final long serialVersionUID = 499705584L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QAnnouncementImage announcementImage = new QAnnouncementImage("announcementImage"); + + public final QAnnouncement announcement; + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final StringPath url = createString("url"); + + public QAnnouncementImage(String variable) { + this(AnnouncementImage.class, forVariable(variable), INITS); + } + + public QAnnouncementImage(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QAnnouncementImage(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QAnnouncementImage(PathMetadata metadata, PathInits inits) { + this(AnnouncementImage.class, metadata, inits); + } + + public QAnnouncementImage(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.announcement = inits.isInitialized("announcement") ? new QAnnouncement(forProperty("announcement"), inits.get("announcement")) : null; + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganization.java b/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganization.java new file mode 100644 index 00000000..f2f6f143 --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganization.java @@ -0,0 +1,82 @@ +package com.sponus.sponusbe.domain.organization.entity; + +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; + + +/** + * QOrganization is a Querydsl query type for Organization + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QOrganization extends EntityPathBase { + + private static final long serialVersionUID = 177366787L; + + public static final QOrganization organization = new QOrganization("organization"); + + public final com.sponus.sponusbe.global.common.QBaseEntity _super = new com.sponus.sponusbe.global.common.QBaseEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath description = createString("description"); + + public final StringPath email = createString("email"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath imageUrl = createString("imageUrl"); + + public final StringPath location = createString("location"); + + public final StringPath managerAvailableDay = createString("managerAvailableDay"); + + public final StringPath managerAvailableHour = createString("managerAvailableHour"); + + public final StringPath managerContactPreference = createString("managerContactPreference"); + + public final StringPath managerEmail = createString("managerEmail"); + + public final StringPath managerName = createString("managerName"); + + public final StringPath managerPhone = createString("managerPhone"); + + public final StringPath managerPosition = createString("managerPosition"); + + public final StringPath name = createString("name"); + + public final ListPath organizationLinks = this.createList("organizationLinks", OrganizationLink.class, QOrganizationLink.class, PathInits.DIRECT2); + + public final EnumPath organizationStatus = createEnum("organizationStatus", com.sponus.sponusbe.domain.organization.entity.enums.OrganizationStatus.class); + + public final ListPath organizationTags = this.createList("organizationTags", OrganizationTag.class, QOrganizationTag.class, PathInits.DIRECT2); + + public final EnumPath organizationType = createEnum("organizationType", com.sponus.sponusbe.domain.organization.entity.enums.OrganizationType.class); + + public final StringPath password = createString("password"); + + public final EnumPath suborganizationType = createEnum("suborganizationType", com.sponus.sponusbe.domain.organization.entity.enums.SuborganizationType.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QOrganization(String variable) { + super(Organization.class, forVariable(variable)); + } + + public QOrganization(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QOrganization(PathMetadata metadata) { + super(Organization.class, metadata); + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganizationLink.java b/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganizationLink.java new file mode 100644 index 00000000..2e5e55b7 --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganizationLink.java @@ -0,0 +1,55 @@ +package com.sponus.sponusbe.domain.organization.entity; + +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; + + +/** + * QOrganizationLink is a Querydsl query type for OrganizationLink + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QOrganizationLink extends EntityPathBase { + + private static final long serialVersionUID = 492130717L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QOrganizationLink organizationLink = new QOrganizationLink("organizationLink"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final QOrganization organization; + + public final StringPath url = createString("url"); + + public QOrganizationLink(String variable) { + this(OrganizationLink.class, forVariable(variable), INITS); + } + + public QOrganizationLink(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QOrganizationLink(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QOrganizationLink(PathMetadata metadata, PathInits inits) { + this(OrganizationLink.class, metadata, inits); + } + + public QOrganizationLink(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.organization = inits.isInitialized("organization") ? new QOrganization(forProperty("organization")) : null; + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganizationTag.java b/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganizationTag.java new file mode 100644 index 00000000..0bd1c01c --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QOrganizationTag.java @@ -0,0 +1,54 @@ +package com.sponus.sponusbe.domain.organization.entity; + +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; + + +/** + * QOrganizationTag is a Querydsl query type for OrganizationTag + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QOrganizationTag extends EntityPathBase { + + private static final long serialVersionUID = 1124261271L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QOrganizationTag organizationTag = new QOrganizationTag("organizationTag"); + + public final NumberPath id = createNumber("id", Long.class); + + public final QOrganization organization; + + public final QTag tag; + + public QOrganizationTag(String variable) { + this(OrganizationTag.class, forVariable(variable), INITS); + } + + public QOrganizationTag(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QOrganizationTag(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QOrganizationTag(PathMetadata metadata, PathInits inits) { + this(OrganizationTag.class, metadata, inits); + } + + public QOrganizationTag(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.organization = inits.isInitialized("organization") ? new QOrganization(forProperty("organization")) : null; + this.tag = inits.isInitialized("tag") ? new QTag(forProperty("tag")) : null; + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QTag.java b/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QTag.java new file mode 100644 index 00000000..51a1a7d0 --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/organization/entity/QTag.java @@ -0,0 +1,39 @@ +package com.sponus.sponusbe.domain.organization.entity; + +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; + + +/** + * QTag is a Querydsl query type for Tag + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QTag extends EntityPathBase { + + private static final long serialVersionUID = 912063434L; + + public static final QTag tag = new QTag("tag"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public QTag(String variable) { + super(Tag.class, forVariable(variable)); + } + + public QTag(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QTag(PathMetadata metadata) { + super(Tag.class, metadata); + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/propose/entity/QPropose.java b/src/main/generated/com/sponus/sponusbe/domain/propose/entity/QPropose.java new file mode 100644 index 00000000..079fb838 --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/propose/entity/QPropose.java @@ -0,0 +1,82 @@ +package com.sponus.sponusbe.domain.propose.entity; + +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; + + +/** + * QPropose is a Querydsl query type for Propose + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QPropose extends EntityPathBase { + + private static final long serialVersionUID = -693041277L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QPropose propose = new QPropose("propose"); + + public final com.sponus.sponusbe.global.common.QBaseEntity _super = new com.sponus.sponusbe.global.common.QBaseEntity(this); + + public final com.sponus.sponusbe.domain.announcement.entity.QAnnouncement announcement; + + public final com.sponus.sponusbe.domain.organization.entity.QOrganization companyOrganization; + + public final StringPath content = createString("content"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final ListPath proposeAttachments = this.createList("proposeAttachments", ProposeAttachment.class, QProposeAttachment.class, PathInits.DIRECT2); + + public final com.sponus.sponusbe.domain.organization.entity.QOrganization proposedOrganization; + + public final com.sponus.sponusbe.domain.organization.entity.QOrganization proposingOrganization; + + public final com.sponus.sponusbe.domain.report.entity.QReport report; + + public final EnumPath status = createEnum("status", ProposeStatus.class); + + public final com.sponus.sponusbe.domain.organization.entity.QOrganization studentOrganization; + + public final StringPath title = createString("title"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QPropose(String variable) { + this(Propose.class, forVariable(variable), INITS); + } + + public QPropose(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QPropose(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QPropose(PathMetadata metadata, PathInits inits) { + this(Propose.class, metadata, inits); + } + + public QPropose(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.announcement = inits.isInitialized("announcement") ? new com.sponus.sponusbe.domain.announcement.entity.QAnnouncement(forProperty("announcement"), inits.get("announcement")) : null; + this.companyOrganization = inits.isInitialized("companyOrganization") ? new com.sponus.sponusbe.domain.organization.entity.QOrganization(forProperty("companyOrganization")) : null; + this.proposedOrganization = inits.isInitialized("proposedOrganization") ? new com.sponus.sponusbe.domain.organization.entity.QOrganization(forProperty("proposedOrganization")) : null; + this.proposingOrganization = inits.isInitialized("proposingOrganization") ? new com.sponus.sponusbe.domain.organization.entity.QOrganization(forProperty("proposingOrganization")) : null; + this.report = inits.isInitialized("report") ? new com.sponus.sponusbe.domain.report.entity.QReport(forProperty("report")) : null; + this.studentOrganization = inits.isInitialized("studentOrganization") ? new com.sponus.sponusbe.domain.organization.entity.QOrganization(forProperty("studentOrganization")) : null; + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/propose/entity/QProposeAttachment.java b/src/main/generated/com/sponus/sponusbe/domain/propose/entity/QProposeAttachment.java new file mode 100644 index 00000000..ff4e9c00 --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/propose/entity/QProposeAttachment.java @@ -0,0 +1,55 @@ +package com.sponus.sponusbe.domain.propose.entity; + +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; + + +/** + * QProposeAttachment is a Querydsl query type for ProposeAttachment + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QProposeAttachment extends EntityPathBase { + + private static final long serialVersionUID = 1629811974L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QProposeAttachment proposeAttachment = new QProposeAttachment("proposeAttachment"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final QPropose propose; + + public final StringPath url = createString("url"); + + public QProposeAttachment(String variable) { + this(ProposeAttachment.class, forVariable(variable), INITS); + } + + public QProposeAttachment(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QProposeAttachment(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QProposeAttachment(PathMetadata metadata, PathInits inits) { + this(ProposeAttachment.class, metadata, inits); + } + + public QProposeAttachment(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.propose = inits.isInitialized("propose") ? new QPropose(forProperty("propose"), inits.get("propose")) : null; + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/report/entity/QReport.java b/src/main/generated/com/sponus/sponusbe/domain/report/entity/QReport.java new file mode 100644 index 00000000..f3fa6208 --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/report/entity/QReport.java @@ -0,0 +1,44 @@ +package com.sponus.sponusbe.domain.report.entity; + +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; + + +/** + * QReport is a Querydsl query type for Report + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QReport extends EntityPathBase { + + private static final long serialVersionUID = -1664004795L; + + public static final QReport report = new QReport("report"); + + public final StringPath content = createString("content"); + + public final NumberPath id = createNumber("id", Long.class); + + public final ListPath reportAttachments = this.createList("reportAttachments", ReportAttachment.class, QReportAttachment.class, PathInits.DIRECT2); + + public final StringPath title = createString("title"); + + public QReport(String variable) { + super(Report.class, forVariable(variable)); + } + + public QReport(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QReport(PathMetadata metadata) { + super(Report.class, metadata); + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/domain/report/entity/QReportAttachment.java b/src/main/generated/com/sponus/sponusbe/domain/report/entity/QReportAttachment.java new file mode 100644 index 00000000..6225acc1 --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/domain/report/entity/QReportAttachment.java @@ -0,0 +1,55 @@ +package com.sponus.sponusbe.domain.report.entity; + +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; + + +/** + * QReportAttachment is a Querydsl query type for ReportAttachment + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QReportAttachment extends EntityPathBase { + + private static final long serialVersionUID = 2026008648L; + + private static final PathInits INITS = PathInits.DIRECT2; + + public static final QReportAttachment reportAttachment = new QReportAttachment("reportAttachment"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath name = createString("name"); + + public final QReport report; + + public final StringPath url = createString("url"); + + public QReportAttachment(String variable) { + this(ReportAttachment.class, forVariable(variable), INITS); + } + + public QReportAttachment(Path path) { + this(path.getType(), path.getMetadata(), PathInits.getFor(path.getMetadata(), INITS)); + } + + public QReportAttachment(PathMetadata metadata) { + this(metadata, PathInits.getFor(metadata, INITS)); + } + + public QReportAttachment(PathMetadata metadata, PathInits inits) { + this(ReportAttachment.class, metadata, inits); + } + + public QReportAttachment(Class type, PathMetadata metadata, PathInits inits) { + super(type, metadata, inits); + this.report = inits.isInitialized("report") ? new QReport(forProperty("report")) : null; + } + +} + diff --git a/src/main/generated/com/sponus/sponusbe/global/common/QBaseEntity.java b/src/main/generated/com/sponus/sponusbe/global/common/QBaseEntity.java new file mode 100644 index 00000000..ac82d41e --- /dev/null +++ b/src/main/generated/com/sponus/sponusbe/global/common/QBaseEntity.java @@ -0,0 +1,39 @@ +package com.sponus.sponusbe.global.common; + +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; + + +/** + * QBaseEntity is a Querydsl query type for BaseEntity + */ +@Generated("com.querydsl.codegen.DefaultSupertypeSerializer") +public class QBaseEntity extends EntityPathBase { + + private static final long serialVersionUID = -136640394L; + + public static final QBaseEntity baseEntity = new QBaseEntity("baseEntity"); + + public final DateTimePath createdAt = createDateTime("createdAt", java.time.LocalDateTime.class); + + public final DateTimePath updatedAt = createDateTime("updatedAt", java.time.LocalDateTime.class); + + public QBaseEntity(String variable) { + super(BaseEntity.class, forVariable(variable)); + } + + public QBaseEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QBaseEntity(PathMetadata metadata) { + super(BaseEntity.class, metadata); + } + +} + diff --git a/src/main/java/com/sponus/sponusbe/domain/propose/controller/ProposeController.java b/src/main/java/com/sponus/sponusbe/domain/propose/controller/ProposeController.java index bf1f3372..3b5df8cd 100644 --- a/src/main/java/com/sponus/sponusbe/domain/propose/controller/ProposeController.java +++ b/src/main/java/com/sponus/sponusbe/domain/propose/controller/ProposeController.java @@ -44,6 +44,7 @@ public ApiResponse createPropose( return ApiResponse.onSuccess(proposeService.createPropose(authOrganization, request)); } + // TODO QueryDsl ๋ณ€๊ฒฝ ํ…Œ์ŠคํŠธ ํ›„ ์ˆ˜์ • ํ•„์š” @GetMapping("/me") public ApiResponse> getMyProposes( @AuthOrganization Organization authOrganization, diff --git a/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeCustomRepository.java b/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeCustomRepository.java new file mode 100644 index 00000000..0605f4b1 --- /dev/null +++ b/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeCustomRepository.java @@ -0,0 +1,12 @@ +package com.sponus.sponusbe.domain.propose.repository; + +import java.util.List; + +import com.sponus.sponusbe.domain.propose.entity.Propose; + +public interface ProposeCustomRepository { + + List findSentPropose(Long id); + + List findReceivedProposeWithAnnouncementId(Long organizationId, Long announcementId); +} diff --git a/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeCustomRepositoryImpl.java b/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeCustomRepositoryImpl.java new file mode 100644 index 00000000..ba6a8d5a --- /dev/null +++ b/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeCustomRepositoryImpl.java @@ -0,0 +1,46 @@ +package com.sponus.sponusbe.domain.propose.repository; + +import java.util.List; + +import org.springframework.stereotype.Repository; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import com.sponus.sponusbe.domain.propose.entity.Propose; +import com.sponus.sponusbe.domain.propose.entity.QPropose; + +import jakarta.persistence.EntityManager; +import lombok.RequiredArgsConstructor; + +@RequiredArgsConstructor +@Repository +public class ProposeCustomRepositoryImpl implements ProposeCustomRepository { + + private final EntityManager entityManager; + + @Override + + public List findSentPropose(Long id) { + QPropose p = QPropose.propose; + + JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager); + + return queryFactory.selectFrom(p) + .where(p.proposingOrganization.id.eq(id)) + .leftJoin(p.proposingOrganization).fetchJoin() + .fetch(); + } + + @Override + public List findReceivedProposeWithAnnouncementId(Long organizationId, Long announcementId) { + QPropose p = QPropose.propose; + + JPAQueryFactory queryFactory = new JPAQueryFactory(entityManager); + + return queryFactory.selectFrom(p) + .where(p.proposedOrganization.id.eq(organizationId) + .and(p.announcement.id.eq(announcementId))) + .leftJoin(p.proposedOrganization).fetchJoin() + .leftJoin(p.announcement) + .fetch(); + } +} diff --git a/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeRepository.java b/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeRepository.java index 3195bbeb..775fded1 100644 --- a/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeRepository.java +++ b/src/main/java/com/sponus/sponusbe/domain/propose/repository/ProposeRepository.java @@ -1,17 +1,14 @@ package com.sponus.sponusbe.domain.propose.repository; -import java.util.List; - import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; import com.sponus.sponusbe.domain.propose.entity.Propose; public interface ProposeRepository extends JpaRepository { - @Query("SELECT p FROM Propose p WHERE p.proposingOrganization.id = :id") - List findSentPropose(Long id); - - @Query("SELECT p FROM Propose p WHERE p.proposedOrganization.id = :organizationId AND p.announcement.id = :announcementId") - List findReceivedProposeWithAnnouncementId(Long organizationId, Long announcementId); + // @Query("SELECT p FROM Propose p WHERE p.proposingOrganization.id = :id") + // List findSentPropose(Long id); + // + // @Query("SELECT p FROM Propose p WHERE p.proposedOrganization.id = :organizationId AND p.announcement.id = :announcementId") + // List findReceivedProposeWithAnnouncementId(Long organizationId, Long announcementId); } diff --git a/src/main/java/com/sponus/sponusbe/domain/propose/service/ProposeQueryService.java b/src/main/java/com/sponus/sponusbe/domain/propose/service/ProposeQueryService.java index e39620bc..5ae67b0b 100644 --- a/src/main/java/com/sponus/sponusbe/domain/propose/service/ProposeQueryService.java +++ b/src/main/java/com/sponus/sponusbe/domain/propose/service/ProposeQueryService.java @@ -12,6 +12,7 @@ import com.sponus.sponusbe.domain.propose.entity.Propose; import com.sponus.sponusbe.domain.propose.exception.ProposeErrorCode; import com.sponus.sponusbe.domain.propose.exception.ProposeException; +import com.sponus.sponusbe.domain.propose.repository.ProposeCustomRepository; import com.sponus.sponusbe.domain.propose.repository.ProposeRepository; import lombok.RequiredArgsConstructor; @@ -23,12 +24,14 @@ public class ProposeQueryService { private final ProposeRepository proposeRepository; + private final ProposeCustomRepository proposeCustomRepository; + public List getProposes(Organization organization, ProposeGetCondition condition) { // TODO : ์ถ”ํ›„์— QueryDSL ์ด์šฉ List response; if (condition.isSentPropose()) { // ๋‚ด๊ฐ€ ๋ณด๋‚ธ ์ œ์•ˆ์€ ๊ทธ๋ƒฅ ๋ฐ˜ํ™˜ - response = proposeRepository.findSentPropose(organization.getId()).stream() + response = proposeCustomRepository.findSentPropose(organization.getId()).stream() .map(ProposeSummaryGetResponse::from) .toList(); } else { @@ -36,7 +39,7 @@ public List getProposes(Organization organization, Pr if (condition.announcementId() == null) { throw new ProposeException(ProposeErrorCode.ANNOUNCEMENT_ID_IS_REQUIRED); } - response = proposeRepository.findReceivedProposeWithAnnouncementId( + response = proposeCustomRepository.findReceivedProposeWithAnnouncementId( organization.getId(), condition.announcementId()) .stream() diff --git a/src/main/java/com/sponus/sponusbe/domain/s3/S3Config.java b/src/main/java/com/sponus/sponusbe/domain/s3/S3Config.java index edf35c82..1aebdf0b 100644 --- a/src/main/java/com/sponus/sponusbe/domain/s3/S3Config.java +++ b/src/main/java/com/sponus/sponusbe/domain/s3/S3Config.java @@ -42,7 +42,6 @@ public void init() { @Bean public AmazonS3 amazonS3() { - AWSCredentials awsCredentials = new BasicAWSCredentials(accessKey, secretKey); return AmazonS3ClientBuilder.standard() .withRegion(region) .withCredentials(new AWSStaticCredentialsProvider(awsCredentials)) diff --git a/src/main/java/com/sponus/sponusbe/domain/s3/S3Service.java b/src/main/java/com/sponus/sponusbe/domain/s3/S3Service.java index 7aed2b30..b1537033 100644 --- a/src/main/java/com/sponus/sponusbe/domain/s3/S3Service.java +++ b/src/main/java/com/sponus/sponusbe/domain/s3/S3Service.java @@ -1,10 +1,8 @@ package com.sponus.sponusbe.domain.s3; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; import org.springframework.stereotype.Component; import org.springframework.web.multipart.MultipartFile; @@ -47,13 +45,9 @@ public String deleteImage(String image) { } public List uploadFiles(List files) { - List fileUrls = new ArrayList<>(); - - files.stream().map(file -> { - fileUrls.add(uploadFile(file)); - return fileUrls; - }).collect(Collectors.toList()); - return fileUrls; + return files.stream() + .map(this::uploadFile) + .toList(); } }