Skip to content

Commit

Permalink
Merge pull request #95 from DSM-Repo/major
Browse files Browse the repository at this point in the history
pr: major 수정 사항 적용
  • Loading branch information
ori0o0p authored Sep 7, 2024
2 parents 103d87b + 41a9224 commit 69bf429
Show file tree
Hide file tree
Showing 25 changed files with 67 additions and 91 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -83,8 +83,7 @@ private StudentModel createAndSaveNewStudent(XquareUserResponse xquareUserRespon
xquareUserResponse.getClassNum(),
xquareUserResponse.getNum(),
defaultProfileImageProperties.imageUrl(),
defaultMajor.id(),
defaultMajor.name()
defaultMajor.id()
)
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import java.util.HashSet;
import java.util.List;
import java.util.Set;

@Service
@RequiredArgsConstructor
Expand All @@ -18,13 +19,10 @@ public class AddMajorService implements AddMajorUseCase {
@Override
@Transactional
public void add(List<String> majors) {
var uniqueMajors = new HashSet<>(majors);
List<String> newMajors = uniqueMajors.stream()
.filter(major -> !majorRepository.existsByName(major))
.toList();
Set<String> uniqueMajors = Set.copyOf(majors);

if (!newMajors.isEmpty()) {
var majorEntities = newMajors.stream()
if (!uniqueMajors.isEmpty()) {
var majorEntities = uniqueMajors.stream()
.map(MajorModel::createNewMajor)
.toList();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ public class DeleteMajorService implements DeleteMajorUseCase {

@Override
@Transactional
public void delete(String majorId) {
var major = majorRepository.findById(majorId)
public void delete(String majorName) {
final var major = majorRepository.findByName(majorName)
.orElseThrow(() -> MajorNotFoundException.EXCEPTION);

majorRepository.delete(major);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.repo.whopper.application.resume.usecase.ResumeReviseUseCase;
import com.repo.whopper.application.student.component.CurrentStudent;
import com.repo.whopper.application.student.event.StudentMajorUpdateEvent;
import com.repo.whopper.common.exception.major.MajorNotFoundException;
import com.repo.whopper.domain.major.MajorModel;
import com.repo.whopper.domain.major.MajorRepository;
Expand All @@ -10,6 +11,7 @@
import com.repo.whopper.interfaces.resume.dto.ResumeElementDto;
import com.repo.whopper.interfaces.resume.dto.request.UpdateWriterInfoRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.context.ApplicationEventPublisher;
import org.springframework.stereotype.Service;

@Service
Expand All @@ -18,16 +20,20 @@ class ResumeReviseService implements ResumeReviseUseCase {
private final CurrentStudent currentStudent;
private final ResumeRepository resumeRepository;
private final MajorRepository majorRepository;
private final ApplicationEventPublisher publisher;

@Override
public void revise(ResumeElementDto.ReviseRequest request) {
final var resume = currentStudent.getResume();
public void revise(final ResumeElementDto.ReviseRequest request) {
final var student = currentStudent.getStudent();
final var resume = currentStudent.getResume(student.id());

reviseProcess(request, resume);
publishMajorUpdateEvent(request.writer().majorName(), student.id());
}

private void reviseProcess(final ResumeElementDto.ReviseRequest request, final ResumeModel resume) {
final var writerReq = request.writer();
final var major = getMajor(writerReq.majorId());
final var major = getMajor(writerReq.majorName());

final var newResume = createNewModel(request, resume, major, writerReq);

Expand All @@ -36,16 +42,20 @@ private void reviseProcess(final ResumeElementDto.ReviseRequest request, final R

private ResumeModel createNewModel(final ResumeElementDto.ReviseRequest request, final ResumeModel resume, final MajorModel major, final UpdateWriterInfoRequest writerReq) {
return resume.replace(
resume.writer().update(new ResumeElementDto.Writer.Major(major.id(), major.name()), writerReq.email(), writerReq.skillSet(), writerReq.url()),
resume.writer().update(major.id(), writerReq.email(), writerReq.skillSet(), writerReq.url()),
request.projectList(),
request.introduce(),
request.achievementList(),
request.activityList()
);
}

private MajorModel getMajor(final String majorId) {
return majorRepository.findById(majorId)
private void publishMajorUpdateEvent(final String majorName, final String userId) {
publisher.publishEvent(new StudentMajorUpdateEvent(majorName, userId));
}

private MajorModel getMajor(final String majorName) {
return majorRepository.findByName(majorName)
.orElseThrow(() -> MajorNotFoundException.EXCEPTION);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,5 @@
public interface CurrentStudent {
StudentModel getStudent();
ResumeModel getResume();
ResumeModel getResume(String studentId);
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.repo.whopper.domain.student.StudentModel;
import com.repo.whopper.common.exception.student.StudentNotFoundException;
import com.repo.whopper.domain.student.StudentRepository;
import jakarta.annotation.Nullable;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Component;
Expand All @@ -31,7 +32,14 @@ public StudentModel getStudent() {
@Override
@Transactional
public ResumeModel getResume() {
return resumeRepository.findByWriterId(getStudent().id())
return resumeRepository.findByWriterId(this.getStudent().id())
.orElseThrow(() -> ResumeNotFoundException.EXCEPTION);
}

@Override
@Transactional
public ResumeModel getResume(String studentId) {
return resumeRepository.findByWriterId(studentId)
.orElseThrow(() -> ResumeNotFoundException.EXCEPTION);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package com.repo.whopper.application.student.event;

public record StudentMajorUpdateEvent(
String majorId,
String majorName,
String studentId
) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ public class StudentMajorUpdateEventHandler {
public void handle(StudentMajorUpdateEvent event) {
final var student = studentRepository.findById(event.studentId())
.orElseThrow(() -> StudentNotFoundException.EXCEPTION);
final var newStudent = student.updateMajor(event.majorId(), event.majorName());
final var newStudent = student.updateMajor(event.majorName());

studentRepository.save(newStudent);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,14 +30,7 @@ public void saveAll(List<MajorModel> entities) {

@Override
public Optional<MajorModel> findByName(String name) {
final var entity = majorMongoRepository.findByName(name);

return majorEntityMapper.toOptionalModel(entity);
}

@Override
public Optional<MajorModel> findById(String majorId) {
final var entity = majorMongoRepository.findById(majorId);
final var entity = majorMongoRepository.findById(name);

return majorEntityMapper.toOptionalModel(entity);
}
Expand All @@ -56,8 +49,4 @@ public void delete(MajorModel model) {
);
}

@Override
public boolean existsByName(String name) {
return majorMongoRepository.existsByName(name);
}
}
11 changes: 7 additions & 4 deletions src/main/java/com/repo/whopper/domain/major/MajorEntity.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,20 @@
package com.repo.whopper.domain.major;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.Indexed;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.MongoId;

@Builder
@Getter
@Document(collection = "majors")
@AllArgsConstructor
@Document(collection = "major_repo")
class MajorEntity {
@Id
@MongoId
private String id;
@Indexed(unique = true)
private String name;

protected MajorEntity() {}
}
10 changes: 6 additions & 4 deletions src/main/java/com/repo/whopper/domain/major/MajorModel.java
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.repo.whopper.domain.major;

import lombok.Builder;

@Builder
public record MajorModel(
String id,
String name
String id
) {
public static MajorModel createNewMajor(String newName) {
return new MajorModel(null, newName);
public static MajorModel createNewMajor(String name) {
return new MajorModel(name);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,5 @@
import java.util.Optional;

public interface MajorMongoRepository extends MongoRepository<MajorEntity, String> {
boolean existsByName(String name);
Optional<MajorEntity> findByName(String name);
Optional<MajorEntity> findById(String name);
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ public interface MajorRepository {
MajorModel save(MajorModel entity);
void saveAll(List<MajorModel> entities);
Optional<MajorModel> findByName(String name);
Optional<MajorModel> findById(String majorId);
List<MajorModel> findAll();
void delete(MajorModel entity);
boolean existsByName(String name);
}
Original file line number Diff line number Diff line change
Expand Up @@ -14,19 +14,14 @@ public interface ResumeElementMapper {
ResumeEntity.Status toStatusEntity(ResumeElementDto.Status status);

@Mapping(target = "schoolInfo", source = "schoolInfo")
@Mapping(target = "major", source = "major")
ResumeElementDto.Writer toWriterDto(ResumeEntity.Writer writer);

@Mapping(target = "schoolInfo", source = "schoolInfo")
@Mapping(target = "major", source = "major")
ResumeEntity.Writer toWriterEntity(ResumeElementDto.Writer writer);

ResumeElementDto.Writer.SchoolInfo toSchoolInfoDto(ResumeEntity.Writer.SchoolInfo schoolInfo);
ResumeEntity.Writer.SchoolInfo toSchoolInfoEntity(ResumeElementDto.Writer.SchoolInfo schoolInfo);

ResumeElementDto.Writer.Major toMajorDto(ResumeEntity.Writer.Major major);
ResumeEntity.Writer.Major toMajorEntity(ResumeElementDto.Writer.Major major);

ResumeElementDto.Introduce toIntroduceDto(ResumeEntity.Introduce introduce);
ResumeEntity.Introduce toIntroduceEntity(ResumeElementDto.Introduce introduce);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ class ResumeEntity {
private Integer year;
private Status status;
private Writer writer;

private Introduce introduce;
private List<Project> projectList;
private List<Achievement> achievementList;
Expand Down Expand Up @@ -85,7 +84,7 @@ record Writer(
String id,
String name,
SchoolInfo schoolInfo,
Major major,
String major,
String email,
List<String> skillSet,
String url
Expand All @@ -97,11 +96,6 @@ record SchoolInfo(
String schoolNumber,
Integer generation
) {}

record Major(
String majorId,
String majorName
) {}
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public record ResumeModel(
List<ResumeElementDto.Achievement> achievementList,
List<ResumeElementDto.Activity> activityList
) {
public static ResumeModel createInitialResume(String id, String name, ResumeElementDto.Writer.SchoolInfo schoolInfo, ResumeElementDto.Writer.Major major) {
public static ResumeModel createInitialResume(String id, String name, ResumeElementDto.Writer.SchoolInfo schoolInfo, String major) {
return new ResumeModel(
null,
Year.now().getValue(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
public class ResumeModelFactory {
public static ResumeModel createResumeModelFromStudentEntity(StudentModel student) {
var classInfo = student.classInfo();
final var major = student.major();

return ResumeModel.createInitialResume(
student.id(),
Expand All @@ -20,10 +19,7 @@ public static ResumeModel createResumeModelFromStudentEntity(StudentModel studen
classInfo.schoolNumber(),
Year.now().getValue() - 2013 - classInfo.grade()
),
new ResumeElementDto.Writer.Major(
major.id(),
major.name()
)
student.major()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ class StudentEntity {
private String name;
private ClassInfo classInfo;
private String profileImagePath;
private Major major;
private String major;

/* value objects */

Expand All @@ -30,11 +30,6 @@ record ClassInfo(
) {
}

record Major(
String id,
String name
) {}

/* constructor */
protected StudentEntity() {}
}
10 changes: 5 additions & 5 deletions src/main/java/com/repo/whopper/domain/student/StudentModel.java
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,13 @@ public record StudentModel(
String name,
StudentElementDto.ClassInfo classInfo,
String profileImagePath,
StudentElementDto.Major major
String major
) {
public StudentModel updateMajor(String majorId, String majorName) {
return new StudentModel(id, accountId, password, name, classInfo, profileImagePath, new StudentElementDto.Major(majorId, majorName));
public StudentModel updateMajor(String majorName) {
return new StudentModel(id, accountId, password, name, classInfo, profileImagePath, majorName);
}

public StudentModel(String accountId, String password, String name, Integer grade, Integer classNumber, Integer number, String profileImagePath, String majorId, String majorName) {
public StudentModel(String accountId, String password, String name, Integer grade, Integer classNumber, Integer number, String profileImagePath, String majorName) {
this(null,
accountId,
password,
Expand All @@ -29,7 +29,7 @@ public StudentModel(String accountId, String password, String name, Integer grad
String.format("%1d%1d%02d", grade, classNumber, number)
),
profileImagePath,
new StudentElementDto.Major(majorId, majorName)
majorName
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ public DataResponseInfo<MajorModel> findAll() {

@OnlyTeacher
@DeleteMapping
public void delete(@RequestBody IdRequest request) {
deleteMajorUseCase.delete(request.id);
public void delete(@RequestBody DeleteMajorRequest request) {
deleteMajorUseCase.delete(request.name);
}

private record AddMajorRequest(List<String> majors) {}
private record IdRequest(String id) {}
private record DeleteMajorRequest(String name) {}
}
Loading

0 comments on commit 69bf429

Please sign in to comment.