From 157f725f33f37d6b709c5f9c2c16043eb28303a7 Mon Sep 17 00:00:00 2001 From: me Date: Mon, 23 Feb 2026 08:31:57 +0300 Subject: [PATCH] feat: add DTO classes --- pom.xml | 4 +++ .../example/bankcards/dto/AuthResponse.java | 13 ++++++++++ .../example/bankcards/dto/CardResponse.java | 17 +++++++++++++ .../bankcards/dto/CreateCardRequest.java | 25 +++++++++++++++++++ .../example/bankcards/dto/ErrorResponse.java | 20 +++++++++++++++ .../example/bankcards/dto/LoginRequest.java | 14 +++++++++++ .../bankcards/dto/RegisterRequest.java | 20 +++++++++++++++ .../bankcards/dto/TransferRequest.java | 19 ++++++++++++++ .../bankcards/dto/UpdateUserRoleRequest.java | 12 +++++++++ .../example/bankcards/dto/UserResponse.java | 13 ++++++++++ 10 files changed, 157 insertions(+) create mode 100644 src/main/java/com/example/bankcards/dto/AuthResponse.java create mode 100644 src/main/java/com/example/bankcards/dto/CardResponse.java create mode 100644 src/main/java/com/example/bankcards/dto/CreateCardRequest.java create mode 100644 src/main/java/com/example/bankcards/dto/ErrorResponse.java create mode 100644 src/main/java/com/example/bankcards/dto/LoginRequest.java create mode 100644 src/main/java/com/example/bankcards/dto/RegisterRequest.java create mode 100644 src/main/java/com/example/bankcards/dto/TransferRequest.java create mode 100644 src/main/java/com/example/bankcards/dto/UpdateUserRoleRequest.java create mode 100644 src/main/java/com/example/bankcards/dto/UserResponse.java diff --git a/pom.xml b/pom.xml index 9b86c58..aa76dd4 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,10 @@ org.springframework.boot spring-boot-starter-data-jpa + + org.springframework.boot + spring-boot-starter-validation + org.postgresql postgresql diff --git a/src/main/java/com/example/bankcards/dto/AuthResponse.java b/src/main/java/com/example/bankcards/dto/AuthResponse.java new file mode 100644 index 0000000..e45f2aa --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/AuthResponse.java @@ -0,0 +1,13 @@ +package com.example.bankcards.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; + +@Data +@AllArgsConstructor +public class AuthResponse { + + private String token; + private String username; + private String role; +} diff --git a/src/main/java/com/example/bankcards/dto/CardResponse.java b/src/main/java/com/example/bankcards/dto/CardResponse.java new file mode 100644 index 0000000..41f9dfd --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/CardResponse.java @@ -0,0 +1,17 @@ +package com.example.bankcards.dto; + +import com.example.bankcards.entity.CardStatus; +import java.math.BigDecimal; +import java.time.LocalDate; +import lombok.Data; + +@Data +public class CardResponse { + + private Long id; + private String maskedNumber; + private String ownerUsername; + private LocalDate expiryDate; + private CardStatus status; + private BigDecimal balance; +} diff --git a/src/main/java/com/example/bankcards/dto/CreateCardRequest.java b/src/main/java/com/example/bankcards/dto/CreateCardRequest.java new file mode 100644 index 0000000..ee76a4d --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/CreateCardRequest.java @@ -0,0 +1,25 @@ +package com.example.bankcards.dto; + +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import java.time.LocalDate; +import lombok.Data; + +@Data +public class CreateCardRequest { + + @NotBlank + @Pattern(regexp = "\\d{16}", message = "Card number must be 16 digits") + private String cardNumber; + + @NotNull + private Long ownerId; + + @NotNull + @Future + private LocalDate expiryDate; + + @NotNull + @DecimalMin("0.00") + private BigDecimal initialBalance; +} diff --git a/src/main/java/com/example/bankcards/dto/ErrorResponse.java b/src/main/java/com/example/bankcards/dto/ErrorResponse.java new file mode 100644 index 0000000..51800b0 --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/ErrorResponse.java @@ -0,0 +1,20 @@ +package com.example.bankcards.dto; + +import java.time.LocalDateTime; +import java.util.Map; +import lombok.Data; + +@Data +public class ErrorResponse { + + private int status; + private String message; + private LocalDateTime timestamp; + private Map errors; + + public ErrorResponse(int status, String message) { + this.status = status; + this.message = message; + this.timestamp = LocalDateTime.now(); + } +} diff --git a/src/main/java/com/example/bankcards/dto/LoginRequest.java b/src/main/java/com/example/bankcards/dto/LoginRequest.java new file mode 100644 index 0000000..67f6fac --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/LoginRequest.java @@ -0,0 +1,14 @@ +package com.example.bankcards.dto; + +import jakarta.validation.constraints.NotBlank; +import lombok.Data; + +@Data +public class LoginRequest { + + @NotBlank + private String username; + + @NotBlank + private String password; +} diff --git a/src/main/java/com/example/bankcards/dto/RegisterRequest.java b/src/main/java/com/example/bankcards/dto/RegisterRequest.java new file mode 100644 index 0000000..5320886 --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/RegisterRequest.java @@ -0,0 +1,20 @@ +package com.example.bankcards.dto; + +import jakarta.validation.constraints.*; +import lombok.Data; + +@Data +public class RegisterRequest { + + @NotBlank + @Size(min = 3, max = 50) + private String username; + + @NotBlank + @Email + private String email; + + @NotBlank + @Size(min = 6) + private String password; +} diff --git a/src/main/java/com/example/bankcards/dto/TransferRequest.java b/src/main/java/com/example/bankcards/dto/TransferRequest.java new file mode 100644 index 0000000..33d16b2 --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/TransferRequest.java @@ -0,0 +1,19 @@ +package com.example.bankcards.dto; + +import jakarta.validation.constraints.*; +import java.math.BigDecimal; +import lombok.Data; + +@Data +public class TransferRequest { + + @NotNull + private Long fromCardId; + + @NotNull + private Long toCardId; + + @NotNull + @DecimalMin(value = "0.01", message = "Transfer amount must be positive") + private BigDecimal amount; +} diff --git a/src/main/java/com/example/bankcards/dto/UpdateUserRoleRequest.java b/src/main/java/com/example/bankcards/dto/UpdateUserRoleRequest.java new file mode 100644 index 0000000..b8dec84 --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/UpdateUserRoleRequest.java @@ -0,0 +1,12 @@ +package com.example.bankcards.dto; + +import com.example.bankcards.entity.Role; +import jakarta.validation.constraints.NotNull; +import lombok.Data; + +@Data +public class UpdateUserRoleRequest { + + @NotNull + private Role role; +} diff --git a/src/main/java/com/example/bankcards/dto/UserResponse.java b/src/main/java/com/example/bankcards/dto/UserResponse.java new file mode 100644 index 0000000..be658b9 --- /dev/null +++ b/src/main/java/com/example/bankcards/dto/UserResponse.java @@ -0,0 +1,13 @@ +package com.example.bankcards.dto; + +import com.example.bankcards.entity.Role; +import lombok.Data; + +@Data +public class UserResponse { + + private Long id; + private String username; + private String email; + private Role role; +}