From 017e4c16434973703f0e2a83bd722452a32546aa Mon Sep 17 00:00:00 2001 From: Sambo Chea Date: Mon, 15 Jun 2020 19:38:02 +0700 Subject: [PATCH] completed user controller --- build.gradle | 1 + .../com/cubetiqs/demo/domain/BaseEntity.java | 2 +- .../demo/repository/UserRepository.java | 2 - .../cubetiqs/demo/rest/UserController.java | 39 ++++++++++++++++++- src/main/resources/application-mysql.yml | 12 ++++++ src/main/resources/application-postgres.yml | 12 ++++++ src/main/resources/application.yml | 13 +------ 7 files changed, 66 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/application-mysql.yml create mode 100644 src/main/resources/application-postgres.yml diff --git a/build.gradle b/build.gradle index b55a239..33edf20 100644 --- a/build.gradle +++ b/build.gradle @@ -18,6 +18,7 @@ dependencies { implementation 'io.springfox:springfox-swagger2:2.9.2' implementation 'io.springfox:springfox-swagger-ui:2.9.2' + runtimeOnly 'mysql:mysql-connector-java' runtimeOnly 'org.postgresql:postgresql' compileOnly 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' diff --git a/src/main/java/com/cubetiqs/demo/domain/BaseEntity.java b/src/main/java/com/cubetiqs/demo/domain/BaseEntity.java index 66747d0..622c404 100644 --- a/src/main/java/com/cubetiqs/demo/domain/BaseEntity.java +++ b/src/main/java/com/cubetiqs/demo/domain/BaseEntity.java @@ -12,7 +12,7 @@ public class BaseEntity implements Serializable, Persis @GeneratedValue(strategy = GenerationType.AUTO) private ID id; - @Column(name = "created_date") + @Column(name = "created_date", updatable = false) @Temporal(TemporalType.TIMESTAMP) private Date createdDate; diff --git a/src/main/java/com/cubetiqs/demo/repository/UserRepository.java b/src/main/java/com/cubetiqs/demo/repository/UserRepository.java index 8e8d70d..977d2f3 100644 --- a/src/main/java/com/cubetiqs/demo/repository/UserRepository.java +++ b/src/main/java/com/cubetiqs/demo/repository/UserRepository.java @@ -1,9 +1,7 @@ package com.cubetiqs.demo.repository; import com.cubetiqs.demo.domain.UserEntity; -import org.springframework.data.domain.Page; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Query; import org.springframework.stereotype.Repository; @Repository diff --git a/src/main/java/com/cubetiqs/demo/rest/UserController.java b/src/main/java/com/cubetiqs/demo/rest/UserController.java index f05b744..c136892 100644 --- a/src/main/java/com/cubetiqs/demo/rest/UserController.java +++ b/src/main/java/com/cubetiqs/demo/rest/UserController.java @@ -5,9 +5,11 @@ import com.cubetiqs.demo.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.Pageable; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; -import java.util.List; +import java.util.Optional; @RestController @RequestMapping(path = {"/users"}) @@ -24,10 +26,45 @@ public class UserController { return userRepository.findAll(pageable); } + @GetMapping("/{id}") + public UserEntity getUserById( + @PathVariable Long id + ) { + return userRepository.findById(id).orElse(null); + } + @PostMapping public UserEntity createUser( @RequestBody UserEntity user ) { return userRepository.save(user); } + + @PutMapping("/{id}") + public UserEntity updateUser( + @PathVariable Long id, + @RequestBody UserEntity user + ) { + Optional userEntityOptional = userRepository.findById(id); + if(userEntityOptional.isPresent()) { + // found + user.setId(id); + return userRepository.save(user); + } else { + return null; + } + } + + @DeleteMapping("/{id}") + public ResponseEntity deleteUser( + @PathVariable Long id + ) { + Optional userEntityOptional = userRepository.findById(id); + if (userEntityOptional.isPresent()) { + userRepository.delete(userEntityOptional.get()); + return ResponseEntity.status(HttpStatus.OK).body("user deleted"); + } else { + return ResponseEntity.badRequest().body("not found"); + } + } } diff --git a/src/main/resources/application-mysql.yml b/src/main/resources/application-mysql.yml new file mode 100644 index 0000000..c8c8207 --- /dev/null +++ b/src/main/resources/application-mysql.yml @@ -0,0 +1,12 @@ +server: + port: 8080 + +spring: + jpa: + hibernate: + ddl-auto: update + datasource: + driver-class-name: com.mysql.cj.jdbc.Driver + username: cubetiq + password: Root$ + url: jdbc:mysql://192.168.0.150:3306/demo \ No newline at end of file diff --git a/src/main/resources/application-postgres.yml b/src/main/resources/application-postgres.yml new file mode 100644 index 0000000..ec3ea4e --- /dev/null +++ b/src/main/resources/application-postgres.yml @@ -0,0 +1,12 @@ +server: + port: 8080 + +spring: + jpa: + hibernate: + ddl-auto: update + datasource: + driver-class-name: org.postgresql.Driver + username: cubetiq + password: Root$ + url: jdbc:postgresql://${POSTGRES_HOST:192.168.0.150}:5432/demo \ No newline at end of file diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index ec3ea4e..ab59428 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,12 +1,3 @@ -server: - port: 8080 - spring: - jpa: - hibernate: - ddl-auto: update - datasource: - driver-class-name: org.postgresql.Driver - username: cubetiq - password: Root$ - url: jdbc:postgresql://${POSTGRES_HOST:192.168.0.150}:5432/demo \ No newline at end of file + profiles: + active: postgres \ No newline at end of file