From 3cb5686447057b02b9076b856e02085534491a96 Mon Sep 17 00:00:00 2001 From: eunsun Date: Thu, 1 Aug 2024 13:46:12 +0900 Subject: [PATCH 01/15] =?UTF-8?q?feat:=20Update=20GitHub=20Actions=20workf?= =?UTF-8?q?low=20-=20main=20=EB=B8=8C=EB=9E=9C=EC=B9=98=EC=97=90=20README.?= =?UTF-8?q?md=20=ED=8C=8C=EC=9D=BC=EB=A7=8C=20=EB=B3=80=EA=B2=BD=EB=90=98?= =?UTF-8?q?=EC=96=B4=20=ED=91=B8=EC=8B=9C=EB=90=98=EB=8A=94=20=EA=B2=BD?= =?UTF-8?q?=EC=9A=B0=EC=97=90=EB=8A=94=20=EC=9E=90=EB=8F=99=20=EB=B0=B0?= =?UTF-8?q?=ED=8F=AC=20=EC=9B=8C=ED=81=AC=ED=94=8C=EB=A1=9C=EC=9A=B0?= =?UTF-8?q?=EA=B0=80=20=EC=8B=A4=ED=96=89=20=EC=95=88=EB=90=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/ci.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 63c83769..d8bdd611 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -5,6 +5,8 @@ name: Merge Dev to Main on: push: branches: [ main ] + paths-ignore: + - 'README.md' jobs: build: From 9ecd744cb2cb551aaf6e7e88d28dce9851494510 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:09:15 +0900 Subject: [PATCH 02/15] feat : add dependency for QueryDSL --- build.gradle | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 52e13fb5..b07c5a78 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.3.1' @@ -24,8 +30,6 @@ repositories { } dependencies { - - // Spring Boot implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-mail' @@ -46,6 +50,12 @@ dependencies { runtimeOnly 'org.mariadb.jdbc:mariadb-java-client' implementation 'org.springframework.boot:spring-boot-starter-data-redis' + // 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" + // AWS SDK for java implementation platform('software.amazon.awssdk:bom:2.20.56') implementation 'software.amazon.awssdk:s3' @@ -70,3 +80,21 @@ dependencies { tasks.named('test') { useJUnitPlatform() } + +// Querydsl 설정부 +def generated = 'src/main/generated' + +// querydsl QClass 파일 생성 위치를 지정 +tasks.withType(JavaCompile) { + options.getGeneratedSourceOutputDirectory().set(file(generated)) +} + +// java source set 에 querydsl QClass 위치 추가 +sourceSets { + main.java.srcDirs += [generated] +} + +// gradle clean 시에 QClass 디렉토리 삭제 +clean { + delete file(generated) +} \ No newline at end of file From 2ec9db74e9fd7a1762c596d42988cd6e6c7dae47 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:10:36 +0900 Subject: [PATCH 03/15] refactor : add @Enumerated(EnumType.STRING) at JobCategory and Education MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 기존의 로직으로는 DB에 저장될 때, Enum 값이 아닌 Enum의 인덱스 값(e.g. 0, 1, ...)이 저장됨 - 숫자가 아닌 Enum값으로 저장하기 위해 @Enumerated(EnumType.STRING) 추가 --- .../com/ctrls/auto_enter_view/entity/JobPostingEntity.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/main/java/com/ctrls/auto_enter_view/entity/JobPostingEntity.java b/src/main/java/com/ctrls/auto_enter_view/entity/JobPostingEntity.java index b1f38985..df215950 100644 --- a/src/main/java/com/ctrls/auto_enter_view/entity/JobPostingEntity.java +++ b/src/main/java/com/ctrls/auto_enter_view/entity/JobPostingEntity.java @@ -5,6 +5,8 @@ import com.ctrls.auto_enter_view.enums.JobCategory; import jakarta.persistence.Column; import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; import jakarta.persistence.Id; import jakarta.persistence.Table; import java.time.LocalDate; @@ -31,6 +33,7 @@ public class JobPostingEntity extends BaseEntity { private String title; @Column(nullable = false) + @Enumerated(EnumType.STRING) private JobCategory jobCategory; private Integer career; @@ -39,6 +42,7 @@ public class JobPostingEntity extends BaseEntity { private String workLocation; @Column(nullable = false) + @Enumerated(EnumType.STRING) private Education education; @Column(nullable = false) From 7f7aaebcf551b89372813905ca89a45bdfa71e44 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:11:04 +0900 Subject: [PATCH 04/15] feat : add requestMatchers MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 검색 기능 테스트용 api 추가 --- .../java/com/ctrls/auto_enter_view/security/SecurityConfig.java | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/java/com/ctrls/auto_enter_view/security/SecurityConfig.java b/src/main/java/com/ctrls/auto_enter_view/security/SecurityConfig.java index 89c6e5e4..cf02533f 100644 --- a/src/main/java/com/ctrls/auto_enter_view/security/SecurityConfig.java +++ b/src/main/java/com/ctrls/auto_enter_view/security/SecurityConfig.java @@ -53,6 +53,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .authorizeHttpRequests(authHttpRequest -> authHttpRequest // 권한 없이 접근 가능 + .requestMatchers("/api/search").permitAll() .requestMatchers("/api-test/**").permitAll() .requestMatchers("/companies/signup", "/candidates/signup").permitAll() .requestMatchers("/candidates/find-email").permitAll() From e49ee5b8cb4736c6228ead265b9b89d678b1a027 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:11:24 +0900 Subject: [PATCH 05/15] feat : add JobPostingRepositoryCustom --- .../JobPostingRepositoryCustom.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustom.java diff --git a/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustom.java b/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustom.java new file mode 100644 index 00000000..0f97ce65 --- /dev/null +++ b/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustom.java @@ -0,0 +1,28 @@ +package com.ctrls.auto_enter_view.repository; + +import com.ctrls.auto_enter_view.enums.Education; +import com.ctrls.auto_enter_view.enums.JobCategory; +import com.ctrls.auto_enter_view.enums.TechStack; +import java.util.List; + +public interface JobPostingRepositoryCustom { + + /** + * 필터링된 채용 공고의 jobPostingKey 조회 + * + * @param jobCategory 채용 직무 + * @param techStacks 기술 스택 목록 + * @param employmentType 고용 형태 + * @param minCareer 최소 경력 + * @param maxCareer 최소 경력 + * @param education 학력 + * @return 필터링된 jobPostingKey 목록 + */ + List searchJobPostings( + JobCategory jobCategory, + List techStacks, + String employmentType, + Integer minCareer, + Integer maxCareer, + Education education); +} From c375511a6531864c0b15a3ba6716a089b780d8ca Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:11:35 +0900 Subject: [PATCH 06/15] feat : add JobPostingRepositoryCustomImpl --- .../JobPostingRepositoryCustomImpl.java | 75 +++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustomImpl.java diff --git a/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustomImpl.java b/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustomImpl.java new file mode 100644 index 00000000..fef07285 --- /dev/null +++ b/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustomImpl.java @@ -0,0 +1,75 @@ +package com.ctrls.auto_enter_view.repository; + +import com.ctrls.auto_enter_view.entity.QJobPostingEntity; +import com.ctrls.auto_enter_view.entity.QJobPostingTechStackEntity; +import com.ctrls.auto_enter_view.enums.Education; +import com.ctrls.auto_enter_view.enums.JobCategory; +import com.ctrls.auto_enter_view.enums.TechStack; +import com.querydsl.core.BooleanBuilder; +import com.querydsl.jpa.impl.JPAQueryFactory; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Repository; + +@Repository +@RequiredArgsConstructor +public class JobPostingRepositoryCustomImpl implements JobPostingRepositoryCustom { + + private final JPAQueryFactory queryFactory; + + @Override + public List searchJobPostings( + JobCategory jobCategory, + List techStacks, + String employmentType, + Integer minCareer, // 최소 경력 + Integer maxCareer, // 최대 경력 + Education education) { + + QJobPostingEntity jobPosting = QJobPostingEntity.jobPostingEntity; + QJobPostingTechStackEntity jobPostingTechStack = QJobPostingTechStackEntity.jobPostingTechStackEntity; + + BooleanBuilder jobPostingPredicate = new BooleanBuilder(); + BooleanBuilder techStackPredicate = new BooleanBuilder(); + + // 채용직무 필터링 + if (jobCategory != null) { + jobPostingPredicate.and(jobPosting.jobCategory.eq(jobCategory)); + } + + // 기술스택 필터링 + if (techStacks != null && !techStacks.isEmpty()) { + for (TechStack techStack : techStacks) { + techStackPredicate.and(jobPostingTechStack.techName.eq(techStack)); + } + } + + // 고용형태 필터링 + if (employmentType != null && !employmentType.isEmpty()) { + jobPostingPredicate.and(jobPosting.employmentType.eq(employmentType)); + } + + // 필요 경력 범위 필터링 + if (minCareer != null && maxCareer != null) { + jobPostingPredicate.and(jobPosting.career.between(minCareer, maxCareer)); + } else if (minCareer != null) { + jobPostingPredicate.and(jobPosting.career.goe(minCareer)); + } else if (maxCareer != null) { + jobPostingPredicate.and(jobPosting.career.loe(maxCareer)); + } + + // 필요 학력 필터링 + if (education != null) { + jobPostingPredicate.and(jobPosting.education.eq(education)); + } + + List matchingJobPostingKeys = queryFactory.selectDistinct(jobPosting.jobPostingKey) + .from(jobPosting) + .leftJoin(jobPostingTechStack) + .on(jobPosting.jobPostingKey.eq(jobPostingTechStack.jobPostingKey)) + .where(jobPostingPredicate.and(techStackPredicate)) + .fetch(); + + return matchingJobPostingKeys; + } +} From 8f06cceb7c08e4cf36622c03124037e007029592 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:11:45 +0900 Subject: [PATCH 07/15] feat : add SearchController --- .../controller/SearchController.java | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 src/main/java/com/ctrls/auto_enter_view/controller/SearchController.java diff --git a/src/main/java/com/ctrls/auto_enter_view/controller/SearchController.java b/src/main/java/com/ctrls/auto_enter_view/controller/SearchController.java new file mode 100644 index 00000000..f0965bbc --- /dev/null +++ b/src/main/java/com/ctrls/auto_enter_view/controller/SearchController.java @@ -0,0 +1,32 @@ +package com.ctrls.auto_enter_view.controller; + +import com.ctrls.auto_enter_view.enums.Education; +import com.ctrls.auto_enter_view.enums.JobCategory; +import com.ctrls.auto_enter_view.enums.TechStack; +import com.ctrls.auto_enter_view.service.SearchService; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +public class SearchController { + + private final SearchService searchService; + + + @GetMapping("/api/search") + public List searchJobPostings( + @RequestParam(required = false) JobCategory position, + @RequestParam(required = false) List techStacks, + @RequestParam(required = false) String employmentType, + @RequestParam(required = false) Integer minCareer, + @RequestParam(required = false) Integer maxCareer, + @RequestParam(required = false) Education education) { + + return searchService.searchJobPostings(position, techStacks, employmentType, minCareer, + maxCareer, education); + } +} From 5065d47102b4ca6a5e0d0f7199045f10d412dd0d Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:11:55 +0900 Subject: [PATCH 08/15] feat : add SearchService --- .../service/SearchService.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/main/java/com/ctrls/auto_enter_view/service/SearchService.java diff --git a/src/main/java/com/ctrls/auto_enter_view/service/SearchService.java b/src/main/java/com/ctrls/auto_enter_view/service/SearchService.java new file mode 100644 index 00000000..b4e4dd44 --- /dev/null +++ b/src/main/java/com/ctrls/auto_enter_view/service/SearchService.java @@ -0,0 +1,28 @@ +package com.ctrls.auto_enter_view.service; + +import com.ctrls.auto_enter_view.enums.Education; +import com.ctrls.auto_enter_view.enums.JobCategory; +import com.ctrls.auto_enter_view.enums.TechStack; +import com.ctrls.auto_enter_view.repository.JobPostingRepositoryCustom; +import java.util.List; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@Service +@RequiredArgsConstructor +public class SearchService { + + private final JobPostingRepositoryCustom jobPostingRepositoryCustom; + + public List searchJobPostings( + JobCategory jobCategory, + List techStacks, + String employmentType, + Integer minCareer, + Integer maxCareer, + Education education) { + + return jobPostingRepositoryCustom.searchJobPostings(jobCategory, techStacks, employmentType, + minCareer, maxCareer, education); + } +} From f0d56cb57455d9c1a13ee51b5f8d00e392d92bcd Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:12:07 +0900 Subject: [PATCH 09/15] feat : add QuerydslConfig --- .../config/QuerydslConfig.java | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/main/java/com/ctrls/auto_enter_view/config/QuerydslConfig.java diff --git a/src/main/java/com/ctrls/auto_enter_view/config/QuerydslConfig.java b/src/main/java/com/ctrls/auto_enter_view/config/QuerydslConfig.java new file mode 100644 index 00000000..0eab2727 --- /dev/null +++ b/src/main/java/com/ctrls/auto_enter_view/config/QuerydslConfig.java @@ -0,0 +1,21 @@ +package com.ctrls.auto_enter_view.config; + +import com.querydsl.jpa.impl.JPAQueryFactory; +import jakarta.persistence.EntityManager; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +public class QuerydslConfig { + + private final EntityManager entityManager; + + public QuerydslConfig(EntityManager entityManager) { + this.entityManager = entityManager; + } + + @Bean + public JPAQueryFactory jpaQueryFactory() { + return new JPAQueryFactory(entityManager); + } +} \ No newline at end of file From 8c6bf9d05c6ed4adf997cef76ed26871da743cb0 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Mon, 19 Aug 2024 20:12:22 +0900 Subject: [PATCH 10/15] feat : add QEntity --- .../entity/QApplicantEntity.java | 51 +++++++++++++ .../entity/QAppliedJobPostingEntity.java | 49 +++++++++++++ .../auto_enter_view/entity/QBaseEntity.java | 39 ++++++++++ .../entity/QCandidateEntity.java | 55 ++++++++++++++ .../entity/QCandidateListEntity.java | 53 ++++++++++++++ .../entity/QCompanyEntity.java | 55 ++++++++++++++ .../entity/QCompanyInfoEntity.java | 59 +++++++++++++++ .../entity/QInterviewScheduleEntity.java | 53 ++++++++++++++ .../QInterviewScheduleParticipantsEntity.java | 59 +++++++++++++++ .../entity/QJobPostingEntity.java | 71 +++++++++++++++++++ .../entity/QJobPostingImageEntity.java | 49 +++++++++++++ .../entity/QJobPostingStepEntity.java | 41 +++++++++++ .../entity/QJobPostingTechStackEntity.java | 41 +++++++++++ .../entity/QMailAlarmInfoEntity.java | 55 ++++++++++++++ .../entity/QResumeCareerEntity.java | 49 +++++++++++++ .../entity/QResumeCertificateEntity.java | 43 +++++++++++ .../auto_enter_view/entity/QResumeEntity.java | 69 ++++++++++++++++++ .../entity/QResumeExperienceEntity.java | 45 ++++++++++++ .../entity/QResumeImageEntity.java | 49 +++++++++++++ .../entity/QResumeTechStackEntity.java | 41 +++++++++++ 20 files changed, 1026 insertions(+) create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QApplicantEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QAppliedJobPostingEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QBaseEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QCandidateEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QCandidateListEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QCompanyEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QCompanyInfoEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QInterviewScheduleEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QInterviewScheduleParticipantsEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingImageEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingStepEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingTechStackEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QMailAlarmInfoEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QResumeCareerEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QResumeCertificateEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QResumeEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QResumeExperienceEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QResumeImageEntity.java create mode 100644 src/main/generated/com/ctrls/auto_enter_view/entity/QResumeTechStackEntity.java diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QApplicantEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QApplicantEntity.java new file mode 100644 index 00000000..2782163c --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QApplicantEntity.java @@ -0,0 +1,51 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QApplicantEntity is a Querydsl query type for ApplicantEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QApplicantEntity extends EntityPathBase { + + private static final long serialVersionUID = 104035295L; + + public static final QApplicantEntity applicantEntity = new QApplicantEntity("applicantEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final StringPath candidateKey = createString("candidateKey"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final NumberPath score = createNumber("score", Integer.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QApplicantEntity(String variable) { + super(ApplicantEntity.class, forVariable(variable)); + } + + public QApplicantEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QApplicantEntity(PathMetadata metadata) { + super(ApplicantEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QAppliedJobPostingEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QAppliedJobPostingEntity.java new file mode 100644 index 00000000..10c20157 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QAppliedJobPostingEntity.java @@ -0,0 +1,49 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QAppliedJobPostingEntity is a Querydsl query type for AppliedJobPostingEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QAppliedJobPostingEntity extends EntityPathBase { + + private static final long serialVersionUID = 2052919295L; + + public static final QAppliedJobPostingEntity appliedJobPostingEntity = new QAppliedJobPostingEntity("appliedJobPostingEntity"); + + public final DatePath appliedDate = createDate("appliedDate", java.time.LocalDate.class); + + public final StringPath candidateKey = createString("candidateKey"); + + public final DatePath endDate = createDate("endDate", java.time.LocalDate.class); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final StringPath stepName = createString("stepName"); + + public final StringPath title = createString("title"); + + public QAppliedJobPostingEntity(String variable) { + super(AppliedJobPostingEntity.class, forVariable(variable)); + } + + public QAppliedJobPostingEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QAppliedJobPostingEntity(PathMetadata metadata) { + super(AppliedJobPostingEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QBaseEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QBaseEntity.java new file mode 100644 index 00000000..26d5c993 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QBaseEntity.java @@ -0,0 +1,39 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QBaseEntity is a Querydsl query type for BaseEntity + */ +@Generated("com.querydsl.codegen.DefaultSupertypeSerializer") +public class QBaseEntity extends EntityPathBase { + + private static final long serialVersionUID = -674539654L; + + 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/generated/com/ctrls/auto_enter_view/entity/QCandidateEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QCandidateEntity.java new file mode 100644 index 00000000..8432edac --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QCandidateEntity.java @@ -0,0 +1,55 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QCandidateEntity is a Querydsl query type for CandidateEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QCandidateEntity extends EntityPathBase { + + private static final long serialVersionUID = -1385478752L; + + public static final QCandidateEntity candidateEntity = new QCandidateEntity("candidateEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final StringPath candidateKey = createString("candidateKey"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath email = createString("email"); + + public final StringPath name = createString("name"); + + public final StringPath password = createString("password"); + + public final StringPath phoneNumber = createString("phoneNumber"); + + public final EnumPath role = createEnum("role", com.ctrls.auto_enter_view.enums.UserRole.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QCandidateEntity(String variable) { + super(CandidateEntity.class, forVariable(variable)); + } + + public QCandidateEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QCandidateEntity(PathMetadata metadata) { + super(CandidateEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QCandidateListEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QCandidateListEntity.java new file mode 100644 index 00000000..d779e4bf --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QCandidateListEntity.java @@ -0,0 +1,53 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QCandidateListEntity is a Querydsl query type for CandidateListEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QCandidateListEntity extends EntityPathBase { + + private static final long serialVersionUID = 723930462L; + + public static final QCandidateListEntity candidateListEntity = new QCandidateListEntity("candidateListEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final StringPath candidateKey = createString("candidateKey"); + + public final StringPath candidateListKey = createString("candidateListKey"); + + public final StringPath candidateName = createString("candidateName"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final NumberPath jobPostingStepId = createNumber("jobPostingStepId", Long.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QCandidateListEntity(String variable) { + super(CandidateListEntity.class, forVariable(variable)); + } + + public QCandidateListEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QCandidateListEntity(PathMetadata metadata) { + super(CandidateListEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QCompanyEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QCompanyEntity.java new file mode 100644 index 00000000..b6b741d6 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QCompanyEntity.java @@ -0,0 +1,55 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QCompanyEntity is a Querydsl query type for CompanyEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QCompanyEntity extends EntityPathBase { + + private static final long serialVersionUID = -1772742758L; + + public static final QCompanyEntity companyEntity = new QCompanyEntity("companyEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final StringPath companyKey = createString("companyKey"); + + public final StringPath companyName = createString("companyName"); + + public final StringPath companyNumber = createString("companyNumber"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final StringPath email = createString("email"); + + public final StringPath password = createString("password"); + + public final EnumPath role = createEnum("role", com.ctrls.auto_enter_view.enums.UserRole.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QCompanyEntity(String variable) { + super(CompanyEntity.class, forVariable(variable)); + } + + public QCompanyEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QCompanyEntity(PathMetadata metadata) { + super(CompanyEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QCompanyInfoEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QCompanyInfoEntity.java new file mode 100644 index 00000000..156d36a7 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QCompanyInfoEntity.java @@ -0,0 +1,59 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QCompanyInfoEntity is a Querydsl query type for CompanyInfoEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QCompanyInfoEntity extends EntityPathBase { + + private static final long serialVersionUID = -678495640L; + + public static final QCompanyInfoEntity companyInfoEntity = new QCompanyInfoEntity("companyInfoEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final StringPath address = createString("address"); + + public final StringPath boss = createString("boss"); + + public final DatePath companyAge = createDate("companyAge", java.time.LocalDate.class); + + public final StringPath companyInfoKey = createString("companyInfoKey"); + + public final StringPath companyKey = createString("companyKey"); + + public final StringPath companyName = createString("companyName"); + + public final StringPath companyUrl = createString("companyUrl"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath employees = createNumber("employees", Integer.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QCompanyInfoEntity(String variable) { + super(CompanyInfoEntity.class, forVariable(variable)); + } + + public QCompanyInfoEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QCompanyInfoEntity(PathMetadata metadata) { + super(CompanyInfoEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QInterviewScheduleEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QInterviewScheduleEntity.java new file mode 100644 index 00000000..6276ce63 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QInterviewScheduleEntity.java @@ -0,0 +1,53 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QInterviewScheduleEntity is a Querydsl query type for InterviewScheduleEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QInterviewScheduleEntity extends EntityPathBase { + + private static final long serialVersionUID = -1551986283L; + + public static final QInterviewScheduleEntity interviewScheduleEntity = new QInterviewScheduleEntity("interviewScheduleEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final DatePath firstInterviewDate = createDate("firstInterviewDate", java.time.LocalDate.class); + + public final StringPath interviewScheduleKey = createString("interviewScheduleKey"); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final NumberPath jobPostingStepId = createNumber("jobPostingStepId", Long.class); + + public final DatePath lastInterviewDate = createDate("lastInterviewDate", java.time.LocalDate.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QInterviewScheduleEntity(String variable) { + super(InterviewScheduleEntity.class, forVariable(variable)); + } + + public QInterviewScheduleEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QInterviewScheduleEntity(PathMetadata metadata) { + super(InterviewScheduleEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QInterviewScheduleParticipantsEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QInterviewScheduleParticipantsEntity.java new file mode 100644 index 00000000..6a7a4586 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QInterviewScheduleParticipantsEntity.java @@ -0,0 +1,59 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QInterviewScheduleParticipantsEntity is a Querydsl query type for InterviewScheduleParticipantsEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QInterviewScheduleParticipantsEntity extends EntityPathBase { + + private static final long serialVersionUID = -2127412651L; + + public static final QInterviewScheduleParticipantsEntity interviewScheduleParticipantsEntity = new QInterviewScheduleParticipantsEntity("interviewScheduleParticipantsEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final StringPath candidateKey = createString("candidateKey"); + + public final StringPath candidateName = createString("candidateName"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final DateTimePath interviewEndDatetime = createDateTime("interviewEndDatetime", java.time.LocalDateTime.class); + + public final StringPath interviewScheduleKey = createString("interviewScheduleKey"); + + public final DateTimePath interviewStartDatetime = createDateTime("interviewStartDatetime", java.time.LocalDateTime.class); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final NumberPath jobPostingStepId = createNumber("jobPostingStepId", Long.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QInterviewScheduleParticipantsEntity(String variable) { + super(InterviewScheduleParticipantsEntity.class, forVariable(variable)); + } + + public QInterviewScheduleParticipantsEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QInterviewScheduleParticipantsEntity(PathMetadata metadata) { + super(InterviewScheduleParticipantsEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingEntity.java new file mode 100644 index 00000000..14619936 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingEntity.java @@ -0,0 +1,71 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QJobPostingEntity is a Querydsl query type for JobPostingEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QJobPostingEntity extends EntityPathBase { + + private static final long serialVersionUID = -308060690L; + + public static final QJobPostingEntity jobPostingEntity = new QJobPostingEntity("jobPostingEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final NumberPath career = createNumber("career", Integer.class); + + public final StringPath companyKey = createString("companyKey"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final EnumPath education = createEnum("education", com.ctrls.auto_enter_view.enums.Education.class); + + public final StringPath employmentType = createString("employmentType"); + + public final DatePath endDate = createDate("endDate", java.time.LocalDate.class); + + public final EnumPath jobCategory = createEnum("jobCategory", com.ctrls.auto_enter_view.enums.JobCategory.class); + + public final StringPath jobPostingContent = createString("jobPostingContent"); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final NumberPath passingNumber = createNumber("passingNumber", Integer.class); + + public final NumberPath salary = createNumber("salary", Long.class); + + public final DatePath startDate = createDate("startDate", java.time.LocalDate.class); + + public final StringPath title = createString("title"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public final StringPath workLocation = createString("workLocation"); + + public final StringPath workTime = createString("workTime"); + + public QJobPostingEntity(String variable) { + super(JobPostingEntity.class, forVariable(variable)); + } + + public QJobPostingEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QJobPostingEntity(PathMetadata metadata) { + super(JobPostingEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingImageEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingImageEntity.java new file mode 100644 index 00000000..ce7d90f6 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingImageEntity.java @@ -0,0 +1,49 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QJobPostingImageEntity is a Querydsl query type for JobPostingImageEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QJobPostingImageEntity extends EntityPathBase { + + private static final long serialVersionUID = -1953636877L; + + public static final QJobPostingImageEntity jobPostingImageEntity = new QJobPostingImageEntity("jobPostingImageEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final StringPath companyImageUrl = createString("companyImageUrl"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QJobPostingImageEntity(String variable) { + super(JobPostingImageEntity.class, forVariable(variable)); + } + + public QJobPostingImageEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QJobPostingImageEntity(PathMetadata metadata) { + super(JobPostingImageEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingStepEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingStepEntity.java new file mode 100644 index 00000000..5055a7ae --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingStepEntity.java @@ -0,0 +1,41 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QJobPostingStepEntity is a Querydsl query type for JobPostingStepEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QJobPostingStepEntity extends EntityPathBase { + + private static final long serialVersionUID = 1894189658L; + + public static final QJobPostingStepEntity jobPostingStepEntity = new QJobPostingStepEntity("jobPostingStepEntity"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final StringPath step = createString("step"); + + public QJobPostingStepEntity(String variable) { + super(JobPostingStepEntity.class, forVariable(variable)); + } + + public QJobPostingStepEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QJobPostingStepEntity(PathMetadata metadata) { + super(JobPostingStepEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingTechStackEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingTechStackEntity.java new file mode 100644 index 00000000..003075e9 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QJobPostingTechStackEntity.java @@ -0,0 +1,41 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QJobPostingTechStackEntity is a Querydsl query type for JobPostingTechStackEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QJobPostingTechStackEntity extends EntityPathBase { + + private static final long serialVersionUID = -199476630L; + + public static final QJobPostingTechStackEntity jobPostingTechStackEntity = new QJobPostingTechStackEntity("jobPostingTechStackEntity"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final EnumPath techName = createEnum("techName", com.ctrls.auto_enter_view.enums.TechStack.class); + + public QJobPostingTechStackEntity(String variable) { + super(JobPostingTechStackEntity.class, forVariable(variable)); + } + + public QJobPostingTechStackEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QJobPostingTechStackEntity(PathMetadata metadata) { + super(JobPostingTechStackEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QMailAlarmInfoEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QMailAlarmInfoEntity.java new file mode 100644 index 00000000..f550c56d --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QMailAlarmInfoEntity.java @@ -0,0 +1,55 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QMailAlarmInfoEntity is a Querydsl query type for MailAlarmInfoEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QMailAlarmInfoEntity extends EntityPathBase { + + private static final long serialVersionUID = 50273797L; + + public static final QMailAlarmInfoEntity mailAlarmInfoEntity = new QMailAlarmInfoEntity("mailAlarmInfoEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath interviewScheduleKey = createString("interviewScheduleKey"); + + public final StringPath jobPostingKey = createString("jobPostingKey"); + + public final NumberPath jobPostingStepId = createNumber("jobPostingStepId", Long.class); + + public final StringPath mailContent = createString("mailContent"); + + public final DateTimePath mailSendDateTime = createDateTime("mailSendDateTime", java.time.LocalDateTime.class); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QMailAlarmInfoEntity(String variable) { + super(MailAlarmInfoEntity.class, forVariable(variable)); + } + + public QMailAlarmInfoEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QMailAlarmInfoEntity(PathMetadata metadata) { + super(MailAlarmInfoEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeCareerEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeCareerEntity.java new file mode 100644 index 00000000..6c9cbfc6 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeCareerEntity.java @@ -0,0 +1,49 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QResumeCareerEntity is a Querydsl query type for ResumeCareerEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QResumeCareerEntity extends EntityPathBase { + + private static final long serialVersionUID = 1089985844L; + + public static final QResumeCareerEntity resumeCareerEntity = new QResumeCareerEntity("resumeCareerEntity"); + + public final NumberPath calculatedCareer = createNumber("calculatedCareer", Integer.class); + + public final StringPath companyName = createString("companyName"); + + public final DatePath endDate = createDate("endDate", java.time.LocalDate.class); + + public final NumberPath id = createNumber("id", Long.class); + + public final EnumPath jobCategory = createEnum("jobCategory", com.ctrls.auto_enter_view.enums.JobCategory.class); + + public final StringPath resumeKey = createString("resumeKey"); + + public final DatePath startDate = createDate("startDate", java.time.LocalDate.class); + + public QResumeCareerEntity(String variable) { + super(ResumeCareerEntity.class, forVariable(variable)); + } + + public QResumeCareerEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QResumeCareerEntity(PathMetadata metadata) { + super(ResumeCareerEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeCertificateEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeCertificateEntity.java new file mode 100644 index 00000000..eb0151ab --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeCertificateEntity.java @@ -0,0 +1,43 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QResumeCertificateEntity is a Querydsl query type for ResumeCertificateEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QResumeCertificateEntity extends EntityPathBase { + + private static final long serialVersionUID = -741748729L; + + public static final QResumeCertificateEntity resumeCertificateEntity = new QResumeCertificateEntity("resumeCertificateEntity"); + + public final DatePath certificateDate = createDate("certificateDate", java.time.LocalDate.class); + + public final StringPath certificateName = createString("certificateName"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath resumeKey = createString("resumeKey"); + + public QResumeCertificateEntity(String variable) { + super(ResumeCertificateEntity.class, forVariable(variable)); + } + + public QResumeCertificateEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QResumeCertificateEntity(PathMetadata metadata) { + super(ResumeCertificateEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeEntity.java new file mode 100644 index 00000000..939aa87b --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeEntity.java @@ -0,0 +1,69 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QResumeEntity is a Querydsl query type for ResumeEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QResumeEntity extends EntityPathBase { + + private static final long serialVersionUID = 879813206L; + + public static final QResumeEntity resumeEntity = new QResumeEntity("resumeEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + public final StringPath address = createString("address"); + + public final DatePath birthDate = createDate("birthDate", java.time.LocalDate.class); + + public final StringPath candidateKey = createString("candidateKey"); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final EnumPath education = createEnum("education", com.ctrls.auto_enter_view.enums.Education.class); + + public final StringPath email = createString("email"); + + public final StringPath gender = createString("gender"); + + public final EnumPath jobWant = createEnum("jobWant", com.ctrls.auto_enter_view.enums.JobCategory.class); + + public final StringPath name = createString("name"); + + public final StringPath phoneNumber = createString("phoneNumber"); + + public final StringPath portfolio = createString("portfolio"); + + public final StringPath resumeKey = createString("resumeKey"); + + public final StringPath schoolName = createString("schoolName"); + + public final StringPath title = createString("title"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QResumeEntity(String variable) { + super(ResumeEntity.class, forVariable(variable)); + } + + public QResumeEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QResumeEntity(PathMetadata metadata) { + super(ResumeEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeExperienceEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeExperienceEntity.java new file mode 100644 index 00000000..fc24af0a --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeExperienceEntity.java @@ -0,0 +1,45 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QResumeExperienceEntity is a Querydsl query type for ResumeExperienceEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QResumeExperienceEntity extends EntityPathBase { + + private static final long serialVersionUID = -742343520L; + + public static final QResumeExperienceEntity resumeExperienceEntity = new QResumeExperienceEntity("resumeExperienceEntity"); + + public final DatePath endDate = createDate("endDate", java.time.LocalDate.class); + + public final StringPath experienceName = createString("experienceName"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath resumeKey = createString("resumeKey"); + + public final DatePath startDate = createDate("startDate", java.time.LocalDate.class); + + public QResumeExperienceEntity(String variable) { + super(ResumeExperienceEntity.class, forVariable(variable)); + } + + public QResumeExperienceEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QResumeExperienceEntity(PathMetadata metadata) { + super(ResumeExperienceEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeImageEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeImageEntity.java new file mode 100644 index 00000000..1e1ab978 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeImageEntity.java @@ -0,0 +1,49 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QResumeImageEntity is a Querydsl query type for ResumeImageEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QResumeImageEntity extends EntityPathBase { + + private static final long serialVersionUID = 1846205067L; + + public static final QResumeImageEntity resumeImageEntity = new QResumeImageEntity("resumeImageEntity"); + + public final QBaseEntity _super = new QBaseEntity(this); + + //inherited + public final DateTimePath createdAt = _super.createdAt; + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath resumeImageUrl = createString("resumeImageUrl"); + + public final StringPath resumeKey = createString("resumeKey"); + + //inherited + public final DateTimePath updatedAt = _super.updatedAt; + + public QResumeImageEntity(String variable) { + super(ResumeImageEntity.class, forVariable(variable)); + } + + public QResumeImageEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QResumeImageEntity(PathMetadata metadata) { + super(ResumeImageEntity.class, metadata); + } + +} + diff --git a/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeTechStackEntity.java b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeTechStackEntity.java new file mode 100644 index 00000000..ea8eac05 --- /dev/null +++ b/src/main/generated/com/ctrls/auto_enter_view/entity/QResumeTechStackEntity.java @@ -0,0 +1,41 @@ +package com.ctrls.auto_enter_view.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; + + +/** + * QResumeTechStackEntity is a Querydsl query type for ResumeTechStackEntity + */ +@Generated("com.querydsl.codegen.DefaultEntitySerializer") +public class QResumeTechStackEntity extends EntityPathBase { + + private static final long serialVersionUID = 538520322L; + + public static final QResumeTechStackEntity resumeTechStackEntity = new QResumeTechStackEntity("resumeTechStackEntity"); + + public final NumberPath id = createNumber("id", Long.class); + + public final StringPath resumeKey = createString("resumeKey"); + + public final EnumPath techStackName = createEnum("techStackName", com.ctrls.auto_enter_view.enums.TechStack.class); + + public QResumeTechStackEntity(String variable) { + super(ResumeTechStackEntity.class, forVariable(variable)); + } + + public QResumeTechStackEntity(Path path) { + super(path.getType(), path.getMetadata()); + } + + public QResumeTechStackEntity(PathMetadata metadata) { + super(ResumeTechStackEntity.class, metadata); + } + +} + From e91f87ae5de6df72ac9b2d1214ed41d9e66dcd17 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Thu, 29 Aug 2024 16:15:00 +0900 Subject: [PATCH 11/15] feat : add params at searchJobPostings(), make new method searchJobPostingsByKeyword() --- .../repository/JobPostingRepositoryCustom.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustom.java b/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustom.java index 0f97ce65..e761824a 100644 --- a/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustom.java +++ b/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustom.java @@ -24,5 +24,9 @@ List searchJobPostings( String employmentType, Integer minCareer, Integer maxCareer, - Education education); + Education education, + Long minSalary, + Long maxSalary); + + List searchJobPostingsByKeyword(String keyword); } From be1cd31100d01244dd80073b951e43a16997e2c9 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Thu, 29 Aug 2024 16:17:42 +0900 Subject: [PATCH 12/15] feat : add params at searchJobPostings() and make new method searchJobPostingsByKeyword() MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 필터 기능에 연봉도 파라미터로 추가 - 키워드 검색 기능 작성 --- .../JobPostingRepositoryCustomImpl.java | 54 +++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustomImpl.java b/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustomImpl.java index fef07285..9cc83cdd 100644 --- a/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustomImpl.java +++ b/src/main/java/com/ctrls/auto_enter_view/repository/JobPostingRepositoryCustomImpl.java @@ -1,11 +1,16 @@ package com.ctrls.auto_enter_view.repository; +import static com.ctrls.auto_enter_view.entity.QCompanyEntity.companyEntity; +import static com.ctrls.auto_enter_view.entity.QJobPostingEntity.jobPostingEntity; +import static com.ctrls.auto_enter_view.entity.QJobPostingTechStackEntity.jobPostingTechStackEntity; + import com.ctrls.auto_enter_view.entity.QJobPostingEntity; import com.ctrls.auto_enter_view.entity.QJobPostingTechStackEntity; import com.ctrls.auto_enter_view.enums.Education; import com.ctrls.auto_enter_view.enums.JobCategory; import com.ctrls.auto_enter_view.enums.TechStack; import com.querydsl.core.BooleanBuilder; +import com.querydsl.core.types.dsl.BooleanExpression; import com.querydsl.jpa.impl.JPAQueryFactory; import java.util.List; import lombok.RequiredArgsConstructor; @@ -22,34 +27,32 @@ public List searchJobPostings( JobCategory jobCategory, List techStacks, String employmentType, - Integer minCareer, // 최소 경력 - Integer maxCareer, // 최대 경력 - Education education) { + Integer minCareer, + Integer maxCareer, + Education education, + Long minSalary, + Long maxSalary) { - QJobPostingEntity jobPosting = QJobPostingEntity.jobPostingEntity; - QJobPostingTechStackEntity jobPostingTechStack = QJobPostingTechStackEntity.jobPostingTechStackEntity; + QJobPostingEntity jobPosting = jobPostingEntity; + QJobPostingTechStackEntity jobPostingTechStack = jobPostingTechStackEntity; BooleanBuilder jobPostingPredicate = new BooleanBuilder(); BooleanBuilder techStackPredicate = new BooleanBuilder(); - // 채용직무 필터링 if (jobCategory != null) { jobPostingPredicate.and(jobPosting.jobCategory.eq(jobCategory)); } - // 기술스택 필터링 if (techStacks != null && !techStacks.isEmpty()) { for (TechStack techStack : techStacks) { techStackPredicate.and(jobPostingTechStack.techName.eq(techStack)); } } - // 고용형태 필터링 if (employmentType != null && !employmentType.isEmpty()) { jobPostingPredicate.and(jobPosting.employmentType.eq(employmentType)); } - // 필요 경력 범위 필터링 if (minCareer != null && maxCareer != null) { jobPostingPredicate.and(jobPosting.career.between(minCareer, maxCareer)); } else if (minCareer != null) { @@ -58,11 +61,18 @@ public List searchJobPostings( jobPostingPredicate.and(jobPosting.career.loe(maxCareer)); } - // 필요 학력 필터링 if (education != null) { jobPostingPredicate.and(jobPosting.education.eq(education)); } + if (minSalary != null && maxSalary != null) { + jobPostingPredicate.and(jobPosting.salary.between(minSalary, maxSalary)); + } else if (minSalary != null) { + jobPostingPredicate.and(jobPosting.salary.goe(minSalary)); + } else if (maxSalary != null) { + jobPostingPredicate.and(jobPosting.salary.loe(maxSalary)); + } + List matchingJobPostingKeys = queryFactory.selectDistinct(jobPosting.jobPostingKey) .from(jobPosting) .leftJoin(jobPostingTechStack) @@ -72,4 +82,28 @@ public List searchJobPostings( return matchingJobPostingKeys; } + + @Override + public List searchJobPostingsByKeyword(String keyword) { + BooleanExpression jobPostingCondition = jobPostingEntity.title.containsIgnoreCase(keyword) + .or(jobPostingEntity.jobCategory.stringValue().containsIgnoreCase(keyword)) + .or(jobPostingEntity.career.stringValue().containsIgnoreCase(keyword)) + .or(jobPostingEntity.education.stringValue().containsIgnoreCase(keyword)) + .or(jobPostingEntity.employmentType.containsIgnoreCase(keyword)) + .or(jobPostingEntity.salary.stringValue().containsIgnoreCase(keyword)) + .or(jobPostingEntity.jobPostingContent.containsIgnoreCase(keyword)); + + BooleanExpression techStackCondition = jobPostingTechStackEntity.techName.stringValue() + .containsIgnoreCase(keyword); + + BooleanExpression companyCondition = companyEntity.companyName.containsIgnoreCase(keyword); + + return queryFactory.selectDistinct(jobPostingEntity.jobPostingKey) + .from(jobPostingEntity) + .leftJoin(jobPostingTechStackEntity) + .on(jobPostingEntity.jobPostingKey.eq(jobPostingTechStackEntity.jobPostingKey)) + .leftJoin(companyEntity).on(jobPostingEntity.companyKey.eq(companyEntity.companyKey)) + .where(jobPostingCondition.or(techStackCondition).or(companyCondition)) + .fetch(); + } } From cdc174e9e833c8776efb7269ebecbb15d6ef8c91 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Thu, 29 Aug 2024 16:18:11 +0900 Subject: [PATCH 13/15] feat : add "/job-postings/search" for search by keyword --- .../controller/SearchController.java | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/ctrls/auto_enter_view/controller/SearchController.java b/src/main/java/com/ctrls/auto_enter_view/controller/SearchController.java index f0965bbc..e1c25e20 100644 --- a/src/main/java/com/ctrls/auto_enter_view/controller/SearchController.java +++ b/src/main/java/com/ctrls/auto_enter_view/controller/SearchController.java @@ -7,26 +7,34 @@ import java.util.List; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; @RestController @RequiredArgsConstructor +@RequestMapping("/job-postings") public class SearchController { private final SearchService searchService; - - @GetMapping("/api/search") + @GetMapping("/filter") public List searchJobPostings( @RequestParam(required = false) JobCategory position, @RequestParam(required = false) List techStacks, @RequestParam(required = false) String employmentType, @RequestParam(required = false) Integer minCareer, @RequestParam(required = false) Integer maxCareer, - @RequestParam(required = false) Education education) { + @RequestParam(required = false) Education education, + @RequestParam(required = false) Long minSalary, + @RequestParam(required = false) Long maxSalary) { return searchService.searchJobPostings(position, techStacks, employmentType, minCareer, - maxCareer, education); + maxCareer, education, minSalary, maxSalary); + } + + @GetMapping("/search") + public List searchJobPostings(@RequestParam("keyword") String keyword) { + return searchService.searchJobPostingsByKeyword(keyword); } } From 5d5d14cf50a9548dbd2438a188ab30877b2a9772 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Thu, 29 Aug 2024 16:18:28 +0900 Subject: [PATCH 14/15] feat : add params at searchJobPostings() and make new method searchJobPostingsByKeyword() --- .../ctrls/auto_enter_view/service/SearchService.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/ctrls/auto_enter_view/service/SearchService.java b/src/main/java/com/ctrls/auto_enter_view/service/SearchService.java index b4e4dd44..cf03b329 100644 --- a/src/main/java/com/ctrls/auto_enter_view/service/SearchService.java +++ b/src/main/java/com/ctrls/auto_enter_view/service/SearchService.java @@ -20,9 +20,15 @@ public List searchJobPostings( String employmentType, Integer minCareer, Integer maxCareer, - Education education) { + Education education, + Long minSalary, + Long maxSalary) { return jobPostingRepositoryCustom.searchJobPostings(jobCategory, techStacks, employmentType, - minCareer, maxCareer, education); + minCareer, maxCareer, education, minSalary, maxSalary); + } + + public List searchJobPostingsByKeyword(String keyword) { + return jobPostingRepositoryCustom.searchJobPostingsByKeyword(keyword); } } From e3fca165e2756b6fb42c09936825962e12989d15 Mon Sep 17 00:00:00 2001 From: IM-GYURI Date: Thu, 29 Aug 2024 16:19:04 +0900 Subject: [PATCH 15/15] feat : add requestMatchers() at "/job-postings/search" and "/job-postings/filter" --- .../java/com/ctrls/auto_enter_view/security/SecurityConfig.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/ctrls/auto_enter_view/security/SecurityConfig.java b/src/main/java/com/ctrls/auto_enter_view/security/SecurityConfig.java index cf02533f..44767724 100644 --- a/src/main/java/com/ctrls/auto_enter_view/security/SecurityConfig.java +++ b/src/main/java/com/ctrls/auto_enter_view/security/SecurityConfig.java @@ -53,7 +53,7 @@ public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { .authorizeHttpRequests(authHttpRequest -> authHttpRequest // 권한 없이 접근 가능 - .requestMatchers("/api/search").permitAll() + .requestMatchers("/job-postings/search", "/job-postings/filter").permitAll() .requestMatchers("/api-test/**").permitAll() .requestMatchers("/companies/signup", "/candidates/signup").permitAll() .requestMatchers("/candidates/find-email").permitAll()