diff --git a/src/main/java/com/hepia/demobdd/controller/UserController.java b/src/main/java/com/hepia/demobdd/controller/UserController.java new file mode 100644 index 0000000000000000000000000000000000000000..09f88bccb6726f2790e2f7b13e37a5e38b0a48e3 --- /dev/null +++ b/src/main/java/com/hepia/demobdd/controller/UserController.java @@ -0,0 +1,37 @@ +package com.hepia.demobdd.controller; + +import com.hepia.demobdd.entity.User; +import com.hepia.demobdd.repository.UserRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +import java.util.List; + +@RestController +@RequestMapping("/users") +public class UserController { + + @Autowired + private UserRepository userRepository; + + @GetMapping + public List<User> getAllUsers() { + return userRepository.findAll(); + } + + @GetMapping("/{id}") + public User getUserById(@PathVariable Long id) { + return userRepository.findById(id).orElse(null); + } + + @GetMapping("/search") + public List<User> getUserByName(@RequestParam String name) { + return userRepository.findByName(name); + } + + @PostMapping + public User createUser(@RequestBody User user) { + return userRepository.save(user); + } + +} diff --git a/src/main/java/com/hepia/demobdd/entity/User.java b/src/main/java/com/hepia/demobdd/entity/User.java new file mode 100644 index 0000000000000000000000000000000000000000..14dc2cf150fb814c31c42f7c3611b7642ff00fba --- /dev/null +++ b/src/main/java/com/hepia/demobdd/entity/User.java @@ -0,0 +1,47 @@ +package com.hepia.demobdd.entity; + +import jakarta.persistence.Id; +import jakarta.persistence.Entity; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; + +@Entity +public class User { + + @Id + @GeneratedValue(strategy = GenerationType.IDENTITY) + private Long id; + private String name; + private String email; + + //#region getters + + public Long getId() { + return id; + } + + public String getName() { + return name; + } + + public String getEmail() { + return email; + } + //#endregion + + //#region setters + + public void setId(Long id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } + + public void setEmail(String email) { + this.email = email; + } + //#endregion + +} \ No newline at end of file diff --git a/src/main/java/com/hepia/demobdd/repository/UserRepository.java b/src/main/java/com/hepia/demobdd/repository/UserRepository.java new file mode 100644 index 0000000000000000000000000000000000000000..774ea2cb439c52cacb525565e493774bde1c6c28 --- /dev/null +++ b/src/main/java/com/hepia/demobdd/repository/UserRepository.java @@ -0,0 +1,11 @@ +package com.hepia.demobdd.repository; + +import com.hepia.demobdd.entity.User; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface UserRepository extends JpaRepository<User, Long> { + List<User> findByName(String name); + +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 8b137891791fe96927ad78e64b0aad7bded08bdc..c0a7fae5f69294480d5e6e9026f92b26e5706976 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1 +1,7 @@ +spring.datasource.url=jdbc:mariadb://localhost:3308/demo-bdd +spring.datasource.username=root +spring.datasource.password=root +spring.datasource.driver-class-name=org.mariadb.jdbc.Driver +spring.flyway.enabled=true +spring.flyway.baseline-on-migrate=true \ No newline at end of file diff --git a/src/main/resources/db/migration/V1__Init_user_table.sql b/src/main/resources/db/migration/V1__Init_user_table.sql new file mode 100644 index 0000000000000000000000000000000000000000..36ccb6bb724a5fbe9ab792d76398dfed5c5e745a --- /dev/null +++ b/src/main/resources/db/migration/V1__Init_user_table.sql @@ -0,0 +1,5 @@ +CREATE TABLE user ( + id BIGINT AUTO_INCREMENT PRIMARY KEY, + name VARCHAR(255), + email VARCHAR(255) +); diff --git a/src/main/resources/docker-compose.yml b/src/main/resources/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..e06a834d2b737acce9f174f668bc10f55d61f8b3 --- /dev/null +++ b/src/main/resources/docker-compose.yml @@ -0,0 +1,22 @@ +version: '3.1' + +services: + db: + image: mariadb:10.6 + restart: always + environment: + MYSQL_ROOT_PASSWORD: root + volumes: + - mariadb_data:/var/lib/mysql + - mariadb_tmp:/tmp + ports: + - 3308:3306 + + phpmyadmin: + image: phpmyadmin + restart: always + ports: + - 8082:80 +volumes: + mariadb_data: + mariadb_tmp: \ No newline at end of file