/* * Copyright (C) 2008-2020, Juick * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package com.juick.service; import com.juick.model.Message; import com.juick.model.Reaction; import com.juick.model.User; import com.juick.model.ResponseReply; import com.juick.model.Tag; import org.apache.commons.lang3.tuple.Pair; import java.net.URI; import java.util.*; /** * Created by aalexeev on 11/13/16. */ public interface MessagesService { int createMessage(int uid, String txt, String attachment, List<Tag> tags); int createReply(int mid, int rid, User user, String txt, String attachment); enum RecommendStatus { Error, Added, Deleted } RecommendStatus recommendMessage(int mid, int vuid, String userUri); RecommendStatus recommendMessage(int mid, int vuid); List<Reaction> listReactions(); RecommendStatus likeMessage(int mid, int vuid, Integer reaction); RecommendStatus likeMessage(int mid, int vuid, Integer reaction, String userUri); boolean canViewThread(int mid, int uid); boolean isReadOnly(int mid); boolean isSubscribed(int uid, int mid); int getMessagePrivacy(int mid); Optional<Message> getMessage(int mid); Message getReply(int mid, int rid); Message getReplyByUri(String replyUri); User getMessageAuthor(int mid); List<Pair<Integer, User>> getMessagesRecommendations(Collection<Integer> mids); List<Integer> getAll(int visitorUid, int before); List<Integer> getTag(int tid, int visitorUid, int before, int cnt); List<Integer> getTags(String tids, int visitorUid, int before, int cnt); List<Integer> getPlace(int placeId, int visitorUid, int before); List<Integer> getMyFeed(int uid, int before, boolean recommended); List<Integer> getPrivate(int uid, int before); List<Integer> getDiscussions(int uid, Long to); List<Integer> getRecommended(int uid, int before); List<Integer> getPopular(int visitorUid, int before); List<Integer> getPhotos(int visitorUid, int before); List<Integer> getSearch(User visitor, String search, int page); List<Integer> getUserBlog(int uid, int privacy, int before); List<Integer> getUserTag(int uid, int tid, int privacy, int before); List<Integer> getUserBlogAtDay(int uid, int privacy, int daysback); List<Integer> getUserBlogWithRecommendations(int uid, int privacy, int before); List<Integer> getUserRecommendations(int uid, int before); List<Integer> getUserPhotos(int uid, int privacy, int before); List<Integer> getUserSearch(User visitor, int UID, String search, int privacy, int page); List<Message> getMessages(User visitor, List<Integer> mids); Map<Integer,Set<Reaction>> updateReactionsFor(final List<Integer> mid); List<Message> getReplies(User user, int mid); boolean setMessagePopular(int mid, int popular); boolean setMessagePrivacy(int mid); boolean deleteMessage(int uid, int mid); boolean deleteReply(int uid, int mid, int rid); List<Integer> getLastMessages(int hours); List<ResponseReply> getLastReplies(int hours); List<Integer> getPopularCandidates(); void setLastReadComment(User user, Integer mid, Integer rid); void setRead(User user, Integer mid); List<Integer> getUnread(User user); boolean updateMessage(Integer mid, Integer rid, String body); boolean updateReplyUri(Message reply, URI replyUri); boolean replyExists(URI replyUri); boolean deleteReply(URI userUri, URI replyUri); String getMessageProperty(Integer mid, Integer rid, String key); void setMessageProperty(Integer mid, Integer rid, String key, String value); Optional<Pair<Integer, Integer>> findMessageByProperty(String key, String value); }