diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000000000000000000000000000000000000..803ae8db626a771c77e82b594643690af29d57a8 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,11 @@ +version: '3.1' +services: + database: + container_name: api_database + image: postgres + environment: + POSTGRES_USER : user + POSTGRES_PASSWORD: pwd + POSTGRES_DB: db-name + ports: + - "5432:5432" diff --git a/initdb/1_TABLES.sql b/initdb/1_TABLES.sql new file mode 100644 index 0000000000000000000000000000000000000000..3440d84da14a74169ed6ad07dcb063022c27b483 --- /dev/null +++ b/initdb/1_TABLES.sql @@ -0,0 +1,7 @@ +create table users +( + id SERIAL PRIMARY KEY, + first_name TEXT not null, + last_name TEXT not null, + age int null +) diff --git a/initdb/2_DEFAULT_ENTRIES.sql b/initdb/2_DEFAULT_ENTRIES.sql new file mode 100644 index 0000000000000000000000000000000000000000..5f637dd7d1326969fa5186f66fb0e1a1852f5cdb --- /dev/null +++ b/initdb/2_DEFAULT_ENTRIES.sql @@ -0,0 +1,8 @@ +INSERT INTO users (id, first_name, last_name, age) VALUES (1, 'Laurine', 'LE NET', 22); +INSERT INTO users (id, first_name, last_name, age) VALUES (2, 'Pilou', 'BERTRAND', 24); +INSERT INTO users (id, first_name, last_name, age) VALUES (3, 'Alain', 'CONNU', 26); +INSERT INTO users (id, first_name, last_name, age) VALUES (4, 'Aurélie', 'BIENCEQUETAECRIT', 20); +INSERT INTO users (id, first_name, last_name, age) VALUES (5, 'Barack', 'AFFRITTE', 22); +INSERT INTO users (id, first_name, last_name, age) VALUES (6, 'Camille', 'ONETTE', 23); +INSERT INTO users (id, first_name, last_name, age) VALUES (7, 'Jean', 'TENRIEN', 22); +INSERT INTO users (id, first_name, last_name, age) VALUES (8, 'Lara', 'TATOUILLE', 24); diff --git a/pom.xml b/pom.xml index 4c162b08496b50915f49398f96ea375178f63d2b..878037cce8f7116e18e1b930f4ee78b1715bc96d 100644 --- a/pom.xml +++ b/pom.xml @@ -36,6 +36,12 @@ <artifactId>springdoc-openapi-starter-webmvc-ui</artifactId> <version>2.1.0</version> </dependency> + <!-- https://mvnrepository.com/artifact/org.postgresql/postgresql --> + <dependency> + <groupId>org.postgresql</groupId> + <artifactId>postgresql</artifactId> + <version>42.6.0</version> + </dependency> <dependency> <groupId>org.springframework.boot</groupId> diff --git a/src/main/java/com/example/livecodingjavaspring/User.java b/src/main/java/com/example/livecodingjavaspring/User.java index 6d101f406f8ea64131b1c5860be07d96a9f12127..630fccd9b011b0b96cb907de562f436a41694883 100644 --- a/src/main/java/com/example/livecodingjavaspring/User.java +++ b/src/main/java/com/example/livecodingjavaspring/User.java @@ -1,8 +1,10 @@ package com.example.livecodingjavaspring; +import lombok.Builder; import lombok.Data; @Data +@Builder public class User { private String firstName; private String lastName; diff --git a/src/main/java/com/example/livecodingjavaspring/UserDao.java b/src/main/java/com/example/livecodingjavaspring/UserDao.java index dbc6edcc3083f7530d1f1b1bd38a0224ee37ccf7..599d882d45a73894d231cdb2499a82e7174ef515 100644 --- a/src/main/java/com/example/livecodingjavaspring/UserDao.java +++ b/src/main/java/com/example/livecodingjavaspring/UserDao.java @@ -2,22 +2,32 @@ package com.example.livecodingjavaspring; import org.springframework.stereotype.Service; +import java.sql.*; import java.util.ArrayList; import java.util.List; + @Service public class UserDao { + private static final String FETCH_ALL_USERS_QUERY = "SELECT * FROM users"; public List<User> getUsers() { List<User> users = new ArrayList<>(); - users.add(new User("Laurine", "LE NET", 22)); - users.add(new User("Pilou", "BERTRAND", 24)); - users.add(new User("Alain", "CONNU", 26)); - users.add(new User("Aurélie", "BIENCEQUETAECRIT", 20)); - users.add(new User("Barack", "AFFRITTE", 22)); - users.add(new User("Camille", "ONETTE", 23)); - users.add(new User("Jean", "TENRIEN", 22)); - users.add(new User("Lara", "TATOUILLE", 24)); + try (Connection connection = DriverManager.getConnection("jdbc:postgresql://localhost/db-name", "user", "pwd"); + PreparedStatement preparedStatement = connection.prepareStatement(FETCH_ALL_USERS_QUERY)) { + ResultSet resultSet = preparedStatement.executeQuery(); + while (resultSet.next()) { + User user = User.builder() + .firstName(resultSet.getString("first_name")) + .lastName(resultSet.getString("last_name")) + .age(resultSet.getInt("age")) + .build(); + users.add(user); + } + } catch (SQLException e) { + throw new RuntimeException(e); + } return users; + } public List<User> addUser(List<User> users, User user) {