From 995c69a71be82d155abbaf5a8a3b196aef76316a Mon Sep 17 00:00:00 2001 From: Ksan Date: Tue, 21 Oct 2025 00:51:25 +0200 Subject: [PATCH] added User class --- .../controller/HomeController.java | 20 +++++ .../controller/UserController.java | 39 ++++++++++ .../dev/ksan/etfoglasiserver/dto/UserDTO.java | 25 ++++++ .../dev/ksan/etfoglasiserver/model/Entry.java | 78 +++++++++++++++++++ .../dev/ksan/etfoglasiserver/model/User.java | 24 ++++-- .../etfoglasiserver/repository/UserRepo.java | 16 ++++ .../etfoglasiserver/service/UserService.java | 52 +++++++++++++ 7 files changed, 247 insertions(+), 7 deletions(-) create mode 100644 src/main/java/dev/ksan/etfoglasiserver/controller/HomeController.java create mode 100644 src/main/java/dev/ksan/etfoglasiserver/controller/UserController.java create mode 100644 src/main/java/dev/ksan/etfoglasiserver/dto/UserDTO.java create mode 100644 src/main/java/dev/ksan/etfoglasiserver/model/Entry.java create mode 100644 src/main/java/dev/ksan/etfoglasiserver/repository/UserRepo.java create mode 100644 src/main/java/dev/ksan/etfoglasiserver/service/UserService.java diff --git a/src/main/java/dev/ksan/etfoglasiserver/controller/HomeController.java b/src/main/java/dev/ksan/etfoglasiserver/controller/HomeController.java new file mode 100644 index 0000000..61bfc6b --- /dev/null +++ b/src/main/java/dev/ksan/etfoglasiserver/controller/HomeController.java @@ -0,0 +1,20 @@ +package dev.ksan.etfoglasiserver.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RestController +public class HomeController { + @RequestMapping("/") + public String greet(){ + return "Server started"; + } + + @RequestMapping("/test") + public String lol(){ + return "Server test???!?!??!?!"; + } + public void test(){ + System.out.println("AAAAAAAAaa"); + } +} diff --git a/src/main/java/dev/ksan/etfoglasiserver/controller/UserController.java b/src/main/java/dev/ksan/etfoglasiserver/controller/UserController.java new file mode 100644 index 0000000..3c98d43 --- /dev/null +++ b/src/main/java/dev/ksan/etfoglasiserver/controller/UserController.java @@ -0,0 +1,39 @@ +package dev.ksan.etfoglasiserver.controller; + +import dev.ksan.etfoglasiserver.model.User; +import dev.ksan.etfoglasiserver.service.UserService; +import java.util.List; +import java.util.UUID; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; + +@RestController +public class UserController { + @Autowired UserService service; + + @GetMapping("/users") + public List getUsers() { + return service.getUsers(); + } + + @GetMapping("/users/{userId}") + public User getUserById(@PathVariable UUID userId) { + return service.getUserById(userId); + } + + @PostMapping("/users") + public void addUser(@RequestBody User user) { + service.addUser(user); + } + + @PutMapping("/users") + public void updateUser(@RequestBody User user) { + service.updateUser(user); + } + + @DeleteMapping("/users/{userId}") + public void deleteUser(@PathVariable UUID userId) { + service.deleteUser(userId); + } +} diff --git a/src/main/java/dev/ksan/etfoglasiserver/dto/UserDTO.java b/src/main/java/dev/ksan/etfoglasiserver/dto/UserDTO.java new file mode 100644 index 0000000..d8ca5ef --- /dev/null +++ b/src/main/java/dev/ksan/etfoglasiserver/dto/UserDTO.java @@ -0,0 +1,25 @@ +package dev.ksan.etfoglasiserver.dto; + +import java.util.UUID; + +public class UserDTO { + private UUID id; + private String email; + public UserDTO() {} + public UserDTO(UUID id, String email) { + this.id = id; + this.email = email; + } + public UUID getId() { + return id; + } + public void setId(UUID id) { + this.id = id; + } + public String getEmail() { + return email; + } + public void setEmail(String email) { + this.email = email; + } +} diff --git a/src/main/java/dev/ksan/etfoglasiserver/model/Entry.java b/src/main/java/dev/ksan/etfoglasiserver/model/Entry.java new file mode 100644 index 0000000..013a5d8 --- /dev/null +++ b/src/main/java/dev/ksan/etfoglasiserver/model/Entry.java @@ -0,0 +1,78 @@ +package dev.ksan.etfoglasiserver.model; + +import jakarta.persistence.*; + +import java.util.List; +import java.util.UUID; +import org.springframework.stereotype.Component; + +@Entity +public class Entry { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private UUID id; + + @Column private long subjectId; + private String title; + private String date; + private String info; + private String paragraph; + + public Entry() {} + public Entry(String title, String date, String info, List paragraphs) { + this.title = title; + this.date = date; + this.info = info; + + this.paragraph = String.join("\n", paragraph); + } + + public Entry(String title, String date, String info, String paragraph) { + this.title = title; + this.date = date; + this.info = info; + this.paragraph = paragraph; + } + + public String getParagraph() { + return paragraph; + } + + public void setParagraph(List paragraphs) { + this.paragraph = String.join("\n", paragraphs); + } + + public void setParagraph(String paragraph) { + this.paragraph = paragraph; + } + + public String getTitle() { + return title; + } + + public String getDate() { + return date; + } + + public String getInfo() { + return info; + } + + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null) return false; + Entry subject = (Entry) o; + if (title.equals(subject.getTitle()) + && date.equals(subject.getDate()) + && info.equals(subject.getInfo())) { + return true; + } + return false; + } + + @Override + public String toString() { + return title + " " + date + " " + info + "\n\t" + paragraph + "\n"; + } +} diff --git a/src/main/java/dev/ksan/etfoglasiserver/model/User.java b/src/main/java/dev/ksan/etfoglasiserver/model/User.java index db7fe8b..58d347b 100644 --- a/src/main/java/dev/ksan/etfoglasiserver/model/User.java +++ b/src/main/java/dev/ksan/etfoglasiserver/model/User.java @@ -1,29 +1,35 @@ package dev.ksan.etfoglasiserver.model; -import jakarta.persistence.Column; -import jakarta.persistence.Entity; -import jakarta.persistence.GeneratedValue; -import jakarta.persistence.GenerationType; -import jakarta.persistence.Id; +import jakarta.persistence.*; + +import java.time.LocalDateTime; import java.util.UUID; @Entity +@Table(name = "users") public class User { @Id @GeneratedValue(strategy = GenerationType.AUTO) private UUID id; - @Column(nullable = false, unique = true) + @Column(nullable = false, unique = true, length = 255) private String email; - @Column(nullable = false) + @Column(nullable = false, length = 255) private String password; + @Column(nullable = false, updatable = false, columnDefinition = "TIMESTAMP DEFAULT CURRENT_TIMESTAMP") + private LocalDateTime regTime; + public UUID getId() { return id; } + public void setId(UUID id) { + this.id = id; + } + public String getEmail() { return email; } @@ -39,4 +45,8 @@ public class User { public void setPassword(String password) { this.password = password; } + + public LocalDateTime getRegTime() { + return regTime; + } } diff --git a/src/main/java/dev/ksan/etfoglasiserver/repository/UserRepo.java b/src/main/java/dev/ksan/etfoglasiserver/repository/UserRepo.java new file mode 100644 index 0000000..4f1d86a --- /dev/null +++ b/src/main/java/dev/ksan/etfoglasiserver/repository/UserRepo.java @@ -0,0 +1,16 @@ +package dev.ksan.etfoglasiserver.repository; + +import dev.ksan.etfoglasiserver.model.User; +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; +import org.springframework.stereotype.Repository; + +import java.util.Optional; +import java.util.UUID; + +@Repository +public interface UserRepo extends JpaRepository { + + @Query("SELECT u FROM User u WHERE u.email = :email") + Optional findByEmail(String email); +} diff --git a/src/main/java/dev/ksan/etfoglasiserver/service/UserService.java b/src/main/java/dev/ksan/etfoglasiserver/service/UserService.java new file mode 100644 index 0000000..53e7dea --- /dev/null +++ b/src/main/java/dev/ksan/etfoglasiserver/service/UserService.java @@ -0,0 +1,52 @@ +package dev.ksan.etfoglasiserver.service; + +import dev.ksan.etfoglasiserver.dto.UserDTO; +import dev.ksan.etfoglasiserver.model.User; +import dev.ksan.etfoglasiserver.repository.UserRepo; +import java.util.List; +import java.util.Optional; +import java.util.UUID; +import java.util.stream.Collectors; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +@Service +public class UserService { + @Autowired UserRepo userRepo; +/* + public List getUsers() { + return userRepo.findAll().stream().map(this::toDTO).collect(Collectors.toList()); + } + + public UserDTO getUserById(UUID id) { + return userRepo.findById(id).map(this::toDTO).orElse(null); + } + + public UserDTO toDTO(User user) { + return new UserDTO(user.getId(), user.getEmail()); + } +*/ + public List getUsers() { + System.out.println("getUsers"); + return userRepo.findAll(); + } + + public User getUserById(UUID userId) { + return userRepo.findById(userId).orElseThrow(() -> new RuntimeException("User not found")); + } + + public void addUser(User prod) { + userRepo.save(prod); + } + + public void addNewUser(UserDTO userDTO) { + Optional user = userRepo.findByEmail(userDTO.getEmail()); + } + public void updateUser(User prod) { + userRepo.save(prod); + } + + public void deleteUser(UUID userId) { + userRepo.deleteById(userId); + } +}