Skip to content

Commit 6216345

Browse files
authored
Merge 2025/08/28 1차배포
2025/08/28 1차배포
2 parents 9d8935f + a6ce4c0 commit 6216345

4 files changed

Lines changed: 151 additions & 0 deletions

File tree

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package com.adhd.jova_v2.global.jobs.controller;
2+
3+
import com.adhd.jova_v2.global.jobs.entity.Job;
4+
import com.adhd.jova_v2.global.jobs.service.JobService;
5+
import lombok.RequiredArgsConstructor;
6+
import org.springframework.web.bind.annotation.*;
7+
8+
import java.util.List;
9+
import java.util.Optional;
10+
11+
@RestController
12+
@RequiredArgsConstructor
13+
@RequestMapping("/jobs")
14+
public class JobController {
15+
16+
private final JobService jobService;
17+
18+
@GetMapping("/{id}")
19+
public Optional<Job> findSingleJobById (@PathVariable long id) {
20+
return jobService.findJobById(id);
21+
}
22+
23+
@GetMapping("/")
24+
public List<Job> findAllJobs () {
25+
return jobService.findAllJobs();
26+
}
27+
28+
@PostMapping("/")
29+
public void postSingleJob (Job job) {
30+
jobService.postJob(job);
31+
}
32+
33+
@PatchMapping("/{id}")
34+
public void editSingleJob (@PathVariable long id, Job requestJob) {
35+
jobService.editJob(id, requestJob);
36+
}
37+
38+
@DeleteMapping("/{id}")
39+
public void deleteSingleJob (@PathVariable long id) {
40+
jobService.deleteJob(id);
41+
}
42+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.adhd.jova_v2.global.jobs.controller;
2+
3+
import com.adhd.jova_v2.global.jobs.entity.Job;
4+
import com.adhd.jova_v2.global.jobs.enums.JobStatus;
5+
import com.adhd.jova_v2.global.jobs.service.JobService;
6+
import com.adhd.jova_v2.global.majors.entity.Major;
7+
import lombok.RequiredArgsConstructor;
8+
import org.springframework.web.bind.annotation.GetMapping;
9+
import org.springframework.web.bind.annotation.RequestMapping;
10+
import org.springframework.web.bind.annotation.RequestParam;
11+
import org.springframework.web.bind.annotation.RestController;
12+
13+
import java.util.List;
14+
15+
@RestController
16+
@RequiredArgsConstructor
17+
@RequestMapping("/jobs/search")
18+
public class JobSearchController {
19+
private final JobService jobService;
20+
21+
@GetMapping("/")
22+
public List<Job> getJobsFilteredByMajor (@RequestParam("major") Major major) {
23+
return jobService.findJobsByMajor(major);
24+
}
25+
26+
@GetMapping("/")
27+
public List<Job> getJobsfilteredByStatus (@RequestParam("status") JobStatus status) {
28+
return jobService.findJobsByStatus(status);
29+
}
30+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.adhd.jova_v2.global.jobs.service;
2+
3+
import com.adhd.jova_v2.global.jobs.entity.Job;
4+
import com.adhd.jova_v2.global.jobs.enums.JobStatus;
5+
import com.adhd.jova_v2.global.majors.entity.Major;
6+
7+
import java.util.List;
8+
import java.util.Optional;
9+
10+
public interface JobService {
11+
Optional<Job> findJobById(long id);
12+
List<Job> findAllJobs();
13+
List<Job> findJobsByMajor(Major major);
14+
List<Job> findJobsByStatus(JobStatus status);
15+
void deleteJob(long id);
16+
void editJob(long id, Job requestJob);
17+
void postJob(Job job);
18+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package com.adhd.jova_v2.global.jobs.service.impl;
2+
3+
import com.adhd.jova_v2.global.jobs.entity.Job;
4+
import com.adhd.jova_v2.global.jobs.enums.JobStatus;
5+
import com.adhd.jova_v2.global.jobs.repository.JobRepository;
6+
import com.adhd.jova_v2.global.jobs.service.JobService;
7+
import com.adhd.jova_v2.global.majors.entity.Major;
8+
import jakarta.transaction.Transactional;
9+
import lombok.RequiredArgsConstructor;
10+
import org.springframework.stereotype.Service;
11+
12+
import java.util.List;
13+
import java.util.Optional;
14+
15+
@Service
16+
@RequiredArgsConstructor
17+
public class JobServiceImpl implements JobService {
18+
private final JobRepository jobRepository;
19+
@Override
20+
public List<Job> findAllJobs(){
21+
return jobRepository.findAll();
22+
}
23+
@Override
24+
public Optional<Job> findJobById(long id){
25+
return jobRepository.findById(id);
26+
}
27+
@Override
28+
public void postJob(Job job){
29+
jobRepository.save(job);
30+
}
31+
@Override
32+
@Transactional
33+
public void editJob(long id, Job requestJob){
34+
Optional<Job> existingJob = jobRepository.findById(id);
35+
if (existingJob.isPresent()){
36+
Job updatedJob = existingJob.get();
37+
updatedJob.builder()
38+
.id(id)
39+
.title(requestJob.getTitle())
40+
.description(requestJob.getDescription())
41+
.status(requestJob.getStatus())
42+
.build();
43+
jobRepository.save(updatedJob);
44+
}
45+
else {
46+
throw new IllegalArgumentException("Job not found");
47+
}
48+
}
49+
@Override
50+
public void deleteJob(long id) {
51+
jobRepository.deleteById(id);
52+
}
53+
@Override
54+
public List<Job> findJobsByMajor (Major major){
55+
return findJobsByMajor(major);
56+
}
57+
@Override
58+
public List<Job> findJobsByStatus (JobStatus status){
59+
return findJobsByStatus(status);
60+
}
61+
}

0 commit comments

Comments
 (0)