Browse Source

data rest users crud working

dagarcos 4 weeks ago
parent
commit
4f5f3f68b3

+ 24 - 1
pom.xml

@@ -32,7 +32,29 @@
 	<dependencies>
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
-			<artifactId>spring-boot-starter-webmvc</artifactId>
+			<artifactId>spring-boot-starter-web</artifactId>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-jpa</artifactId>
+    	</dependency>
+
+		<dependency>
+			<groupId>com.h2database</groupId>
+			<artifactId>h2</artifactId>
+			<scope>runtime</scope>
+		</dependency>
+
+		<dependency>
+			<groupId>org.springframework.boot</groupId>
+			<artifactId>spring-boot-starter-data-rest</artifactId>
+    	</dependency>
+
+		<dependency>
+			<groupId>org.projectlombok</groupId>
+			<artifactId>lombok</artifactId>
+			<optional>true</optional>
 		</dependency>
 
 		<dependency>
@@ -41,6 +63,7 @@
 			<scope>runtime</scope>
 			<optional>true</optional>
 		</dependency>
+		
 		<dependency>
 			<groupId>org.springframework.boot</groupId>
 			<artifactId>spring-boot-starter-webmvc-test</artifactId>

+ 17 - 0
src/main/java/bidflow/users/config/DataRestConfig.java

@@ -0,0 +1,17 @@
+package bidflow.users.config;
+
+import org.springframework.context.annotation.Configuration;
+import org.springframework.data.rest.core.config.RepositoryRestConfiguration;
+import org.springframework.data.rest.webmvc.config.RepositoryRestConfigurer;
+import org.springframework.web.servlet.config.annotation.CorsRegistry;
+
+import bidflow.users.domain.User;
+
+@Configuration
+public class DataRestConfig implements RepositoryRestConfigurer {
+
+    @Override
+    public void configureRepositoryRestConfiguration(RepositoryRestConfiguration config, CorsRegistry cors) {
+        config.exposeIdsFor(User.class);
+    }
+}

+ 44 - 0
src/main/java/bidflow/users/domain/User.java

@@ -0,0 +1,44 @@
+package bidflow.users.domain;
+
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+
+import java.time.Instant;
+import java.util.UUID;
+
+@Entity
+@Table(name = "USERS")
+public class User {
+
+    @Id
+    @GeneratedValue
+    private UUID id;
+
+    private String username;
+    private String email;
+    private Instant createdAt;
+
+    public User() {}
+
+    public User(UUID id, String username, String email, Instant createdAt) {
+        this.id = id;
+        this.username = username;
+        this.email = email;
+        this.createdAt = createdAt;
+    }
+
+    public UUID getId() { return id; }
+    public void setId(UUID id) { this.id = id; }
+
+    public String getUsername() { return username; }
+    public void setUsername(String username) { this.username = username; }
+
+    public String getEmail() { return email; }
+    public void setEmail(String email) { this.email = email; }
+
+    public Instant getCreatedAt() { return createdAt; }
+    public void setCreatedAt(Instant createdAt) { this.createdAt = createdAt; }
+}
+

+ 11 - 0
src/main/java/bidflow/users/repository/UserRepository.java

@@ -0,0 +1,11 @@
+package bidflow.users.repository;
+
+import bidflow.users.domain.User;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.rest.core.annotation.RepositoryRestResource;
+
+import java.util.UUID;
+
+@RepositoryRestResource
+public interface UserRepository extends JpaRepository<User, UUID> { }
+

+ 12 - 0
src/main/resources/application.properties

@@ -1 +1,13 @@
 spring.application.name=users
+server.port=8083
+
+spring.data.rest.base-path=/api
+
+spring.datasource.url=jdbc:h2:mem:catalog-db
+spring.datasource.driverClassName=org.h2.Driver
+spring.datasource.username=sa
+
+spring.jpa.defer-datasource-initialization=true
+spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+spring.jpa.hibernate.ddl-auto=create-drop
+spring.jpa.show-sql=false

+ 21 - 0
src/main/resources/data.sql

@@ -0,0 +1,21 @@
+-- USERS
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000001','user1','user1@test.com','2015-03-12 09:15:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000002','user2','user2@test.com','2016-07-21 14:22:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000003','user3','user3@test.com','2017-01-08 18:40:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000004','user4','user4@test.com','2017-11-03 11:05:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000005','user5','user5@test.com','2018-05-17 16:10:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000006','user6','user6@test.com','2018-09-29 08:55:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000007','user7','user7@test.com','2019-02-14 20:30:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000008','user8','user8@test.com','2019-08-06 13:45:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000009','user9','user9@test.com','2020-04-01 10:20:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000010','user10','user10@test.com','2020-12-19 17:50:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000011','user11','user11@test.com','2021-03-23 12:35:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000012','user12','user12@test.com','2021-10-11 09:05:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000013','user13','user13@test.com','2022-02-28 15:15:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000014','user14','user14@test.com','2022-07-07 19:40:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000015','user15','user15@test.com','2023-01-16 11:25:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000016','user16','user16@test.com','2023-06-30 14:55:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000017','user17','user17@test.com','2024-03-05 08:10:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000018','user18','user18@test.com','2024-09-18 21:05:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000019','user19','user19@test.com','2025-02-11 16:45:00');
+INSERT INTO USERS (ID, USERNAME, EMAIL, CREATED_AT) VALUES ('80000000-0000-0000-0000-000000000020','user20','user20@test.com','2025-11-27 10:30:00');