From 0c0ea8897e64461b1cfa9cd86a939b48f0bdd640 Mon Sep 17 00:00:00 2001 From: Vitaly Takmazov Date: Sat, 3 Dec 2022 15:28:06 +0300 Subject: Initial PostgreSQL schema and profile --- .../com/juick/service/SubscriptionServiceImpl.java | 30 ++++++++++++++-------- 1 file changed, 20 insertions(+), 10 deletions(-) (limited to 'src/main/java/com/juick/service/SubscriptionServiceImpl.java') diff --git a/src/main/java/com/juick/service/SubscriptionServiceImpl.java b/src/main/java/com/juick/service/SubscriptionServiceImpl.java index 962f8460..ca813c67 100644 --- a/src/main/java/com/juick/service/SubscriptionServiceImpl.java +++ b/src/main/java/com/juick/service/SubscriptionServiceImpl.java @@ -25,6 +25,7 @@ import com.juick.util.MessageUtils; import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.IteratorUtils; import org.apache.commons.collections4.ListUtils; +import org.springframework.dao.DataIntegrityViolationException; import org.springframework.dao.DuplicateKeyException; import org.springframework.jdbc.core.namedparam.MapSqlParameterSource; import org.springframework.stereotype.Repository; @@ -69,7 +70,8 @@ public class SubscriptionServiceImpl extends BaseJdbcService implements Subscrip Set set = new HashSet<>(users.stream() .filter(u -> !u.isBanned()) - .map(User::getUid).filter(u -> Collections.disjoint(tagService.getUserBLTags(u), tagsStr)) + .map(User::getUid) + .filter(u -> Collections.disjoint(tagService.getUserBLTags(u), tagsStr)) .collect(Collectors.toList())); if (!tags.isEmpty()) { @@ -121,7 +123,8 @@ public class SubscriptionServiceImpl extends BaseJdbcService implements Subscrip return userService.getUserReaders(uid).stream() .filter(u -> !u.equals(msg.getUser())) .filter(u -> !userService.isInBLAny(u.getUid(), msg.getUser().getUid())) - .filter(u -> Collections.disjoint(tagService.getUserBLTags(u.getUid()), msgTags)) + .filter(u -> Collections.disjoint(tagService.getUserBLTags(u.getUid()), + msgTags)) .collect(Collectors.toList()); } return Collections.emptyList(); @@ -130,11 +133,15 @@ public class SubscriptionServiceImpl extends BaseJdbcService implements Subscrip @Transactional @Override public boolean subscribeMessage(final Message message, final User user) { - boolean result = getJdbcTemplate().update( - "INSERT INTO subscr_messages(suser_id, message_id) VALUES (?, ?) ON DUPLICATE KEY UPDATE suser_id=?", - user.getUid(), message.getMid(), user.getUid()) == 1; - messagesService.setLastReadComment(user, message.getMid(), message.getReplies()); - return result; + try { + boolean result = getJdbcTemplate().update( + "INSERT INTO subscr_messages(suser_id, message_id) VALUES (?, ?)", + user.getUid(), message.getMid()) == 1; + messagesService.setLastReadComment(user, message.getMid(), message.getReplies()); + return result; + } catch (DataIntegrityViolationException e) { + return false; + } } @Transactional @@ -149,7 +156,8 @@ public class SubscriptionServiceImpl extends BaseJdbcService implements Subscrip public boolean subscribeUser(final User user, final User toUser) { try { return getJdbcTemplate().update( - "INSERT INTO subscr_users(user_id,suser_id) VALUES (?,?)", toUser.getUid(), user.getUid()) == 1; + "INSERT INTO subscr_users(user_id,suser_id) VALUES (?,?)", toUser.getUid(), + user.getUid()) == 1; } catch (DuplicateKeyException e) { return true; } @@ -159,7 +167,8 @@ public class SubscriptionServiceImpl extends BaseJdbcService implements Subscrip @Override public boolean unSubscribeUser(final User user, final User fromUser) { return getJdbcTemplate().update( - "DELETE FROM subscr_users WHERE suser_id=? AND user_id=?", user.getUid(), fromUser.getUid()) > 0; + "DELETE FROM subscr_users WHERE suser_id=? AND user_id=?", user.getUid(), + fromUser.getUid()) > 0; } @Transactional @@ -168,7 +177,8 @@ public class SubscriptionServiceImpl extends BaseJdbcService implements Subscrip try { return getJdbcTemplate().update( - "INSERT INTO subscr_tags(tag_id,suser_id) VALUES (?,?)", toTag.TID, user.getUid()) == 1; + "INSERT INTO subscr_tags(tag_id,suser_id) VALUES (?,?)", toTag.TID, + user.getUid()) == 1; } catch (DuplicateKeyException e) { return true; } -- cgit v1.2.3