feat: implement final Contact API

This commit is contained in:
2025-08-26 17:50:20 +02:00
parent 9ff4b21dd9
commit ab40e9a497
6 changed files with 67 additions and 19 deletions

View File

@@ -6,24 +6,38 @@ import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.Table;
import jakarta.validation.constraints.Email;
import lombok.AccessLevel;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Entity
@Table(name = "contacts")
@Getter
@Setter
@NoArgsConstructor(access = AccessLevel.PROTECTED)
@AllArgsConstructor(access = AccessLevel.PRIVATE)
@Builder
public class ContactJpaEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String country;
private String city;
@Column(nullable = false)
private String title;
@Email
private String email;
@Column(columnDefinition = "text")
private String description;
private String phone;
private String url;
@Column(name = "linkedin_url")
private String linkedin;
@Column(name = "github_url")
private String github;
}

View File

@@ -46,9 +46,12 @@ public class ContactController {
@PostMapping
public ResponseEntity<ContactDto> create(@Valid @RequestBody CreateContactRequest request) {
var cmd = new CreateContactUseCase.Command(
request.title(),
request.description(),
request.url()
request.country(),
request.city(),
request.email(),
request.phone(),
request.linkedin(),
request.github()
);
var created = createUC.handle(cmd);
var body = mapper.toDto(created);

View File

@@ -1,6 +1,15 @@
package com.pablotj.portfolio.infrastructure.rest.contact.dto;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
public record ContactDto(Long id, @NotBlank String title, String description, String url) {
public record ContactDto(
Long id,
String country,
String city,
@NotBlank @Email String email,
String phone,
String linkedin,
String github
) {
}

View File

@@ -1,10 +1,14 @@
package com.pablotj.portfolio.infrastructure.rest.contact.dto;
import jakarta.validation.constraints.Email;
import jakarta.validation.constraints.NotBlank;
public record CreateContactRequest(
@NotBlank String title,
String description,
String url
String country,
String city,
@NotBlank @Email String email,
String phone,
String linkedin,
String github
) {
}