From bdc4ad826568627d680f97cda715c6cd22f3d8ac Mon Sep 17 00:00:00 2001 From: ChiaraBm Date: Thu, 24 Jul 2025 20:24:00 +0200 Subject: [PATCH] Added id ordering as postgres would return the last changed elements first which breaks pagination --- .../Admin/Nodes/NodeAllocationsController.cs | 1 + .../Controllers/Admin/Nodes/NodesController.cs | 1 + .../Admin/Servers/ServerVariablesController.cs | 1 + .../Controllers/Admin/Servers/ServersController.cs | 2 +- .../Admin/Stars/StarDockerImagesController.cs | 1 + .../Admin/Stars/StarVariablesController.cs | 1 + .../Controllers/Admin/Stars/StarsController.cs | 1 + .../Http/Controllers/Client/ServersController.cs | 14 ++++++++++++-- .../Http/Controllers/Client/SharesController.cs | 13 +++++++++---- .../Http/Controllers/Client/VariablesController.cs | 1 + 10 files changed, 29 insertions(+), 7 deletions(-) diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs index 1b4f755..a1a6a93 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodeAllocationsController.cs @@ -40,6 +40,7 @@ public class NodeAllocationsController : Controller var allocations = await AllocationRepository .Get() + .OrderBy(x => x.Id) .Skip(page * pageSize) .Take(pageSize) .Where(x => x.Node.Id == nodeId) diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodesController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodesController.cs index 3372738..affb20b 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodesController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Nodes/NodesController.cs @@ -39,6 +39,7 @@ public class NodesController : Controller var count = await query.CountAsync(); var items = await query + .OrderBy(x => x.Id) .Skip(page * pageSize) .Take(pageSize) .ToArrayAsync(); diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Servers/ServerVariablesController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Servers/ServerVariablesController.cs index 1d28ad3..53e40ba 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Servers/ServerVariablesController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Servers/ServerVariablesController.cs @@ -43,6 +43,7 @@ public class ServerVariablesController : Controller var variables = await VariableRepository .Get() .Where(x => x.Server.Id == serverId) + .OrderBy(x => x.Id) .Skip(page * pageSize) .Take(pageSize) .ToArrayAsync(); diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Servers/ServersController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Servers/ServersController.cs index 671651a..bfc2276 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Servers/ServersController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Servers/ServersController.cs @@ -66,9 +66,9 @@ public class ServersController : Controller .Include(x => x.Allocations) .Include(x => x.Variables) .Include(x => x.Star) + .OrderBy(x => x.Id) .Skip(page * pageSize) .Take(pageSize) - .OrderBy(x => x.Id) .ToArrayAsync(); var mappedItems = items diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarDockerImagesController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarDockerImagesController.cs index 5317a45..5d2daa8 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarDockerImagesController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarDockerImagesController.cs @@ -52,6 +52,7 @@ public class StarDockerImagesController : Controller var count = await query.CountAsync(); var items = await query + .OrderBy(x => x.Id) .Skip(page * pageSize) .Take(pageSize) .ToArrayAsync(); diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarVariablesController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarVariablesController.cs index 58fdb3d..7a3d8e7 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarVariablesController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarVariablesController.cs @@ -49,6 +49,7 @@ public class StarVariablesController : Controller var count = await query.CountAsync(); var items = await query + .OrderBy(x => x.Id) .Skip(page * pageSize) .Take(pageSize) .ToArrayAsync(); diff --git a/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarsController.cs b/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarsController.cs index 3738abc..193e5c6 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarsController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Admin/Stars/StarsController.cs @@ -34,6 +34,7 @@ public class StarsController : Controller var items = await StarRepository .Get() + .OrderBy(x => x.Id) .Skip(page * pageSize) .Take(pageSize) .ToArrayAsync(); diff --git a/MoonlightServers.ApiServer/Http/Controllers/Client/ServersController.cs b/MoonlightServers.ApiServer/Http/Controllers/Client/ServersController.cs index 12236f2..b7450be 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Client/ServersController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Client/ServersController.cs @@ -71,7 +71,12 @@ public class ServersController : Controller .Where(x => x.OwnerId == userId); var count = await query.CountAsync(); - var items = await query.Skip(page * pageSize).Take(pageSize).ToArrayAsync(); + + var items = await query + .OrderBy(x => x.Id) + .Skip(page * pageSize) + .Take(pageSize) + .ToArrayAsync(); var mappedItems = items.Select(x => new ServerDetailResponse() { @@ -124,7 +129,12 @@ public class ServersController : Controller .Where(x => x.UserId == userId); var count = await query.CountAsync(); - var items = await query.Skip(page * pageSize).Take(pageSize).ToArrayAsync(); + + var items = await query + .OrderBy(x => x.Id) + .Skip(page * pageSize) + .Take(pageSize) + .ToArrayAsync(); var ownerIds = items .Select(x => x.Server.OwnerId) diff --git a/MoonlightServers.ApiServer/Http/Controllers/Client/SharesController.cs b/MoonlightServers.ApiServer/Http/Controllers/Client/SharesController.cs index e3a8a22..ebf2f1e 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Client/SharesController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Client/SharesController.cs @@ -54,7 +54,12 @@ public class SharesController : Controller .Where(x => x.Server.Id == server.Id); var count = await query.CountAsync(); - var items = await query.Skip(page * pageSize).Take(pageSize).ToArrayAsync(); + + var items = await query + .OrderBy(x => x.Id) + .Skip(page * pageSize) + .Take(pageSize) + .ToArrayAsync(); var userIds = items .Select(x => x.UserId) @@ -165,18 +170,18 @@ public class SharesController : Controller throw new HttpApiException("A share with that id cannot be found", 404); share.Content = ShareMapper.MapToServerShareContent(request.Permissions); - + share.UpdatedAt = DateTime.UtcNow; await ShareRepository.Update(share); - + var user = await UserRepository .Get() .FirstOrDefaultAsync(x => x.Id == share.UserId); if (user == null) throw new HttpApiException("A user with that id could not be found", 400); - + var mappedItem = new ServerShareResponse() { Id = share.Id, diff --git a/MoonlightServers.ApiServer/Http/Controllers/Client/VariablesController.cs b/MoonlightServers.ApiServer/Http/Controllers/Client/VariablesController.cs index f721ed0..fc0fa0d 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Client/VariablesController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Client/VariablesController.cs @@ -55,6 +55,7 @@ public class VariablesController : Controller var count = await query.CountAsync(); var starVariables = await query + .OrderBy(x => x.Id) .Skip(page * pageSize) .Take(pageSize) .ToArrayAsync();