feat: implement final Experience API

This commit is contained in:
2025-08-27 16:28:23 +02:00
parent ab40e9a497
commit 9f5306545e
22 changed files with 238 additions and 27 deletions

View File

@@ -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
) {
}
}