Newer
Older
tampopo-server / src / main / java / org / ntlab / tampoposerver / services / FriendService.java
package org.ntlab.tampoposerver.services;

import org.ntlab.tampoposerver.models.FriendPair;
import org.ntlab.tampoposerver.models.FriendRequest;
import org.ntlab.tampoposerver.repositories.FriendRepository;
import org.ntlab.tampoposerver.repositories.FriendRequestRepository;
import org.ntlab.tampoposerver.repositories.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.Optional;

// MEMO: ユーザーのトークンを認証するところはUserRepositoryに任せる
// MEMO: フレンド系の操作で認証が必要な場合はここで対応する
@Service
public class FriendService {
    private final UserRepository userRepository;
    private final FriendRepository friendRepository;
    private final FriendRequestRepository friendRequestRepository;

    @Autowired
    public FriendService(UserRepository userRepository, FriendRepository friendRepository, FriendRequestRepository friendRequestRepository) {
        this.userRepository = userRepository;
        this.friendRepository = friendRepository;
        this.friendRequestRepository = friendRequestRepository;
    }

    /**
     * 新しいフレンドリクエストを作成する
     *
     * @param token      APIリクエストをしてきたユーザーの認証用トークン
     * @param senderId   フレンドリクエストを送ったユーザーのユーザーID
     * @param receiverId フレンドリクエストを受け取ったユーザーのユーザーID
     * @return 作成されたフレンドリクエストのインスタンス
     */
    public Optional<FriendRequest> createFriendRequest(String token, String senderId, String receiverId) {
        return Optional.empty();
    }

    /**
     * ユーザー自身に関連するフレンドリクエストをすべて返す
     *
     * @param token ユーザー認証用のトークン
     * @return ユーザー自身に関連するすべてのフレンドリクエストのインスタンス(リクエストがなければ空のリスト)
     */
    public ArrayList<FriendRequest> getFriendRequests(String token) {
        return new ArrayList<>();
    }

    /**
     * 指定したフレンドリクエストを削除する
     *
     * @param token           APIリクエストをしてきたユーザーの認証用トークン
     * @param friendRequestId 削除する対象のフレンドリクエストのID
     * @return 削除に成功したらtrue, それ以外はfalse
     */
    public boolean removeFriendRequest(String token, int friendRequestId) {
        return false;
    }

    /**
     * 新しくフレンドペアを作成する
     *
     * @param token   APIリクエストをしてきたユーザーの認証用トークン
     * @param user0Id 片方のユーザーのユーザーID
     * @param user1Id もう一方のユーザーのユーザーID
     * @return 追加されたフレンドペアのインスタンス
     */
    public Optional<FriendPair> createFriendPair(String token, String user0Id, String user1Id) {
        return Optional.empty();
    }

    /**
     * 指定したフレンドのペアを取得する
     *
     * @param token        APIリクエストをしてきたユーザーの認証用トークン
     * @param friendPairId 取得する対象のフレンドペアのID
     * @return 渡したフレンドペアのIDに対応したフレンドペア
     */
    public Optional<FriendPair> getFriendPair(String token, int friendPairId) {
        return Optional.empty();
    }

    /**
     * 指定したフレンドのペアを削除する
     *
     * @param token        APIリクエストをしてきたユーザーの認証用トークン
     * @param friendPairId 削除する対象のフレンドペアのID
     * @return 削除に成功したらtrue, それ以外はfalse
     */
    public boolean removeFriendPair(String token, int friendPairId) {
        return false;
    }
}