Smaller adjustments on server list

This commit is contained in:
2024-12-29 03:06:13 +01:00
parent 87e4172149
commit d57ec841a1
3 changed files with 44 additions and 11 deletions

View File

@@ -27,9 +27,9 @@ public class ServersController : Controller
NodeService = nodeService;
}
[HttpGet("list")]
[HttpGet]
[RequirePermission("meta.authenticated")]
public async Task<PagedData<ServerDetailResponse>> List([FromQuery] int page, [FromQuery] int pageSize)
public async Task<PagedData<ServerDetailResponse>> GetAll([FromQuery] int page, [FromQuery] int pageSize)
{
var user = User.AsIdentity<User>();
@@ -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<ServerDetailResponse>()
{
Items = mappedItems,
@@ -67,6 +67,33 @@ public class ServersController : Controller
};
}
[HttpGet("{serverId:int}")]
[RequirePermission("meta.authenticated")]
public async Task<ServerDetailResponse> 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<ServerStatusResponse> GetStatus([FromRoute] int serverId)
@@ -92,13 +119,19 @@ public class ServersController : Controller
}
}
private async Task<Server> GetServerWithPermCheck(int serverId)
private async Task<Server> GetServerWithPermCheck(int serverId,
Func<IQueryable<Server>, IQueryable<Server>>? queryModifier = null)
{
var user = User.AsIdentity<User>();
var server = await ServerRepository
var query = ServerRepository
.Get()
.Include(x => x.Node)
.Include(x => x.Node) as IQueryable<Server>;
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);
}
}

View File

@@ -34,7 +34,7 @@
}
<a href="/servers/@Server.Id"
class="w-full bg-gradient-to-r @gradient to-gray-750/65 to-25% px-5 py-3.5 rounded-xl border-l-8 @border">
class="w-full bg-gradient-to-r @gradient to-gray-750 to-25% px-5 py-3.5 rounded-xl border-l-8 @border">
<div class="grid grid-cols-6">
<div class="flex items-center col-span-6 sm:col-span-2 2xl:col-span-1">
<div class="bg-gray-900 bg-opacity-45 py-1 px-2 rounded-lg flex items-center">

View File

@@ -25,7 +25,7 @@
{
Servers = await PagedData<ServerDetailResponse>.All(async (page, pageSize) =>
await ApiClient.GetJson<PagedData<ServerDetailResponse>>(
$"api/servers/list?page={page}&pageSize={pageSize}"
$"api/servers?page={page}&pageSize={pageSize}"
)
);
}