Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use Model and Controller changes #11

Merged
merged 3 commits into from
Jun 19, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand All @@ -48,54 +48,54 @@ public class UserController {
@Autowired private Utility utility;

@GetMapping("/{userNameOrUserId}")
ResponseEntity<UserResponse> getUserByUserIdOrUserName(
public ResponseEntity<UserModel> 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<UserResponse> createUser(@RequestBody UserResponse userResponse) {
UserResponse createdUser = new UserResponse(userService.addUser(userResponse));
public ResponseEntity<UserModel> createUser(@RequestBody UserModel userResponse) {
UserModel createdUser = userService.addUser(userResponse);
return new ResponseEntity<>(createdUser, HttpStatus.OK);
}

@PatchMapping
ResponseEntity<UserResponse> updateUser(@RequestBody UserResponse userResponse) {
UserResponse updatedUser = new UserResponse(userService.editUser(userResponse));
public ResponseEntity<UserModel> updateUser(@RequestBody UserModel userResponse) {
UserModel updatedUser = userService.editUser(userResponse);
return new ResponseEntity<>(updatedUser, HttpStatus.OK);
}

@PutMapping("/{userId}/follow")
ResponseEntity<HttpStatus> addFollower(@PathVariable UUID userId) {
public ResponseEntity<HttpStatus> addFollower(@PathVariable UUID userId) {
userService.addFollower(userId);
return new ResponseEntity<>(HttpStatus.OK);
}

@DeleteMapping("/{userId}/follow")
ResponseEntity<HttpStatus> removeFollower(@PathVariable("userId") UUID userId) {
public ResponseEntity<HttpStatus> removeFollower(@PathVariable("userId") UUID userId) {
userService.removeFollower(userId);
return new ResponseEntity<>(HttpStatus.OK);
}

@GetMapping("/{userId}/followers")
ResponseEntity<List<UserResponse>> getFollowers(@PathVariable("userId") UUID userId) {
List<UserResponse> followers = userService.getFollowers(userId);
public ResponseEntity<List<UserModel>> getFollowers(@PathVariable("userId") UUID userId) {
List<UserModel> followers = userService.getFollowers(userId);
return new ResponseEntity<>(followers, HttpStatus.OK);
}

@GetMapping("/{userId}/followings")
ResponseEntity<List<UserResponse>> getFollowings(@PathVariable("userId") UUID userId) {
List<UserResponse> followings = userService.getFollowings(userId);
public ResponseEntity<List<UserModel>> getFollowings(@PathVariable("userId") UUID userId) {
List<UserModel> followings = userService.getFollowings(userId);
return new ResponseEntity<>(followings, HttpStatus.OK);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
@Entity
@Table(name = "likes")
@Data
public class Likes {
public class Like {

@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/xyz/subho/clone/twitter/entity/Post.java
Original file line number Diff line number Diff line change
Expand Up @@ -83,5 +83,5 @@ public class Post {

@OneToMany(mappedBy = "post", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JsonIgnore
private List<Likes> postLikes = new ArrayList<>();
private List<Like> postLikes = new ArrayList<>();
}
4 changes: 1 addition & 3 deletions src/main/java/xyz/subho/clone/twitter/entity/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -48,8 +48,6 @@ public class User {
@Column(unique = true, length = 30)
private String username;

private String password;

@Column(length = 50)
private String name;

Expand All @@ -68,7 +66,7 @@ public class User {

@OneToMany(mappedBy = "user", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JsonIgnore
private List<Likes> userLikes = new ArrayList<>();
private List<Like> userLikes = new ArrayList<>();

@ElementCollection Map<UUID, String> follower = new HashMap<>();

Expand Down
15 changes: 15 additions & 0 deletions src/main/java/xyz/subho/clone/twitter/model/HashtagModel.java
Original file line number Diff line number Diff line change
@@ -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<HashtagPostModel> hashtagPosts = new ArrayList<>();
}
12 changes: 12 additions & 0 deletions src/main/java/xyz/subho/clone/twitter/model/HashtagPostModel.java
Original file line number Diff line number Diff line change
@@ -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;
}
12 changes: 12 additions & 0 deletions src/main/java/xyz/subho/clone/twitter/model/LikeModel.java
Original file line number Diff line number Diff line change
@@ -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;
}
27 changes: 27 additions & 0 deletions src/main/java/xyz/subho/clone/twitter/model/PostModel.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
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.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<UUID, String> hashtags = new HashMap<>();
private Map<UUID, String> mentions = new HashMap<>();
private List<HashtagPostModel> postHashtags = new ArrayList<>();
private List<LikeModel> postLikes = new ArrayList<>();
}
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -37,21 +34,6 @@ public class UserResponse {
private Long followerCount;
private Long followingCount;
private Boolean verified;
private List<Likes> userLikes = new ArrayList<>();
private List<Post> 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<LikeModel> userLikes = new ArrayList<>();
private List<PostModel> userPosts = new ArrayList<>();
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<Likes, UUID> {}
public interface LikesRepository extends JpaRepository<Like, UUID> {}
15 changes: 7 additions & 8 deletions src/main/java/xyz/subho/clone/twitter/service/UserService.java
Original file line number Diff line number Diff line change
Expand Up @@ -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<UserResponse> getFollowers(UUID userId);
public List<UserModel> getFollowers(UUID userId);

public List<UserResponse> getFollowings(UUID userId);
public List<UserModel> getFollowings(UUID userId);
}