From bd9bbad5a0232a6dd7eee990a4e334d0ed10d513 Mon Sep 17 00:00:00 2001 From: jvyden Date: Mon, 29 Jul 2024 00:08:51 -0400 Subject: [PATCH] Refactor LevelCategory to use DataContext internally --- .../Levels/ApiLevelCategoryResponse.cs | 2 +- .../Endpoints/ApiV3/LevelApiEndpoints.cs | 2 +- .../Endpoints/Game/Levels/LevelEndpoints.cs | 33 ++++++++----------- .../Types/Levels/Categories/ByTagCategory.cs | 5 +-- .../Levels/Categories/ByUserLevelCategory.cs | 7 ++-- .../Levels/Categories/ContestCategory.cs | 11 ++++--- .../Levels/Categories/CoolLevelsCategory.cs | 7 ++-- .../Categories/CurrentlyPlayingCategory.cs | 5 +-- .../Categories/DeveloperLevelsCategory.cs | 5 +-- .../FavouriteSlotsByUserCategory.cs | 5 +-- .../Categories/HighestRatedLevelsCategory.cs | 5 +-- .../Types/Levels/Categories/LevelCategory.cs | 3 +- .../Categories/MostHeartedLevelsCategory.cs | 5 +-- .../Categories/MostReplayedLevelsCategory.cs | 5 +-- .../MostUniquelyPlayedLevelsCategory.cs | 5 +-- .../Levels/Categories/NewestLevelsCategory.cs | 5 +-- .../Categories/QueuedLevelsByUserCategory.cs | 5 +-- .../Levels/Categories/RandomLevelsCategory.cs | 5 +-- .../Levels/Categories/SearchLevelCategory.cs | 5 +-- .../Levels/Categories/SerializedCategory.cs | 12 ++----- .../Categories/TeamPickedLevelsCategory.cs | 5 +-- 21 files changed, 73 insertions(+), 69 deletions(-) diff --git a/Refresh.GameServer/Endpoints/ApiV3/DataTypes/Response/Levels/ApiLevelCategoryResponse.cs b/Refresh.GameServer/Endpoints/ApiV3/DataTypes/Response/Levels/ApiLevelCategoryResponse.cs index 4eb36f9a..21037e44 100644 --- a/Refresh.GameServer/Endpoints/ApiV3/DataTypes/Response/Levels/ApiLevelCategoryResponse.cs +++ b/Refresh.GameServer/Endpoints/ApiV3/DataTypes/Response/Levels/ApiLevelCategoryResponse.cs @@ -49,7 +49,7 @@ public static IEnumerable FromOldList(IEnumerable { - DatabaseList? list = category.Fetch(context, 0, 1, dataContext.Match, dataContext.Database, dataContext.User, new LevelFilterSettings(context, TokenGame.Website), dataContext.User); + DatabaseList? list = category.Fetch(context, 0, 1, dataContext, new LevelFilterSettings(context, TokenGame.Website), dataContext.User); GameLevel? level = list?.Items.FirstOrDefault(); return FromOld(category, level, dataContext); diff --git a/Refresh.GameServer/Endpoints/ApiV3/LevelApiEndpoints.cs b/Refresh.GameServer/Endpoints/ApiV3/LevelApiEndpoints.cs index 8bd00d88..047ecc12 100644 --- a/Refresh.GameServer/Endpoints/ApiV3/LevelApiEndpoints.cs +++ b/Refresh.GameServer/Endpoints/ApiV3/LevelApiEndpoints.cs @@ -67,7 +67,7 @@ public ApiListResponse GetLevels(RequestContext context, G DatabaseList? list = categories.Categories .FirstOrDefault(c => c.ApiRoute.StartsWith(route))? - .Fetch(context, skip, count, matchService, database, user, new LevelFilterSettings(context, TokenGame.Website), user); + .Fetch(context, skip, count, dataContext, new LevelFilterSettings(context, TokenGame.Website), user); if (list == null) return ApiNotFoundError.Instance; diff --git a/Refresh.GameServer/Endpoints/Game/Levels/LevelEndpoints.cs b/Refresh.GameServer/Endpoints/Game/Levels/LevelEndpoints.cs index ac61bfc0..d3baf5ae 100644 --- a/Refresh.GameServer/Endpoints/Game/Levels/LevelEndpoints.cs +++ b/Refresh.GameServer/Endpoints/Game/Levels/LevelEndpoints.cs @@ -25,11 +25,9 @@ public class LevelEndpoints : EndpointGroup public SerializedMinimalLevelList? GetLevels(RequestContext context, GameDatabaseContext database, CategoryService categoryService, - MatchService matchService, LevelListOverrideService overrideService, GameUser user, Token token, - IDataStore dataStore, DataContext dataContext, string route) { @@ -63,7 +61,7 @@ public class LevelEndpoints : EndpointGroup DatabaseList? levels = categoryService.Categories .FirstOrDefault(c => c.GameRoutes.Any(r => r.StartsWith(route)))? - .Fetch(context, skip, count, matchService, database, user, new LevelFilterSettings(context, token.TokenGame), user); + .Fetch(context, skip, count, dataContext, new LevelFilterSettings(context, token.TokenGame), user); if (levels == null) return null; @@ -79,10 +77,8 @@ public class LevelEndpoints : EndpointGroup public SerializedMinimalLevelList? GetLevelsWithPlayer(RequestContext context, GameDatabaseContext database, CategoryService categories, - MatchService matchService, LevelListOverrideService overrideService, Token token, - IDataStore dataStore, DataContext dataContext, string route, string username) @@ -90,14 +86,14 @@ public class LevelEndpoints : EndpointGroup GameUser? user = database.GetUserByUsername(username); if (user == null) return null; - return this.GetLevels(context, database, categories, matchService, overrideService, user, token, dataStore, dataContext, route); + return this.GetLevels(context, database, categories, overrideService, user, token, dataContext, route); } [GameEndpoint("s/{slotType}/{id}", ContentType.Xml)] [NullStatusCode(NotFound)] [MinimumRole(GameUserRole.Restricted)] - public GameLevelResponse? LevelById(RequestContext context, GameDatabaseContext database, MatchService matchService, - GameUser user, string slotType, int id, IDataStore dataStore, Token token, + public GameLevelResponse? LevelById(RequestContext context, GameDatabaseContext database, Token token, + string slotType, int id, LevelListOverrideService overrideService, DataContext dataContext) { // If the user has had a hash override in the past, and the level id they requested matches the level ID associated with that hash @@ -112,12 +108,12 @@ public class LevelEndpoints : EndpointGroup [NullStatusCode(BadRequest)] [MinimumRole(GameUserRole.Restricted)] public SerializedLevelList? GetMultipleLevels(RequestContext context, GameDatabaseContext database, - MatchService matchService, GameUser user, IDataStore dataStore, Token token, DataContext dataContext) + GameUser user, Token token, DataContext dataContext) { string[]? levelIds = context.QueryString.GetValues("s"); if (levelIds == null) return null; - List levels = new(); + List levels = []; foreach (string levelIdStr in levelIds) { @@ -140,15 +136,13 @@ public class LevelEndpoints : EndpointGroup [GameEndpoint("searches", ContentType.Xml)] [GameEndpoint("genres", ContentType.Xml)] [MinimumRole(GameUserRole.Restricted)] - public SerializedCategoryList GetModernCategories(RequestContext context, GameDatabaseContext database, - CategoryService categoryService, MatchService matchService, GameUser user, Token token, IDataStore dataStore, - DataContext dataContext) + public SerializedCategoryList GetModernCategories(RequestContext context, CategoryService categoryService, DataContext dataContext) { (int skip, int count) = context.GetPageData(); IEnumerable categories = categoryService.Categories .Where(c => !c.Hidden) - .Select(c => SerializedCategory.FromLevelCategory(c, context, database, dataStore, user, token, matchService, dataContext, 0, 1)) + .Select(c => SerializedCategory.FromLevelCategory(c, context, dataContext, 0, 1)) .ToList(); int total = categories.Count(); @@ -163,15 +157,14 @@ public SerializedCategoryList GetModernCategories(RequestContext context, GameDa [GameEndpoint("searches/{apiRoute}", ContentType.Xml)] [MinimumRole(GameUserRole.Restricted)] - public SerializedMinimalLevelResultsList GetLevelsFromCategory(RequestContext context, GameDatabaseContext database, - CategoryService categories, MatchService matchService, GameUser user, Token token, IDataStore dataStore, - string apiRoute, DataContext dataContext) + public SerializedMinimalLevelResultsList GetLevelsFromCategory(RequestContext context, + CategoryService categories, GameUser user, Token token, string apiRoute, DataContext dataContext) { (int skip, int count) = context.GetPageData(); DatabaseList? levels = categories.Categories .FirstOrDefault(c => c.ApiRoute.StartsWith(apiRoute))? - .Fetch(context, skip, count, matchService, database, user, new LevelFilterSettings(context, token.TokenGame), user); + .Fetch(context, skip, count, dataContext, new LevelFilterSettings(context, token.TokenGame), user); return new SerializedMinimalLevelResultsList(levels?.Items .Select(l => GameMinimalLevelResponse.FromOld(l, dataContext))!, levels?.TotalItems ?? 0, skip + count); @@ -192,7 +185,7 @@ public SerializedMinimalLevelResultsList GetLevelsFromCategory(RequestContext co IDataStore dataStore, Token token, DataContext dataContext) - => this.GetLevels(context, database, categories, matchService, overrideService, user, token, dataStore, dataContext, "newest"); + => this.GetLevels(context, database, categories, overrideService, user, token, dataContext, "newest"); [GameEndpoint("favouriteSlots/{username}", ContentType.Xml)] [NullStatusCode(NotFound)] @@ -210,7 +203,7 @@ public SerializedMinimalLevelResultsList GetLevelsFromCategory(RequestContext co GameUser? user = database.GetUserByUsername(username); if (user == null) return null; - SerializedMinimalLevelList? levels = this.GetLevels(context, database, categories, matchService, overrideService, user, token, dataStore, dataContext, "favouriteSlots"); + SerializedMinimalLevelList? levels = this.GetLevels(context, database, categories, overrideService, user, token, dataContext, "favouriteSlots"); return new SerializedMinimalFavouriteLevelList(levels); } diff --git a/Refresh.GameServer/Types/Levels/Categories/ByTagCategory.cs b/Refresh.GameServer/Types/Levels/Categories/ByTagCategory.cs index 55d88e5b..f5f78a86 100644 --- a/Refresh.GameServer/Types/Levels/Categories/ByTagCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/ByTagCategory.cs @@ -2,6 +2,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -19,7 +20,7 @@ internal ByTagCategory() : base("tag", "tag", false) } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? user) { string? tagStr = context.QueryString["tag"]; @@ -32,6 +33,6 @@ internal ByTagCategory() : base("tag", "tag", false) if (tag == null) return null; - return database.GetLevelsByTag(count, skip, user, tag.Value, levelFilterSettings); + return dataContext.Database.GetLevelsByTag(count, skip, user, tag.Value, levelFilterSettings); } } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/ByUserLevelCategory.cs b/Refresh.GameServer/Types/Levels/Categories/ByUserLevelCategory.cs index 22d1984e..6757eb7c 100644 --- a/Refresh.GameServer/Types/Levels/Categories/ByUserLevelCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/ByUserLevelCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -19,15 +20,15 @@ internal ByUserLevelCategory() : base("byUser", "by", true) } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? user) { // Prefer username from query, but fallback to user passed into this category if it's missing string? username = context.QueryString["u"]; - if (username != null) user = database.GetUserByUsername(username); + if (username != null) user = dataContext.Database.GetUserByUsername(username); if (user == null) return null; - return database.GetLevelsByUser(user, count, skip, levelFilterSettings, accessor); + return dataContext.Database.GetLevelsByUser(user, count, skip, levelFilterSettings, dataContext.User); } } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/ContestCategory.cs b/Refresh.GameServer/Types/Levels/Categories/ContestCategory.cs index 06a9160c..4c9ab7f6 100644 --- a/Refresh.GameServer/Types/Levels/Categories/ContestCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/ContestCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; using Refresh.GameServer.Types.Contests; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -17,20 +18,20 @@ public ContestCategory() : base("contest", Array.Empty(), false) this.IconHash = "g820608"; } - public override DatabaseList? Fetch(RequestContext context, int skip, int count, MatchService matchService, - GameDatabaseContext database, GameUser? accessor, LevelFilterSettings levelFilterSettings, GameUser? _) + public override DatabaseList? Fetch(RequestContext context, int skip, int count, DataContext dataContext, + LevelFilterSettings levelFilterSettings, GameUser? _) { // try to find a contest by the query parameter string? contestId = context.QueryString["contest"]; - GameContest? contest = database.GetContestById(contestId); + GameContest? contest = dataContext.Database.GetContestById(contestId); // if we cant find one by a query param try getting an active contest instead - contest ??= database.GetNewestActiveContest(); + contest ??= dataContext.Database.GetNewestActiveContest(); // if not, then fail if (contest == null) return null; - return database.GetLevelsFromContest(contest, count, skip, accessor, levelFilterSettings); + return dataContext.Database.GetLevelsFromContest(contest, count, skip, dataContext.User, levelFilterSettings); } } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/CoolLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/CoolLevelsCategory.cs index 56021ed5..80aa8232 100644 --- a/Refresh.GameServer/Types/Levels/Categories/CoolLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/CoolLevelsCategory.cs @@ -2,6 +2,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -16,9 +17,9 @@ public class CoolLevelsCategory : LevelCategory this.IconHash = "g820625"; } - public override DatabaseList? Fetch(RequestContext context, int skip, int count, MatchService matchService, - GameDatabaseContext database, GameUser? accessor, LevelFilterSettings levelFilterSettings, GameUser? _) + public override DatabaseList? Fetch(RequestContext context, int skip, int count, DataContext dataContext, + LevelFilterSettings levelFilterSettings, GameUser? _) { - return database.GetCoolLevels(count, skip, accessor, levelFilterSettings); + return dataContext.Database.GetCoolLevels(count, skip, dataContext.User, levelFilterSettings); } } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/CurrentlyPlayingCategory.cs b/Refresh.GameServer/Types/Levels/Categories/CurrentlyPlayingCategory.cs index 2fbd7b90..00236ca7 100644 --- a/Refresh.GameServer/Types/Levels/Categories/CurrentlyPlayingCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/CurrentlyPlayingCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -18,7 +19,7 @@ internal CurrentlyPlayingCategory() : base("currentlyPlaying", "busiest", false) } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetBusiestLevels(count, skip, matchService, accessor, levelFilterSettings); + => dataContext.Database.GetBusiestLevels(count, skip, dataContext.Match, dataContext.User, levelFilterSettings); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/DeveloperLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/DeveloperLevelsCategory.cs index 235b556d..fc3b497c 100644 --- a/Refresh.GameServer/Types/Levels/Categories/DeveloperLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/DeveloperLevelsCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -19,7 +20,7 @@ internal DeveloperLevelsCategory() : base("developer", Array.Empty(), fa } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetDeveloperLevels(count, skip, levelFilterSettings); + => dataContext.Database.GetDeveloperLevels(count, skip, levelFilterSettings); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/FavouriteSlotsByUserCategory.cs b/Refresh.GameServer/Types/Levels/Categories/FavouriteSlotsByUserCategory.cs index beea0532..72e893a2 100644 --- a/Refresh.GameServer/Types/Levels/Categories/FavouriteSlotsByUserCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/FavouriteSlotsByUserCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -17,11 +18,11 @@ internal FavouriteSlotsByUserCategory() : base("hearted", "favouriteSlots", true this.IconHash = "g820611"; } - public override DatabaseList? Fetch(RequestContext context, int skip, int count, MatchService matchService, GameDatabaseContext database, GameUser? accessor, + public override DatabaseList? Fetch(RequestContext context, int skip, int count, DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? user) { if (user == null) return null; - return database.GetLevelsFavouritedByUser(user, count, skip, levelFilterSettings, accessor); + return dataContext.Database.GetLevelsFavouritedByUser(user, count, skip, levelFilterSettings, dataContext.User); } } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/HighestRatedLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/HighestRatedLevelsCategory.cs index bd4a5260..f1601f25 100644 --- a/Refresh.GameServer/Types/Levels/Categories/HighestRatedLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/HighestRatedLevelsCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -18,7 +19,7 @@ internal HighestRatedLevelsCategory() : base("mostLiked", new[] { "thumbs", "hig } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetHighestRatedLevels(count, skip, accessor, levelFilterSettings); + => dataContext.Database.GetHighestRatedLevels(count, skip, dataContext.User, levelFilterSettings); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/LevelCategory.cs b/Refresh.GameServer/Types/Levels/Categories/LevelCategory.cs index 49170816..b3d96094 100644 --- a/Refresh.GameServer/Types/Levels/Categories/LevelCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/LevelCategory.cs @@ -5,6 +5,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -34,6 +35,6 @@ internal LevelCategory(string apiRoute, string[] gameRoutes, bool requiresUser) [JsonProperty] public readonly bool RequiresUser; [Pure] - public abstract DatabaseList? Fetch(RequestContext context, int skip, int count, MatchService matchService, GameDatabaseContext database, GameUser? accessor, + public abstract DatabaseList? Fetch(RequestContext context, int skip, int count, DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? user); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/MostHeartedLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/MostHeartedLevelsCategory.cs index cd1db21a..25f17996 100644 --- a/Refresh.GameServer/Types/Levels/Categories/MostHeartedLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/MostHeartedLevelsCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -18,7 +19,7 @@ internal MostHeartedLevelsCategory() : base("mostHearted", "mostHearted", false) } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetMostHeartedLevels(count, skip, accessor, levelFilterSettings); + => dataContext.Database.GetMostHeartedLevels(count, skip, dataContext.User, levelFilterSettings); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/MostReplayedLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/MostReplayedLevelsCategory.cs index 0bd3ed76..226d7c14 100644 --- a/Refresh.GameServer/Types/Levels/Categories/MostReplayedLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/MostReplayedLevelsCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -18,7 +19,7 @@ internal MostReplayedLevelsCategory() : base("mostReplayed", "mostPlays", false) } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetMostReplayedLevels(count, skip, accessor, levelFilterSettings); + => dataContext.Database.GetMostReplayedLevels(count, skip, dataContext.User, levelFilterSettings); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/MostUniquelyPlayedLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/MostUniquelyPlayedLevelsCategory.cs index 8479a1f7..8f34b9fe 100644 --- a/Refresh.GameServer/Types/Levels/Categories/MostUniquelyPlayedLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/MostUniquelyPlayedLevelsCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -18,7 +19,7 @@ internal MostUniquelyPlayedLevelsCategory() : base("mostPlayed", "mostUniquePlay } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetMostUniquelyPlayedLevels(count, skip, accessor, levelFilterSettings); + => dataContext.Database.GetMostUniquelyPlayedLevels(count, skip, dataContext.User, levelFilterSettings); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/NewestLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/NewestLevelsCategory.cs index 121eba63..8e4b33d1 100644 --- a/Refresh.GameServer/Types/Levels/Categories/NewestLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/NewestLevelsCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -17,7 +18,7 @@ internal NewestLevelsCategory() : base("newest", "newest", false) this.FontAwesomeIcon = "calendar"; } - public override DatabaseList? Fetch(RequestContext context, int skip, int count, MatchService matchService, GameDatabaseContext database, GameUser? accessor, + public override DatabaseList? Fetch(RequestContext context, int skip, int count, DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetNewestLevels(count, skip, accessor, levelFilterSettings); + => dataContext.Database.GetNewestLevels(count, skip, dataContext.User, levelFilterSettings); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/QueuedLevelsByUserCategory.cs b/Refresh.GameServer/Types/Levels/Categories/QueuedLevelsByUserCategory.cs index 81fab560..5bcd171b 100644 --- a/Refresh.GameServer/Types/Levels/Categories/QueuedLevelsByUserCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/QueuedLevelsByUserCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -17,11 +18,11 @@ internal QueuedLevelsByUserCategory() : base("queued", "lolcatftw", true) this.IconHash = "g820614"; } - public override DatabaseList? Fetch(RequestContext context, int skip, int count, MatchService matchService, GameDatabaseContext database, GameUser? accessor, + public override DatabaseList? Fetch(RequestContext context, int skip, int count, DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? user) { if (user == null) return null; - return database.GetLevelsQueuedByUser(user, count, skip, levelFilterSettings, accessor); + return dataContext.Database.GetLevelsQueuedByUser(user, count, skip, levelFilterSettings, dataContext.User); } } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/RandomLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/RandomLevelsCategory.cs index 8d76c8b2..0a25d5dd 100644 --- a/Refresh.GameServer/Types/Levels/Categories/RandomLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/RandomLevelsCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -17,7 +18,7 @@ internal RandomLevelsCategory() : base("random", "lbp2luckydip", false) this.IconHash = "g820605"; } - public override DatabaseList? Fetch(RequestContext context, int skip, int count, MatchService matchService, GameDatabaseContext database, GameUser? accessor, + public override DatabaseList? Fetch(RequestContext context, int skip, int count, DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetRandomLevels(count, skip, accessor, levelFilterSettings); + => dataContext.Database.GetRandomLevels(count, skip, dataContext.User, levelFilterSettings); } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/SearchLevelCategory.cs b/Refresh.GameServer/Types/Levels/Categories/SearchLevelCategory.cs index 06b9f9ac..8857d95d 100644 --- a/Refresh.GameServer/Types/Levels/Categories/SearchLevelCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/SearchLevelCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -21,13 +22,13 @@ internal SearchLevelCategory() : base(SearchRoute, "search", false) } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) { string? query = context.QueryString["query"] ?? context.QueryString["textFilter"]; // LBP3 sends this instead of query if (query == null) return null; - return database.SearchForLevels(count, skip, accessor, levelFilterSettings, query); + return dataContext.Database.SearchForLevels(count, skip, dataContext.User, levelFilterSettings, query); } } \ No newline at end of file diff --git a/Refresh.GameServer/Types/Levels/Categories/SerializedCategory.cs b/Refresh.GameServer/Types/Levels/Categories/SerializedCategory.cs index f1d87f6e..320b7e18 100644 --- a/Refresh.GameServer/Types/Levels/Categories/SerializedCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/SerializedCategory.cs @@ -1,10 +1,8 @@ using System.Xml.Serialization; using Bunkum.Core; -using Bunkum.Core.Storage; using Refresh.GameServer.Authentication; using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; -using Refresh.GameServer.Services; using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.Lists; using Refresh.GameServer.Types.UserData; @@ -46,18 +44,14 @@ public static SerializedCategory FromLevelCategory(LevelCategory levelCategory) public static SerializedCategory FromLevelCategory(LevelCategory levelCategory, RequestContext context, - GameDatabaseContext database, - IDataStore dataStore, - GameUser user, - Token token, - MatchService matchService, DataContext dataContext, int skip = 0, int count = 20) { SerializedCategory category = FromLevelCategory(levelCategory); - - DatabaseList categoryLevels = levelCategory.Fetch(context, skip, count, matchService, database, user, new LevelFilterSettings(context, token.TokenGame), user); + + LevelFilterSettings filterSettings = new(context, dataContext.Token!.TokenGame); + DatabaseList categoryLevels = levelCategory.Fetch(context, skip, count, dataContext, filterSettings, dataContext.User); IEnumerable levels = categoryLevels?.Items .Select(l => GameMinimalLevelResponse.FromOld(l, dataContext)) ?? Array.Empty(); diff --git a/Refresh.GameServer/Types/Levels/Categories/TeamPickedLevelsCategory.cs b/Refresh.GameServer/Types/Levels/Categories/TeamPickedLevelsCategory.cs index 7d2f1f81..40e9e575 100644 --- a/Refresh.GameServer/Types/Levels/Categories/TeamPickedLevelsCategory.cs +++ b/Refresh.GameServer/Types/Levels/Categories/TeamPickedLevelsCategory.cs @@ -3,6 +3,7 @@ using Refresh.GameServer.Database; using Refresh.GameServer.Endpoints.Game.Levels.FilterSettings; using Refresh.GameServer.Services; +using Refresh.GameServer.Types.Data; using Refresh.GameServer.Types.UserData; namespace Refresh.GameServer.Types.Levels.Categories; @@ -18,7 +19,7 @@ internal TeamPickedLevelsCategory() : base("teamPicks", "mmpicks", false) } public override DatabaseList? Fetch(RequestContext context, int skip, int count, - MatchService matchService, GameDatabaseContext database, GameUser? accessor, + DataContext dataContext, LevelFilterSettings levelFilterSettings, GameUser? _) - => database.GetTeamPickedLevels(count, skip, accessor, levelFilterSettings); + => dataContext.Database.GetTeamPickedLevels(count, skip, dataContext.User, levelFilterSettings); } \ No newline at end of file