From a4487bbe452557c2da4bcd722083672a5b63ab89 Mon Sep 17 00:00:00 2001 From: "quentin.fasler" <quentin.fasler@etu.hesge.ch> Date: Fri, 9 Feb 2024 23:23:56 +0100 Subject: [PATCH] user --- .../demobdd/controller/UserController.java | 37 +++++++++++++++ .../java/com/hepia/demobdd/entity/User.java | 47 +++++++++++++++++++ .../demobdd/repository/UserRepository.java | 11 +++++ src/main/resources/application.properties | 6 +++ .../db/migration/V1__Init_user_table.sql | 5 ++ src/main/resources/docker-compose.yml | 22 +++++++++ 6 files changed, 128 insertions(+) create mode 100644 src/main/java/com/hepia/demobdd/controller/UserController.java create mode 100644 src/main/java/com/hepia/demobdd/entity/User.java create mode 100644 src/main/java/com/hepia/demobdd/repository/UserRepository.java create mode 100644 src/main/resources/db/migration/V1__Init_user_table.sql create mode 100644 src/main/resources/docker-compose.yml 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 0000000..09f88bc --- /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 0000000..14dc2cf --- /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 0000000..774ea2c --- /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 8b13789..c0a7fae 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 0000000..36ccb6b --- /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 0000000..e06a834 --- /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 -- GitLab