chore: add minimal implementations for all portfolio API endpoints

This commit is contained in:
2025-08-25 23:04:20 +02:00
parent df24350bd3
commit 7f12034174
100 changed files with 2048 additions and 7 deletions

View File

@@ -0,0 +1,26 @@
package com.pablotj.portfolio.application.about;
import com.pablotj.portfolio.domain.about.About;
import com.pablotj.portfolio.domain.about.port.AboutRepositoryPort;
public class CreateAboutUseCase {
private final AboutRepositoryPort repository;
public CreateAboutUseCase(AboutRepositoryPort repository) {
this.repository = repository;
}
public About handle(Command cmd) {
var about = About.builder()
.id(null)
.title(cmd.title())
.description(cmd.description())
.url(cmd.url())
.build();
return repository.save(about);
}
public record Command(String title, String description, String url) {
}
}

View File

@@ -0,0 +1,24 @@
package com.pablotj.portfolio.application.about;
import com.pablotj.portfolio.domain.about.About;
import com.pablotj.portfolio.domain.about.AboutId;
import com.pablotj.portfolio.domain.about.port.AboutRepositoryPort;
import java.util.List;
import java.util.Optional;
public class GetAboutUseCase {
private final AboutRepositoryPort repository;
public GetAboutUseCase(AboutRepositoryPort repository) {
this.repository = repository;
}
public Optional<About> byId(Long id) {
return repository.findById(new AboutId(id));
}
public List<About> all() {
return repository.findAll();
}
}

View File

@@ -0,0 +1,26 @@
package com.pablotj.portfolio.application.certification;
import com.pablotj.portfolio.domain.certification.Certification;
import com.pablotj.portfolio.domain.certification.port.CertificationRepositoryPort;
public class CreateCertificationUseCase {
private final CertificationRepositoryPort repository;
public CreateCertificationUseCase(CertificationRepositoryPort repository) {
this.repository = repository;
}
public Certification handle(Command cmd) {
var certification = Certification.builder()
.id(null)
.title(cmd.title())
.description(cmd.description())
.url(cmd.url())
.build();
return repository.save(certification);
}
public record Command(String title, String description, String url) {
}
}

View File

@@ -0,0 +1,24 @@
package com.pablotj.portfolio.application.certification;
import com.pablotj.portfolio.domain.certification.Certification;
import com.pablotj.portfolio.domain.certification.CertificationId;
import com.pablotj.portfolio.domain.certification.port.CertificationRepositoryPort;
import java.util.List;
import java.util.Optional;
public class GetCertificationUseCase {
private final CertificationRepositoryPort repository;
public GetCertificationUseCase(CertificationRepositoryPort repository) {
this.repository = repository;
}
public Optional<Certification> byId(Long id) {
return repository.findById(new CertificationId(id));
}
public List<Certification> all() {
return repository.findAll();
}
}

View File

@@ -0,0 +1,26 @@
package com.pablotj.portfolio.application.contact;
import com.pablotj.portfolio.domain.contact.Contact;
import com.pablotj.portfolio.domain.contact.port.ContactRepositoryPort;
public class CreateContactUseCase {
private final ContactRepositoryPort repository;
public CreateContactUseCase(ContactRepositoryPort repository) {
this.repository = repository;
}
public Contact handle(Command cmd) {
var contact = Contact.builder()
.id(null)
.title(cmd.title())
.description(cmd.description())
.url(cmd.url())
.build();
return repository.save(contact);
}
public record Command(String title, String description, String url) {
}
}

View File

@@ -0,0 +1,24 @@
package com.pablotj.portfolio.application.contact;
import com.pablotj.portfolio.domain.contact.Contact;
import com.pablotj.portfolio.domain.contact.ContactId;
import com.pablotj.portfolio.domain.contact.port.ContactRepositoryPort;
import java.util.List;
import java.util.Optional;
public class GetContactUseCase {
private final ContactRepositoryPort repository;
public GetContactUseCase(ContactRepositoryPort repository) {
this.repository = repository;
}
public Optional<Contact> byId(Long id) {
return repository.findById(new ContactId(id));
}
public List<Contact> all() {
return repository.findAll();
}
}

View File

@@ -0,0 +1,26 @@
package com.pablotj.portfolio.application.education;
import com.pablotj.portfolio.domain.education.Education;
import com.pablotj.portfolio.domain.education.port.EducationRepositoryPort;
public class CreateEducationUseCase {
private final EducationRepositoryPort repository;
public CreateEducationUseCase(EducationRepositoryPort repository) {
this.repository = repository;
}
public Education handle(Command cmd) {
var education = Education.builder()
.id(null)
.title(cmd.title())
.description(cmd.description())
.url(cmd.url())
.build();
return repository.save(education);
}
public record Command(String title, String description, String url) {
}
}

View File

@@ -0,0 +1,24 @@
package com.pablotj.portfolio.application.education;
import com.pablotj.portfolio.domain.education.Education;
import com.pablotj.portfolio.domain.education.EducationId;
import com.pablotj.portfolio.domain.education.port.EducationRepositoryPort;
import java.util.List;
import java.util.Optional;
public class GetEducationUseCase {
private final EducationRepositoryPort repository;
public GetEducationUseCase(EducationRepositoryPort repository) {
this.repository = repository;
}
public Optional<Education> byId(Long id) {
return repository.findById(new EducationId(id));
}
public List<Education> all() {
return repository.findAll();
}
}

View File

@@ -0,0 +1,26 @@
package com.pablotj.portfolio.application.experience;
import com.pablotj.portfolio.domain.experience.Experience;
import com.pablotj.portfolio.domain.experience.port.ExperienceRepositoryPort;
public class CreateExperienceUseCase {
private final ExperienceRepositoryPort repository;
public CreateExperienceUseCase(ExperienceRepositoryPort repository) {
this.repository = repository;
}
public Experience handle(Command cmd) {
var experience = Experience.builder()
.id(null)
.title(cmd.title())
.description(cmd.description())
.url(cmd.url())
.build();
return repository.save(experience);
}
public record Command(String title, String description, String url) {
}
}

View File

@@ -0,0 +1,24 @@
package com.pablotj.portfolio.application.experience;
import com.pablotj.portfolio.domain.experience.Experience;
import com.pablotj.portfolio.domain.experience.ExperienceId;
import com.pablotj.portfolio.domain.experience.port.ExperienceRepositoryPort;
import java.util.List;
import java.util.Optional;
public class GetExperienceUseCase {
private final ExperienceRepositoryPort repository;
public GetExperienceUseCase(ExperienceRepositoryPort repository) {
this.repository = repository;
}
public Optional<Experience> byId(Long id) {
return repository.findById(new ExperienceId(id));
}
public List<Experience> all() {
return repository.findAll();
}
}

View File

@@ -0,0 +1,26 @@
package com.pablotj.portfolio.application.home;
import com.pablotj.portfolio.domain.home.Home;
import com.pablotj.portfolio.domain.home.port.HomeRepositoryPort;
public class CreateHomeUseCase {
private final HomeRepositoryPort repository;
public CreateHomeUseCase(HomeRepositoryPort repository) {
this.repository = repository;
}
public Home handle(Command cmd) {
var home = Home.builder()
.id(null)
.title(cmd.title())
.description(cmd.description())
.url(cmd.url())
.build();
return repository.save(home);
}
public record Command(String title, String description, String url) {
}
}

View File

@@ -0,0 +1,24 @@
package com.pablotj.portfolio.application.home;
import com.pablotj.portfolio.domain.home.Home;
import com.pablotj.portfolio.domain.home.HomeId;
import com.pablotj.portfolio.domain.home.port.HomeRepositoryPort;
import java.util.List;
import java.util.Optional;
public class GetHomeUseCase {
private final HomeRepositoryPort repository;
public GetHomeUseCase(HomeRepositoryPort repository) {
this.repository = repository;
}
public Optional<Home> byId(Long id) {
return repository.findById(new HomeId(id));
}
public List<Home> all() {
return repository.findAll();
}
}

View File

@@ -0,0 +1,26 @@
package com.pablotj.portfolio.application.skill;
import com.pablotj.portfolio.domain.skill.Skill;
import com.pablotj.portfolio.domain.skill.port.SkillRepositoryPort;
public class CreateSkillUseCase {
private final SkillRepositoryPort repository;
public CreateSkillUseCase(SkillRepositoryPort repository) {
this.repository = repository;
}
public Skill handle(Command cmd) {
var skill = Skill.builder()
.id(null)
.title(cmd.title())
.description(cmd.description())
.url(cmd.url())
.build();
return repository.save(skill);
}
public record Command(String title, String description, String url) {
}
}

View File

@@ -0,0 +1,24 @@
package com.pablotj.portfolio.application.skill;
import com.pablotj.portfolio.domain.skill.Skill;
import com.pablotj.portfolio.domain.skill.SkillId;
import com.pablotj.portfolio.domain.skill.port.SkillRepositoryPort;
import java.util.List;
import java.util.Optional;
public class GetSkillUseCase {
private final SkillRepositoryPort repository;
public GetSkillUseCase(SkillRepositoryPort repository) {
this.repository = repository;
}
public Optional<Skill> byId(Long id) {
return repository.findById(new SkillId(id));
}
public List<Skill> all() {
return repository.findAll();
}
}