diff --git a/.gitignore b/.gitignore index 05cec9c..7212a2b 100644 --- a/.gitignore +++ b/.gitignore @@ -81,3 +81,4 @@ crashlytics-build.properties fabric.properties .idea/httpRequests .idea/caches/build_file_checksums.ser +/data/ diff --git a/src/main/java/org/sadtech/example/springvalidation/controller/PersonControllerValidRepository.java b/src/main/java/org/sadtech/example/springvalidation/controller/PersonControllerValidRepository.java new file mode 100644 index 0000000..dfd407c --- /dev/null +++ b/src/main/java/org/sadtech/example/springvalidation/controller/PersonControllerValidRepository.java @@ -0,0 +1,28 @@ +package org.sadtech.example.springvalidation.controller; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.tags.Tag; +import lombok.RequiredArgsConstructor; +import org.sadtech.example.springvalidation.dto.PersonDto; +import org.sadtech.example.springvalidation.repository.PersonRepository; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +@RequiredArgsConstructor +@RequestMapping("/api/valid-repa/person") +@Tag(name = "Пользователи системы 3", description = "Валидация на уровне репозитория") +public class PersonControllerValidRepository { + + private final PersonRepository personRepository; + + @PostMapping + @Operation(summary = "Сохранение пользователя") + public ResponseEntity save(@RequestBody PersonDto personDto) { + return ResponseEntity.ok(personRepository.save(personDto)); + } + +} diff --git a/src/main/java/org/sadtech/example/springvalidation/dto/PersonDto.java b/src/main/java/org/sadtech/example/springvalidation/dto/PersonDto.java index 4e908ec..4a311fe 100644 --- a/src/main/java/org/sadtech/example/springvalidation/dto/PersonDto.java +++ b/src/main/java/org/sadtech/example/springvalidation/dto/PersonDto.java @@ -3,15 +3,26 @@ package org.sadtech.example.springvalidation.dto; import lombok.Getter; import lombok.Setter; +import javax.persistence.Column; +import javax.persistence.Entity; +import javax.persistence.GeneratedValue; +import javax.persistence.GenerationType; +import javax.persistence.Id; +import javax.persistence.Table; +import javax.persistence.Transient; import javax.validation.constraints.Max; import javax.validation.constraints.Min; import javax.validation.constraints.NotBlank; import javax.validation.constraints.Pattern; +@Entity @Getter @Setter +@Table(name = "person") public class PersonDto { + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; @NotBlank @@ -19,8 +30,10 @@ public class PersonDto { @Min(1) @Max(10) + @Column(name = "number") private int numberBetweenOneAndTen; + @Column(name = "ip_address") @Pattern(regexp = "^((25[0-5]|(2[0-4]|1[0-9]|[1-9]|)[0-9])(\\.(?!$)|$)){4}$") private String ipAddress; diff --git a/src/main/java/org/sadtech/example/springvalidation/repository/PersonRepository.java b/src/main/java/org/sadtech/example/springvalidation/repository/PersonRepository.java new file mode 100644 index 0000000..a182feb --- /dev/null +++ b/src/main/java/org/sadtech/example/springvalidation/repository/PersonRepository.java @@ -0,0 +1,8 @@ +package org.sadtech.example.springvalidation.repository; + +import org.sadtech.example.springvalidation.dto.PersonDto; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface PersonRepository extends JpaRepository { + +} diff --git a/src/main/resources/application.yaml b/src/main/resources/application.yaml index 944e801..a741087 100644 --- a/src/main/resources/application.yaml +++ b/src/main/resources/application.yaml @@ -1,3 +1,8 @@ spring: liquibase: - change-log: classpath:db/changelog/changelog.xml \ No newline at end of file + change-log: classpath:db/changelog/changelog.xml + datasource: + url: jdbc:h2:file:./data/validation;DB_CLOSE_DELAY=-1;AUTO_SERVER=TRUE + password: password + username: sa + driver-class-name: org.h2.Driver \ No newline at end of file diff --git a/src/main/resources/db/changelog/changelog.xml b/src/main/resources/db/changelog/changelog.xml index dcae37f..38cd436 100644 --- a/src/main/resources/db/changelog/changelog.xml +++ b/src/main/resources/db/changelog/changelog.xml @@ -3,6 +3,14 @@ xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd"> - - + + + + + + + + + + \ No newline at end of file