feat: implement final Experience API
This commit is contained in:
@@ -1,7 +1,13 @@
|
||||
package com.pablotj.portfolio.application.experience;
|
||||
|
||||
import com.pablotj.portfolio.domain.experience.Achievement;
|
||||
import com.pablotj.portfolio.domain.experience.Experience;
|
||||
import com.pablotj.portfolio.domain.experience.Skill;
|
||||
import com.pablotj.portfolio.domain.experience.port.ExperienceRepositoryPort;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
import java.time.LocalDate;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class CreateExperienceUseCase {
|
||||
|
||||
@@ -14,13 +20,35 @@ public class CreateExperienceUseCase {
|
||||
public Experience handle(Command cmd) {
|
||||
var experience = Experience.builder()
|
||||
.id(null)
|
||||
.title(cmd.title())
|
||||
.position(cmd.position())
|
||||
.company(cmd.company())
|
||||
.startDate(cmd.startDate())
|
||||
.endDate(cmd.endDate())
|
||||
.city(cmd.city())
|
||||
.region(cmd.region())
|
||||
.country(cmd.country())
|
||||
.remote(cmd.remote())
|
||||
.description(cmd.description())
|
||||
.url(cmd.url())
|
||||
.skills(new ArrayList<>())
|
||||
.achievements(new ArrayList<>())
|
||||
.build();
|
||||
cmd.skills.forEach(name -> experience.getSkills().add(Skill.builder().id(null).name(name).build()));
|
||||
cmd.achievements.forEach(description -> experience.getAchievements().add(Achievement.builder().id(null).description(description).build()));
|
||||
return repository.save(experience);
|
||||
}
|
||||
|
||||
public record Command(String title, String description, String url) {
|
||||
public record Command(
|
||||
String position,
|
||||
String company,
|
||||
LocalDate startDate,
|
||||
LocalDate endDate,
|
||||
String city,
|
||||
String region,
|
||||
String country,
|
||||
Boolean remote,
|
||||
String description,
|
||||
List<String> skills,
|
||||
List<String> achievements
|
||||
) {
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user