mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-05-11 04:32:27 +00:00
Move api controller endpoints to api project
This commit is contained in:
parent
47271d1798
commit
4caef5fd63
5 changed files with 5 additions and 13 deletions
58
ProjectLighthouse.API/Controllers/SlotEndpoints.cs
Normal file
58
ProjectLighthouse.API/Controllers/SlotEndpoints.cs
Normal file
|
@ -0,0 +1,58 @@
|
|||
#nullable enable
|
||||
using LBPUnion.ProjectLighthouse.Types;
|
||||
using LBPUnion.ProjectLighthouse.Types.Levels;
|
||||
using LBPUnion.ProjectLighthouse.Types.Settings;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace LBPUnion.ProjectLighthouse.API.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// A collection of endpoints relating to slots.
|
||||
/// </summary>
|
||||
public class SlotEndpoints : ApiEndpointController
|
||||
{
|
||||
private readonly Database database;
|
||||
|
||||
public SlotEndpoints(Database database)
|
||||
{
|
||||
this.database = database;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a list of (stripped down) slots from the database.
|
||||
/// </summary>
|
||||
/// <param name="limit">How many slots you want to retrieve.</param>
|
||||
/// <param name="skip">How many slots to skip.</param>
|
||||
/// <returns>The slot</returns>
|
||||
/// <response code="200">The slot list, if successful.</response>
|
||||
[HttpGet("slots")]
|
||||
[ProducesResponseType(typeof(List<MinimalSlot>), StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> GetSlots([FromQuery] int limit = 20, [FromQuery] int skip = 0)
|
||||
{
|
||||
limit = Math.Min(ServerStatics.PageSize, limit);
|
||||
|
||||
IEnumerable<MinimalSlot> minimalSlots = (await this.database.Slots.OrderByDescending(s => s.FirstUploaded).Skip(skip).Take(limit).ToListAsync()).Select
|
||||
(MinimalSlot.FromSlot);
|
||||
|
||||
return this.Ok(minimalSlots);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a slot (more commonly known as a level) and its information from the database.
|
||||
/// </summary>
|
||||
/// <param name="id">The ID of the slot</param>
|
||||
/// <returns>The slot</returns>
|
||||
/// <response code="200">The slot, if successful.</response>
|
||||
/// <response code="404">The slot could not be found.</response>
|
||||
[HttpGet("slot/{id:int}")]
|
||||
[ProducesResponseType(typeof(Slot), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> GetSlot(int id)
|
||||
{
|
||||
Slot? slot = await this.database.Slots.FirstOrDefaultAsync(u => u.SlotId == id);
|
||||
if (slot == null) return this.NotFound();
|
||||
|
||||
return this.Ok(slot);
|
||||
}
|
||||
}
|
31
ProjectLighthouse.API/Controllers/StatisticsEndpoints.cs
Normal file
31
ProjectLighthouse.API/Controllers/StatisticsEndpoints.cs
Normal file
|
@ -0,0 +1,31 @@
|
|||
using LBPUnion.ProjectLighthouse.Helpers;
|
||||
using LBPUnion.ProjectLighthouse.Types;
|
||||
using LBPUnion.ProjectLighthouse.Types.Api;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
|
||||
namespace LBPUnion.ProjectLighthouse.API.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// A collection of endpoints relating to statistics.
|
||||
/// </summary>
|
||||
public class StatisticsEndpoints : ApiEndpointController
|
||||
{
|
||||
/// <summary>
|
||||
/// Gets everything that StatisticsHelper provides.
|
||||
/// </summary>
|
||||
/// <returns>An instance of StatisticsResponse</returns>
|
||||
[HttpGet("statistics")]
|
||||
[ProducesResponseType(typeof(StatisticsResponse), StatusCodes.Status200OK)]
|
||||
public async Task<IActionResult> GetStatistics()
|
||||
=> this.Ok
|
||||
(
|
||||
new StatisticsResponse
|
||||
{
|
||||
Photos = await StatisticsHelper.PhotoCount(),
|
||||
Slots = await StatisticsHelper.SlotCount(),
|
||||
Users = await StatisticsHelper.UserCount(),
|
||||
RecentMatches = await StatisticsHelper.RecentMatches(),
|
||||
TeamPicks = await StatisticsHelper.TeamPickCount(),
|
||||
}
|
||||
);
|
||||
}
|
57
ProjectLighthouse.API/Controllers/UserEndpoints.cs
Normal file
57
ProjectLighthouse.API/Controllers/UserEndpoints.cs
Normal file
|
@ -0,0 +1,57 @@
|
|||
#nullable enable
|
||||
using LBPUnion.ProjectLighthouse.Types;
|
||||
using LBPUnion.ProjectLighthouse.Types.Profiles;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
// ReSharper disable RouteTemplates.ActionRoutePrefixCanBeExtractedToControllerRoute
|
||||
|
||||
namespace LBPUnion.ProjectLighthouse.API.Controllers;
|
||||
|
||||
/// <summary>
|
||||
/// A collection of endpoints relating to users.
|
||||
/// </summary>
|
||||
public class UserEndpoints : ApiEndpointController
|
||||
{
|
||||
private readonly Database database;
|
||||
|
||||
public UserEndpoints(Database database)
|
||||
{
|
||||
this.database = database;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a user and their information from the database.
|
||||
/// </summary>
|
||||
/// <param name="id">The ID of the user</param>
|
||||
/// <returns>The user</returns>
|
||||
/// <response code="200">The user, if successful.</response>
|
||||
/// <response code="404">The user could not be found.</response>
|
||||
[HttpGet("user/{id:int}")]
|
||||
[ProducesResponseType(typeof(User), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
public async Task<IActionResult> GetUser(int id)
|
||||
{
|
||||
User? user = await this.database.Users.FirstOrDefaultAsync(u => u.UserId == id);
|
||||
if (user == null) return this.NotFound();
|
||||
|
||||
return this.Ok(user);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Gets a user and their information from the database.
|
||||
/// </summary>
|
||||
/// <param name="id">The ID of the user</param>
|
||||
/// <returns>The user's status</returns>
|
||||
/// <response code="200">The user's status, if successful.</response>
|
||||
/// <response code="404">The user could not be found.</response>
|
||||
[HttpGet("user/{id:int}/status")]
|
||||
[ProducesResponseType(typeof(UserStatus), StatusCodes.Status200OK)]
|
||||
[ProducesResponseType(StatusCodes.Status404NotFound)]
|
||||
public IActionResult GetUserStatus(int id)
|
||||
{
|
||||
UserStatus userStatus = new(this.database, id);
|
||||
|
||||
return this.Ok(userStatus);
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue