diff --git a/MoonlightServers.ApiServer/Http/Controllers/Users/ServersController.cs b/MoonlightServers.ApiServer/Http/Controllers/Users/ServersController.cs index fc634fb..7b2abb4 100644 --- a/MoonlightServers.ApiServer/Http/Controllers/Users/ServersController.cs +++ b/MoonlightServers.ApiServer/Http/Controllers/Users/ServersController.cs @@ -27,9 +27,9 @@ public class ServersController : Controller NodeService = nodeService; } - [HttpGet("list")] + [HttpGet] [RequirePermission("meta.authenticated")] - public async Task> List([FromQuery] int page, [FromQuery] int pageSize) + public async Task> GetAll([FromQuery] int page, [FromQuery] int pageSize) { var user = User.AsIdentity(); @@ -39,7 +39,7 @@ public class ServersController : Controller .Include(x => x.Star) .Include(x => x.Node) .Where(x => x.OwnerId == user.Id); - + var count = await query.CountAsync(); var items = await query.Skip(page * pageSize).Take(pageSize).ToArrayAsync(); @@ -56,7 +56,7 @@ public class ServersController : Controller IpAddress = y.IpAddress }).ToArray() }).ToArray(); - + return new PagedData() { Items = mappedItems, @@ -67,6 +67,33 @@ public class ServersController : Controller }; } + [HttpGet("{serverId:int}")] + [RequirePermission("meta.authenticated")] + public async Task Get([FromRoute] int serverId) + { + var server = await GetServerWithPermCheck( + serverId, + query => + query + .Include(x => x.Allocations) + .Include(x => x.Star) + ); + + return new ServerDetailResponse() + { + Id = server.Id, + Name = server.Name, + NodeName = server.Node.Name, + StarName = server.Star.Name, + Allocations = server.Allocations.Select(y => new AllocationDetailResponse() + { + Id = y.Id, + Port = y.Port, + IpAddress = y.IpAddress + }).ToArray() + }; + } + [HttpGet("{serverId:int}/status")] [RequirePermission("meta.authenticated")] public async Task GetStatus([FromRoute] int serverId) @@ -92,13 +119,19 @@ public class ServersController : Controller } } - private async Task GetServerWithPermCheck(int serverId) + private async Task GetServerWithPermCheck(int serverId, + Func, IQueryable>? queryModifier = null) { var user = User.AsIdentity(); - - var server = await ServerRepository + + var query = ServerRepository .Get() - .Include(x => x.Node) + .Include(x => x.Node) as IQueryable; + + if (queryModifier != null) + query = queryModifier.Invoke(query); + + var server = await query .FirstOrDefaultAsync(x => x.Id == serverId); if (server == null) @@ -109,7 +142,7 @@ public class ServersController : Controller if (User.HasPermission("admin.servers.get")) // The current user is an admin return server; - + throw new HttpApiException("No server with this id found", 404); } } \ No newline at end of file diff --git a/MoonlightServers.Frontend/UI/Components/Servers/ServerCard.razor b/MoonlightServers.Frontend/UI/Components/Servers/ServerCard.razor index fae16c9..22390d6 100644 --- a/MoonlightServers.Frontend/UI/Components/Servers/ServerCard.razor +++ b/MoonlightServers.Frontend/UI/Components/Servers/ServerCard.razor @@ -34,7 +34,7 @@ } + class="w-full bg-gradient-to-r @gradient to-gray-750 to-25% px-5 py-3.5 rounded-xl border-l-8 @border">
diff --git a/MoonlightServers.Frontend/UI/Views/User/Index.razor b/MoonlightServers.Frontend/UI/Views/User/Index.razor index 5a956a3..9f2e48c 100644 --- a/MoonlightServers.Frontend/UI/Views/User/Index.razor +++ b/MoonlightServers.Frontend/UI/Views/User/Index.razor @@ -25,7 +25,7 @@ { Servers = await PagedData.All(async (page, pageSize) => await ApiClient.GetJson>( - $"api/servers/list?page={page}&pageSize={pageSize}" + $"api/servers?page={page}&pageSize={pageSize}" ) ); }