feat: implement final Contact API
This commit is contained in:
parent
9ff4b21dd9
commit
ab40e9a497
@ -2,6 +2,8 @@ package com.pablotj.portfolio.application.contact;
|
||||
|
||||
import com.pablotj.portfolio.domain.contact.Contact;
|
||||
import com.pablotj.portfolio.domain.contact.port.ContactRepositoryPort;
|
||||
import jakarta.validation.constraints.Email;
|
||||
import jakarta.validation.constraints.NotBlank;
|
||||
|
||||
public class CreateContactUseCase {
|
||||
|
||||
@ -14,13 +16,23 @@ public class CreateContactUseCase {
|
||||
public Contact handle(Command cmd) {
|
||||
var contact = Contact.builder()
|
||||
.id(null)
|
||||
.title(cmd.title())
|
||||
.description(cmd.description())
|
||||
.url(cmd.url())
|
||||
.country(cmd.country())
|
||||
.city(cmd.city())
|
||||
.email(cmd.email())
|
||||
.phone(cmd.phone())
|
||||
.linkedin(cmd.linkedin())
|
||||
.github(cmd.github())
|
||||
.build();
|
||||
return repository.save(contact);
|
||||
}
|
||||
|
||||
public record Command(String title, String description, String url) {
|
||||
public record Command(
|
||||
String country,
|
||||
String city,
|
||||
String email,
|
||||
String phone,
|
||||
String linkedin,
|
||||
String github
|
||||
) {
|
||||
}
|
||||
}
|
@ -1,13 +1,19 @@
|
||||
package com.pablotj.portfolio.domain.contact;
|
||||
|
||||
import jakarta.validation.constraints.Email;
|
||||
import lombok.Builder;
|
||||
import lombok.Getter;
|
||||
|
||||
@Getter
|
||||
@Builder
|
||||
public class Contact {
|
||||
|
||||
private final ContactId id;
|
||||
private final String title;
|
||||
private final String description;
|
||||
private final String url;
|
||||
private final String country;
|
||||
private final String city;
|
||||
private final String email;
|
||||
private final String phone;
|
||||
private final String linkedin;
|
||||
private final String github;
|
||||
|
||||
}
|
@ -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;
|
||||
}
|
@ -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);
|
||||
|
@ -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
|
||||
) {
|
||||
}
|
@ -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
|
||||
) {
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user