Revert slot API to old functionality

This commit is contained in:
Slendy 2023-04-04 20:51:53 -05:00
parent c6156d85cd
commit f2dd41dd52
No known key found for this signature in database
GPG key ID: 7288D68361B91428
3 changed files with 81 additions and 10 deletions

View file

@ -39,7 +39,7 @@ public class SlotEndpoints : ApiEndpointController
List<ApiSlot> minimalSlots = (await this.database.Slots.OrderByDescending(s => s.FirstUploaded) List<ApiSlot> minimalSlots = (await this.database.Slots.OrderByDescending(s => s.FirstUploaded)
.Skip(skip) .Skip(skip)
.Take(limit) .Take(limit)
.ToListAsync()).ToSerializableList(ApiSlot.CreateFromEntity); .ToListAsync()).ToSerializableList(MinimalApiSlot.CreateFromEntity);
return this.Ok(minimalSlots); return this.Ok(minimalSlots);
} }
@ -59,6 +59,6 @@ public class SlotEndpoints : ApiEndpointController
SlotEntity? slot = await this.database.Slots.FirstOrDefaultAsync(u => u.SlotId == id); SlotEntity? slot = await this.database.Slots.FirstOrDefaultAsync(u => u.SlotId == id);
if (slot == null) return this.NotFound(); if (slot == null) return this.NotFound();
return this.Ok(ApiSlot.CreateFromEntity(slot)); return this.Ok(ApiSlot.CreateFromEntity(slot, this.database));
} }
} }

View file

@ -1,40 +1,69 @@
using LBPUnion.ProjectLighthouse.Types.Entities.Level; using LBPUnion.ProjectLighthouse.Database;
using LBPUnion.ProjectLighthouse.Types.Entities.Level;
using LBPUnion.ProjectLighthouse.Types.Misc; using LBPUnion.ProjectLighthouse.Types.Misc;
using LBPUnion.ProjectLighthouse.Types.Users; using LBPUnion.ProjectLighthouse.Types.Users;
using Newtonsoft.Json;
namespace LBPUnion.ProjectLighthouse.Servers.API.Responses; namespace LBPUnion.ProjectLighthouse.Servers.API.Responses;
[JsonObject]
public struct ApiSlot public struct ApiSlot
{ {
public int SlotId { get; set; } public int SlotId { get; set; }
public string Name { get; set; } public string Name { get; set; }
public string Description { get; set; }
public string IconHash { get; set; } public string IconHash { get; set; }
public bool TeamPick { get; set; }
public bool IsAdventure { get; set; } public bool IsAdventure { get; set; }
public Location Location { get; set; } public int CreatorId { get; set; }
public GameVersion GameVersion { get; set; } public bool InitiallyLocked { get; set; }
public bool SubLevel { get; set; }
public bool Lbp1Only { get; set; }
public int Shareable { get; set; }
public string AuthorLabels { get; set; }
public string[] LevelTags { get; set; }
public int MinimumPlayers { get; set; }
public int MaximumPlayers { get; set; }
public bool MoveRequired { get; set; }
public long FirstUploaded { get; set; } public long FirstUploaded { get; set; }
public long LastUpdated { get; set; } public long LastUpdated { get; set; }
public bool TeamPick { get; set; }
public Location Location { get; set; }
public GameVersion GameVersion { get; set; }
public int Plays { get; set; } public int Plays { get; set; }
public int PlaysUnique { get; set; } public int PlaysUnique { get; set; }
public int PlaysComplete { get; set; } public int PlaysComplete { get; set; }
public bool CommentsEnabled { get; set; } public bool CommentsEnabled { get; set; }
public double AverageRating { get; set; }
public string LevelType { get; set; }
public static ApiSlot CreateFromEntity(SlotEntity slot) => public static ApiSlot CreateFromEntity(SlotEntity slot, DatabaseContext context) =>
new() new()
{ {
SlotId = slot.SlotId, SlotId = slot.SlotId,
Name = slot.Name, Name = slot.Name,
Description = slot.Description,
IconHash = slot.IconHash, IconHash = slot.IconHash,
TeamPick = slot.TeamPick,
IsAdventure = slot.IsAdventurePlanet, IsAdventure = slot.IsAdventurePlanet,
Location = slot.Location, CreatorId = slot.CreatorId,
GameVersion = slot.GameVersion, InitiallyLocked = slot.InitiallyLocked,
SubLevel = slot.SubLevel,
Lbp1Only = slot.Lbp1Only,
Shareable = slot.Shareable,
AuthorLabels = slot.AuthorLabels,
LevelTags = slot.LevelTags(context),
MinimumPlayers = slot.MinimumPlayers,
MaximumPlayers = slot.MaximumPlayers,
MoveRequired = slot.MoveRequired,
FirstUploaded = slot.FirstUploaded, FirstUploaded = slot.FirstUploaded,
LastUpdated = slot.LastUpdated, LastUpdated = slot.LastUpdated,
TeamPick = slot.TeamPick,
Location = slot.Location,
GameVersion = slot.GameVersion,
Plays = slot.Plays, Plays = slot.Plays,
PlaysUnique = slot.PlaysUnique, PlaysUnique = slot.PlaysUnique,
PlaysComplete = slot.PlaysComplete, PlaysComplete = slot.PlaysComplete,
CommentsEnabled = slot.CommentsEnabled, CommentsEnabled = slot.CommentsEnabled,
AverageRating = slot.RatingLBP1,
LevelType = slot.LevelType,
}; };
} }

View file

@ -0,0 +1,42 @@
using LBPUnion.ProjectLighthouse.Types.Entities.Level;
using LBPUnion.ProjectLighthouse.Types.Misc;
using LBPUnion.ProjectLighthouse.Types.Users;
using Newtonsoft.Json;
namespace LBPUnion.ProjectLighthouse.Servers.API.Responses;
[JsonObject]
public struct MinimalApiSlot
{
public int SlotId { get; set; }
public string Name { get; set; }
public string IconHash { get; set; }
public bool TeamPick { get; set; }
public bool IsAdventure { get; set; }
public Location Location { get; set; }
public GameVersion GameVersion { get; set; }
public long FirstUploaded { get; set; }
public long LastUpdated { get; set; }
public int Plays { get; set; }
public int PlaysUnique { get; set; }
public int PlaysComplete { get; set; }
public bool CommentsEnabled { get; set; }
public static ApiSlot CreateFromEntity(SlotEntity slot) =>
new()
{
SlotId = slot.SlotId,
Name = slot.Name,
IconHash = slot.IconHash,
TeamPick = slot.TeamPick,
IsAdventure = slot.IsAdventurePlanet,
Location = slot.Location,
GameVersion = slot.GameVersion,
FirstUploaded = slot.FirstUploaded,
LastUpdated = slot.LastUpdated,
Plays = slot.Plays,
PlaysUnique = slot.PlaysUnique,
PlaysComplete = slot.PlaysComplete,
CommentsEnabled = slot.CommentsEnabled,
};
}