Refactor LBP3 text search to use the category system

This commit is contained in:
Slendy 2023-05-31 20:35:39 -05:00
parent 2ec6bff8e2
commit cd926a8415
No known key found for this signature in database
GPG key ID: 7288D68361B91428
11 changed files with 51 additions and 30 deletions

View file

@ -43,7 +43,7 @@ public class CategoryController : ControllerBase
PaginationData pageData = this.Request.GetPaginationData();
pageData.TotalElements = CategoryHelper.Categories.Count;
pageData.TotalElements = CategoryHelper.Categories.Count(c => !string.IsNullOrWhiteSpace(c.Name));
if (!int.TryParse(this.Request.Query["num_categories_with_results"], out int results)) results = 5;
@ -51,7 +51,8 @@ public class CategoryController : ControllerBase
SlotQueryBuilder queryBuilder = this.FilterFromRequest(token);
foreach (Category category in CategoryHelper.Categories.Skip(Math.Max(0, pageData.PageStart - 1))
foreach (Category category in CategoryHelper.Categories.Where(c => !string.IsNullOrWhiteSpace(c.Name))
.Skip(Math.Max(0, pageData.PageStart - 1))
.Take(Math.Min(pageData.PageSize, pageData.MaxElements))
.ToList())
{
@ -60,7 +61,10 @@ public class CategoryController : ControllerBase
results--;
}
return this.Ok(new CategoryListResponse(categories, pageData.TotalElements, "", pageData.HintStart));
Category searchCategory = CategoryHelper.Categories.First(c => c.Tag == "text");
GameCategory gameSearchCategory = GameCategory.CreateFromEntity(searchCategory, null);
return this.Ok(new CategoryListResponse(categories, gameSearchCategory, pageData.TotalElements, "", pageData.HintStart));
}
[HttpGet("searches/{endpointName}")]

View file

@ -26,10 +26,6 @@ public class SearchController : ControllerBase
this.database = database;
}
[HttpGet("searchLBP3")]
public Task<IActionResult> SearchSlotsLBP3([FromQuery] string textFilter)
=> this.SearchSlots(textFilter, "results");
[HttpGet("search")]
public async Task<IActionResult> SearchSlots([FromQuery] string query, string? keyName = "slots")
{

View file

@ -20,6 +20,7 @@ public static class CategoryHelper
Categories.Add(new QueueCategory());
Categories.Add(new HeartedCategory());
Categories.Add(new LuckyDipCategory());
Categories.Add(new TextSearchCategory());
using DatabaseContext database = DatabaseContext.CreateNewInstance();
foreach (DatabaseCategoryEntity category in database.CustomCategories) Categories.Add(new CustomCategory(category));

View file

@ -0,0 +1,22 @@
using LBPUnion.ProjectLighthouse.Database;
using LBPUnion.ProjectLighthouse.Extensions;
using LBPUnion.ProjectLighthouse.Filter;
using LBPUnion.ProjectLighthouse.Filter.Sorts;
using LBPUnion.ProjectLighthouse.Types.Entities.Level;
using LBPUnion.ProjectLighthouse.Types.Entities.Token;
namespace LBPUnion.ProjectLighthouse.Servers.GameServer.Types.Categories;
public class TextSearchCategory : SlotCategory
{
public override string Name { get; set; } = "";
public override string Description { get; set; } = "";
public override string IconHash { get; set; } = "";
public override string Endpoint { get; set; } = "text";
public override string Tag => "text";
public override IQueryable<SlotEntity> GetItems
(DatabaseContext database, GameTokenEntity token, SlotQueryBuilder queryBuilder) =>
database.Slots.Where(queryBuilder.Build())
.ApplyOrdering(new SlotSortBuilder<SlotEntity>().AddSort(new TotalPlaysSort()));
}