diff --git a/DysonNetwork.Sphere/Publisher/PublisherSubscriptionController.cs b/DysonNetwork.Sphere/Publisher/PublisherSubscriptionController.cs
index a195d23..b656fc3 100644
--- a/DysonNetwork.Sphere/Publisher/PublisherSubscriptionController.cs
+++ b/DysonNetwork.Sphere/Publisher/PublisherSubscriptionController.cs
@@ -91,11 +91,60 @@ public class PublisherSubscriptionController(
/// List of active subscriptions
[HttpGet("subscriptions")]
[Authorize]
- public async Task>> GetCurrentSubscriptions()
+ public async Task>> GetCurrentSubscriptions(
+ [FromQuery] int offset = 0,
+ [FromQuery] int take = 20
+ )
{
if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized();
+ var accountId = Guid.Parse(currentUser.Id);
- var subscriptions = await subs.GetAccountSubscriptionsAsync(Guid.Parse(currentUser.Id));
- return subscriptions;
+ var pubQuery = db.PublisherSubscriptions
+ .Include(ps => ps.Publisher)
+ .Where(ps => ps.AccountId == accountId && ps.Status == PublisherSubscriptionStatus.Active)
+ .OrderByDescending(ps => ps.CreatedAt)
+ .AsQueryable();
+
+ var totalCount = await pubQuery.CountAsync();
+ var subscriptions = await pubQuery
+ .Take(take)
+ .Skip(offset)
+ .ToListAsync();
+
+ Response.Headers["X-Total"] = totalCount.ToString();
+
+ return Ok(subscriptions);
+ }
+
+ ///
+ /// Get all subscriptions of categories and tags for the current user
+ ///
+ /// List of active subscription
+ [HttpGet("subscriptions/categories")]
+ [Authorize]
+ public async Task>> ListCategoriesSubscription(
+ [FromQuery] int offset = 0,
+ [FromQuery] int take = 20
+ )
+ {
+ if (HttpContext.Items["CurrentUser"] is not Account currentUser) return Unauthorized();
+ var accountId = Guid.Parse(currentUser.Id);
+
+ var pubQuery = db.PostCategorySubscriptions
+ .Include(ps => ps.Tag)
+ .Include(ps => ps.Category)
+ .Where(ps => ps.AccountId == accountId)
+ .OrderByDescending(ps => ps.CreatedAt)
+ .AsQueryable();
+
+ var totalCount = await pubQuery.CountAsync();
+ var subscriptions = await pubQuery
+ .Take(take)
+ .Skip(offset)
+ .ToListAsync();
+
+ Response.Headers["X-Total"] = totalCount.ToString();
+
+ return Ok(subscriptions);
}
}
\ No newline at end of file