From cdb618d2015688ffad4907649cb321334b8a92ee Mon Sep 17 00:00:00 2001 From: jeesou Date: Sun, 20 Jun 2021 01:03:45 +0530 Subject: [PATCH 1/3] User related changes --- .../twitter/controller/UserController.java | 30 +++++++++---------- .../twitter/entity/{Likes.java => Like.java} | 2 +- .../xyz/subho/clone/twitter/entity/User.java | 4 +-- .../{UserResponse.java => UserModel.java} | 24 ++------------- .../twitter/repository/LikesRepository.java | 4 +-- .../clone/twitter/service/UserService.java | 15 +++++----- 6 files changed, 29 insertions(+), 50 deletions(-) rename src/main/java/xyz/subho/clone/twitter/entity/{Likes.java => Like.java} (98%) rename src/main/java/xyz/subho/clone/twitter/model/{UserResponse.java => UserModel.java} (59%) diff --git a/src/main/java/xyz/subho/clone/twitter/controller/UserController.java b/src/main/java/xyz/subho/clone/twitter/controller/UserController.java index f9014c0..9958215 100644 --- a/src/main/java/xyz/subho/clone/twitter/controller/UserController.java +++ b/src/main/java/xyz/subho/clone/twitter/controller/UserController.java @@ -33,7 +33,7 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import xyz.subho.clone.twitter.model.UserResponse; +import xyz.subho.clone.twitter.model.UserModel; import xyz.subho.clone.twitter.service.UserService; import xyz.subho.clone.twitter.utility.Utility; @@ -48,54 +48,54 @@ public class UserController { @Autowired private Utility utility; @GetMapping("/{userNameOrUserId}") - ResponseEntity getUserByUserIdOrUserName( + public ResponseEntity getUserByUserIdOrUserName( @PathVariable("userNameOrUserId") String userNameOrUserId) { - UserResponse userResponse; + UserModel userResponse; if (userNameOrUserId.startsWith("@")) { var username = userNameOrUserId.substring(1); - userResponse = new UserResponse(userService.getUserByUserName(username)); + userResponse = userService.getUserByUserName(username); return new ResponseEntity<>(userResponse, HttpStatus.OK); } var userId = utility.converStringToUUID(userNameOrUserId); - userResponse = new UserResponse(userService.getUserByUserId(userId)); + userResponse = userService.getUserByUserId(userId); return new ResponseEntity<>(userResponse, HttpStatus.OK); } @PostMapping - ResponseEntity createUser(@RequestBody UserResponse userResponse) { - UserResponse createdUser = new UserResponse(userService.addUser(userResponse)); + public ResponseEntity createUser(@RequestBody UserModel userResponse) { + UserModel createdUser = userService.addUser(userResponse); return new ResponseEntity<>(createdUser, HttpStatus.OK); } @PatchMapping - ResponseEntity updateUser(@RequestBody UserResponse userResponse) { - UserResponse updatedUser = new UserResponse(userService.editUser(userResponse)); + public ResponseEntity updateUser(@RequestBody UserModel userResponse) { + UserModel updatedUser = userService.editUser(userResponse); return new ResponseEntity<>(updatedUser, HttpStatus.OK); } @PutMapping("/{userId}/follow") - ResponseEntity addFollower(@PathVariable UUID userId) { + public ResponseEntity addFollower(@PathVariable UUID userId) { userService.addFollower(userId); return new ResponseEntity<>(HttpStatus.OK); } @DeleteMapping("/{userId}/follow") - ResponseEntity removeFollower(@PathVariable("userId") UUID userId) { + public ResponseEntity removeFollower(@PathVariable("userId") UUID userId) { userService.removeFollower(userId); return new ResponseEntity<>(HttpStatus.OK); } @GetMapping("/{userId}/followers") - ResponseEntity> getFollowers(@PathVariable("userId") UUID userId) { - List followers = userService.getFollowers(userId); + public ResponseEntity> getFollowers(@PathVariable("userId") UUID userId) { + List followers = userService.getFollowers(userId); return new ResponseEntity<>(followers, HttpStatus.OK); } @GetMapping("/{userId}/followings") - ResponseEntity> getFollowings(@PathVariable("userId") UUID userId) { - List followings = userService.getFollowings(userId); + public ResponseEntity> getFollowings(@PathVariable("userId") UUID userId) { + List followings = userService.getFollowings(userId); return new ResponseEntity<>(followings, HttpStatus.OK); } } diff --git a/src/main/java/xyz/subho/clone/twitter/entity/Likes.java b/src/main/java/xyz/subho/clone/twitter/entity/Like.java similarity index 98% rename from src/main/java/xyz/subho/clone/twitter/entity/Likes.java rename to src/main/java/xyz/subho/clone/twitter/entity/Like.java index 06541ee..e7998cb 100644 --- a/src/main/java/xyz/subho/clone/twitter/entity/Likes.java +++ b/src/main/java/xyz/subho/clone/twitter/entity/Like.java @@ -31,7 +31,7 @@ @Entity @Table(name = "likes") @Data -public class Likes { +public class Like { @Id @GeneratedValue(strategy = GenerationType.AUTO) diff --git a/src/main/java/xyz/subho/clone/twitter/entity/User.java b/src/main/java/xyz/subho/clone/twitter/entity/User.java index 901ac50..8ec806e 100644 --- a/src/main/java/xyz/subho/clone/twitter/entity/User.java +++ b/src/main/java/xyz/subho/clone/twitter/entity/User.java @@ -48,8 +48,6 @@ public class User { @Column(unique = true, length = 30) private String username; - private String password; - @Column(length = 50) private String name; @@ -68,7 +66,7 @@ public class User { @OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JsonIgnore - private List userLikes = new ArrayList<>(); + private List userLikes = new ArrayList<>(); @ElementCollection Map follower = new HashMap<>(); diff --git a/src/main/java/xyz/subho/clone/twitter/model/UserResponse.java b/src/main/java/xyz/subho/clone/twitter/model/UserModel.java similarity index 59% rename from src/main/java/xyz/subho/clone/twitter/model/UserResponse.java rename to src/main/java/xyz/subho/clone/twitter/model/UserModel.java index 9cedc67..5519673 100644 --- a/src/main/java/xyz/subho/clone/twitter/model/UserResponse.java +++ b/src/main/java/xyz/subho/clone/twitter/model/UserModel.java @@ -22,12 +22,9 @@ import java.util.List; import java.util.UUID; import lombok.Data; -import xyz.subho.clone.twitter.entity.Likes; -import xyz.subho.clone.twitter.entity.Post; -import xyz.subho.clone.twitter.entity.User; @Data -public class UserResponse { +public class UserModel { private UUID id; private String username; @@ -37,21 +34,6 @@ public class UserResponse { private Long followerCount; private Long followingCount; private Boolean verified; - private List userLikes = new ArrayList<>(); - private List userPosts = new ArrayList<>(); - - /** @param Users (Entity) */ - public UserResponse(User userEntity) { - - this.id = userEntity.getId(); - this.username = userEntity.getUsername(); - this.name = userEntity.getName(); - this.avatar = userEntity.getAvatar(); - this.bio = userEntity.getBio(); - this.followerCount = userEntity.getFollowerCount(); - this.followingCount = userEntity.getFollowingCount(); - this.verified = userEntity.getVerified(); - this.userLikes = userEntity.getUserLikes(); - this.userPosts = userEntity.getUserPosts(); - } + private List userLikes = new ArrayList<>(); + private List userPosts = new ArrayList<>(); } diff --git a/src/main/java/xyz/subho/clone/twitter/repository/LikesRepository.java b/src/main/java/xyz/subho/clone/twitter/repository/LikesRepository.java index 33fe25b..10e0e37 100644 --- a/src/main/java/xyz/subho/clone/twitter/repository/LikesRepository.java +++ b/src/main/java/xyz/subho/clone/twitter/repository/LikesRepository.java @@ -20,6 +20,6 @@ import java.util.UUID; import org.springframework.data.jpa.repository.JpaRepository; -import xyz.subho.clone.twitter.entity.Likes; +import xyz.subho.clone.twitter.entity.Like; -public interface LikesRepository extends JpaRepository {} +public interface LikesRepository extends JpaRepository {} diff --git a/src/main/java/xyz/subho/clone/twitter/service/UserService.java b/src/main/java/xyz/subho/clone/twitter/service/UserService.java index 2d97653..f058a06 100644 --- a/src/main/java/xyz/subho/clone/twitter/service/UserService.java +++ b/src/main/java/xyz/subho/clone/twitter/service/UserService.java @@ -20,24 +20,23 @@ import java.util.List; import java.util.UUID; -import xyz.subho.clone.twitter.entity.User; -import xyz.subho.clone.twitter.model.UserResponse; +import xyz.subho.clone.twitter.model.UserModel; public interface UserService { - public User getUserByUserName(String username); + public UserModel getUserByUserName(String username); - public User getUserByUserId(UUID userId); + public UserModel getUserByUserId(UUID userId); - public User addUser(UserResponse user); + public UserModel addUser(UserModel user); - public User editUser(UserResponse user); + public UserModel editUser(UserModel user); public boolean addFollower(UUID followerId); public boolean removeFollower(UUID followerId); - public List getFollowers(UUID userId); + public List getFollowers(UUID userId); - public List getFollowings(UUID userId); + public List getFollowings(UUID userId); } From 9557dcc72d8b12288b759d952194cfa49bd003b3 Mon Sep 17 00:00:00 2001 From: jeesou Date: Sun, 20 Jun 2021 01:24:51 +0530 Subject: [PATCH 2/3] Model class changes --- .../xyz/subho/clone/twitter/entity/Post.java | 2 +- .../clone/twitter/model/HashtagModel.java | 15 ++++++++++ .../clone/twitter/model/HashtagPostModel.java | 12 ++++++++ .../subho/clone/twitter/model/LikeModel.java | 12 ++++++++ .../subho/clone/twitter/model/PostModel.java | 28 +++++++++++++++++++ 5 files changed, 68 insertions(+), 1 deletion(-) create mode 100644 src/main/java/xyz/subho/clone/twitter/model/HashtagModel.java create mode 100644 src/main/java/xyz/subho/clone/twitter/model/HashtagPostModel.java create mode 100644 src/main/java/xyz/subho/clone/twitter/model/LikeModel.java create mode 100644 src/main/java/xyz/subho/clone/twitter/model/PostModel.java diff --git a/src/main/java/xyz/subho/clone/twitter/entity/Post.java b/src/main/java/xyz/subho/clone/twitter/entity/Post.java index 0037311..c062fdd 100644 --- a/src/main/java/xyz/subho/clone/twitter/entity/Post.java +++ b/src/main/java/xyz/subho/clone/twitter/entity/Post.java @@ -83,5 +83,5 @@ public class Post { @OneToMany(mappedBy = "post", cascade = CascadeType.ALL, fetch = FetchType.LAZY) @JsonIgnore - private List postLikes = new ArrayList<>(); + private List postLikes = new ArrayList<>(); } diff --git a/src/main/java/xyz/subho/clone/twitter/model/HashtagModel.java b/src/main/java/xyz/subho/clone/twitter/model/HashtagModel.java new file mode 100644 index 0000000..0a8f9cd --- /dev/null +++ b/src/main/java/xyz/subho/clone/twitter/model/HashtagModel.java @@ -0,0 +1,15 @@ +package xyz.subho.clone.twitter.model; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; +import lombok.Data; + +@Data +public class HashtagModel { + + private UUID id; + private String tag; + private Long recentPostCount; + private List hashtagPosts = new ArrayList<>(); +} diff --git a/src/main/java/xyz/subho/clone/twitter/model/HashtagPostModel.java b/src/main/java/xyz/subho/clone/twitter/model/HashtagPostModel.java new file mode 100644 index 0000000..77184a5 --- /dev/null +++ b/src/main/java/xyz/subho/clone/twitter/model/HashtagPostModel.java @@ -0,0 +1,12 @@ +package xyz.subho.clone.twitter.model; + +import java.util.UUID; +import lombok.Data; + +@Data +public class HashtagPostModel { + + private UUID id; + private HashtagModel hashtag; + private PostModel post; +} diff --git a/src/main/java/xyz/subho/clone/twitter/model/LikeModel.java b/src/main/java/xyz/subho/clone/twitter/model/LikeModel.java new file mode 100644 index 0000000..f6aa2d8 --- /dev/null +++ b/src/main/java/xyz/subho/clone/twitter/model/LikeModel.java @@ -0,0 +1,12 @@ +package xyz.subho.clone.twitter.model; + +import java.util.UUID; +import lombok.Data; + +@Data +public class LikeModel { + + private UUID id; + private PostModel post; + private UserModel user; +} diff --git a/src/main/java/xyz/subho/clone/twitter/model/PostModel.java b/src/main/java/xyz/subho/clone/twitter/model/PostModel.java new file mode 100644 index 0000000..ee85960 --- /dev/null +++ b/src/main/java/xyz/subho/clone/twitter/model/PostModel.java @@ -0,0 +1,28 @@ +package xyz.subho.clone.twitter.model; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.UUID; +import lombok.Data; +import xyz.subho.clone.twitter.entity.Like; +import xyz.subho.clone.twitter.entity.User; + +@Data +public class PostModel { + + private UUID id; + private String text; + private User user; + private Long likeCount; + private Long repostCount; + private UUID originalPostId; + private UUID replyToId; + private Date timestamp; + private Map hashtags = new HashMap<>(); + private Map mentions = new HashMap<>(); + private List postHashtags = new ArrayList<>(); + private List postLikes = new ArrayList<>(); +} From 7b2dff59b1cccbb7ef06f532f0182a3b84d2057f Mon Sep 17 00:00:00 2001 From: jeesou Date: Sun, 20 Jun 2021 01:48:32 +0530 Subject: [PATCH 3/3] formatting changes --- src/main/java/xyz/subho/clone/twitter/model/PostModel.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/xyz/subho/clone/twitter/model/PostModel.java b/src/main/java/xyz/subho/clone/twitter/model/PostModel.java index ee85960..de998a8 100644 --- a/src/main/java/xyz/subho/clone/twitter/model/PostModel.java +++ b/src/main/java/xyz/subho/clone/twitter/model/PostModel.java @@ -7,7 +7,6 @@ import java.util.Map; import java.util.UUID; import lombok.Data; -import xyz.subho.clone.twitter.entity.Like; import xyz.subho.clone.twitter.entity.User; @Data