Smaller adjustments on server list
This commit is contained in:
@@ -27,9 +27,9 @@ public class ServersController : Controller
|
|||||||
NodeService = nodeService;
|
NodeService = nodeService;
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("list")]
|
[HttpGet]
|
||||||
[RequirePermission("meta.authenticated")]
|
[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>();
|
var user = User.AsIdentity<User>();
|
||||||
|
|
||||||
@@ -39,7 +39,7 @@ public class ServersController : Controller
|
|||||||
.Include(x => x.Star)
|
.Include(x => x.Star)
|
||||||
.Include(x => x.Node)
|
.Include(x => x.Node)
|
||||||
.Where(x => x.OwnerId == user.Id);
|
.Where(x => x.OwnerId == user.Id);
|
||||||
|
|
||||||
var count = await query.CountAsync();
|
var count = await query.CountAsync();
|
||||||
var items = await query.Skip(page * pageSize).Take(pageSize).ToArrayAsync();
|
var items = await query.Skip(page * pageSize).Take(pageSize).ToArrayAsync();
|
||||||
|
|
||||||
@@ -56,7 +56,7 @@ public class ServersController : Controller
|
|||||||
IpAddress = y.IpAddress
|
IpAddress = y.IpAddress
|
||||||
}).ToArray()
|
}).ToArray()
|
||||||
}).ToArray();
|
}).ToArray();
|
||||||
|
|
||||||
return new PagedData<ServerDetailResponse>()
|
return new PagedData<ServerDetailResponse>()
|
||||||
{
|
{
|
||||||
Items = mappedItems,
|
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")]
|
[HttpGet("{serverId:int}/status")]
|
||||||
[RequirePermission("meta.authenticated")]
|
[RequirePermission("meta.authenticated")]
|
||||||
public async Task<ServerStatusResponse> GetStatus([FromRoute] int serverId)
|
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 user = User.AsIdentity<User>();
|
||||||
|
|
||||||
var server = await ServerRepository
|
var query = ServerRepository
|
||||||
.Get()
|
.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);
|
.FirstOrDefaultAsync(x => x.Id == serverId);
|
||||||
|
|
||||||
if (server == null)
|
if (server == null)
|
||||||
@@ -109,7 +142,7 @@ public class ServersController : Controller
|
|||||||
|
|
||||||
if (User.HasPermission("admin.servers.get")) // The current user is an admin
|
if (User.HasPermission("admin.servers.get")) // The current user is an admin
|
||||||
return server;
|
return server;
|
||||||
|
|
||||||
throw new HttpApiException("No server with this id found", 404);
|
throw new HttpApiException("No server with this id found", 404);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
<a href="/servers/@Server.Id"
|
<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="grid grid-cols-6">
|
||||||
<div class="flex items-center col-span-6 sm:col-span-2 2xl:col-span-1">
|
<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">
|
<div class="bg-gray-900 bg-opacity-45 py-1 px-2 rounded-lg flex items-center">
|
||||||
|
|||||||
@@ -25,7 +25,7 @@
|
|||||||
{
|
{
|
||||||
Servers = await PagedData<ServerDetailResponse>.All(async (page, pageSize) =>
|
Servers = await PagedData<ServerDetailResponse>.All(async (page, pageSize) =>
|
||||||
await ApiClient.GetJson<PagedData<ServerDetailResponse>>(
|
await ApiClient.GetJson<PagedData<ServerDetailResponse>>(
|
||||||
$"api/servers/list?page={page}&pageSize={pageSize}"
|
$"api/servers?page={page}&pageSize={pageSize}"
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user