Task 3: service contract (interface + DTOs) and FriendService skeleton. All methods throw NotImplementedException; Tasks 4-6 fill in the logic. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
31 lines
1.6 KiB
C#
31 lines
1.6 KiB
C#
namespace SVSim.Database.Services.Friend;
|
|
|
|
public interface IFriendService
|
|
{
|
|
Task<FriendInfoResult> GetFriendsAsync(long viewerId, CancellationToken ct);
|
|
Task<ReceiveApplyInfoResult> GetReceiveAppliesAsync(long viewerId, CancellationToken ct);
|
|
Task<SendApplyInfoResult> GetSendAppliesAsync(long viewerId, CancellationToken ct);
|
|
Task<PlayedTogetherResult> GetPlayedTogetherAsync(long viewerId, CancellationToken ct);
|
|
|
|
/// <summary>Returns null when not found, self-search, or any error.</summary>
|
|
Task<FriendEntry?> SearchAsync(long viewerId, int targetViewerId, CancellationToken ct);
|
|
|
|
/// <summary>No-op if target missing, self, already friends, already-pending apply, or at outgoing-apply cap.</summary>
|
|
Task SendApplyAsync(long viewerId, int targetViewerId, CancellationToken ct);
|
|
|
|
/// <summary>No-op if apply not addressed to caller, would push either side past friend cap. Cleans reverse-direction apply if present.</summary>
|
|
Task ApproveApplyAsync(long viewerId, int applyId, CancellationToken ct);
|
|
|
|
/// <summary>No-op if apply not addressed to caller.</summary>
|
|
Task RejectApplyAsync(long viewerId, int applyId, CancellationToken ct);
|
|
|
|
/// <summary>No-op if apply not sent by caller.</summary>
|
|
Task CancelApplyAsync(long viewerId, int applyId, CancellationToken ct);
|
|
|
|
Task RejectAllAppliesAsync(long viewerId, CancellationToken ct);
|
|
Task CancelAllAppliesAsync(long viewerId, CancellationToken ct);
|
|
|
|
/// <summary>Deletes both directions of the friendship (A→B and B→A).</summary>
|
|
Task RejectFriendAsync(long viewerId, int targetViewerId, CancellationToken ct);
|
|
}
|