using Fitness_core_BE.Models; namespace Fitness_core_BE.Interfaces { public interface IFeedRepository { Task GetFeedPostByIdAsync(Guid creatorId, Guid postId); Task> GetFeedListAsync(int skip, int take); Task IsLikedAsync(Guid postId, Guid userId); Task AddLikeAsync(Guid postId, Guid userId); Task RemoveLikeAsync(Guid postId, Guid userId); Task CreateFeedAsync(FeedPost feedPost, CancellationToken ct = default); Task GetLikeCountAsync(Guid postId); Task> GetFeedByClientAsync(Guid clientId); Task<(Guid? ClientId, List Posts)> GetFeedForCustomerAsync( Guid customerUserId, int skip, int take, CancellationToken ct = default); Task DeletePostPostIdAsync(Guid creatorId, Guid postId); // Resolves a feed poster's user id to the gym (Client) they own, then returns the ids of // all customers with an active subscription at that gym — used to fan out a push // notification to every member when the gym owner creates a post. Returns an empty list // for staff-authored posts or any poster who isn't a Client owner. Task> GetActiveCustomerIdsByPosterUserIdAsync(Guid posterUserId, CancellationToken ct = default); } }