feat(friend): IFriendService + IPlayedTogetherWriter + DTO records
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>
This commit is contained in:
30
SVSim.Database/Services/Friend/IFriendService.cs
Normal file
30
SVSim.Database/Services/Friend/IFriendService.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
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);
|
||||
}
|
||||
Reference in New Issue
Block a user