diff --git a/gaseous-server/Classes/Filters.cs b/gaseous-server/Classes/Filters.cs index ace250c..fd6d935 100644 --- a/gaseous-server/Classes/Filters.cs +++ b/gaseous-server/Classes/Filters.cs @@ -112,7 +112,7 @@ namespace gaseous_server.Classes { //string sql = "SELECT DISTINCT .Id, .`Name`, COUNT(view_Games.Id) AS GameCount FROM LEFT JOIN Relation_Game_s ON Relation_Game_s.sId = .Id LEFT JOIN view_Games ON view_Games.Id = Relation_Game_s.GameId WHERE (" + AgeRestriction_Generic + ") GROUP BY .Id HAVING GameCount > 0 ORDER BY .`Name`;"; - string sql = "SELECT .Id, .`Name`, COUNT(Game.Id) AS GameCount FROM (SELECT DISTINCT Game.Id, AgeGroup.AgeGroupId, COUNT(view_Games_Roms.Id) AS RomCount FROM Game LEFT JOIN AgeGroup ON Game.Id = AgeGroup.GameId LEFT JOIN view_Games_Roms ON Game.Id = view_Games_Roms.GameId WHERE (" + AgeRestriction + ") GROUP BY Game.Id HAVING RomCount > 0) Game JOIN Relation_Game_s ON Game.Id = Relation_Game_s.GameId JOIN ON Relation_Game_s.sId = .Id GROUP BY .`Name` ORDER BY .`Name`;"; + string sql = "SELECT .Id, .`Name`, COUNT(Game.Id) AS GameCount FROM (SELECT DISTINCT view_Games_Roms.GameIdType, Game.Id, AgeGroup.AgeGroupId, COUNT(view_Games_Roms.Id) AS RomCount FROM Game LEFT JOIN AgeGroup ON Game.Id = AgeGroup.GameId LEFT JOIN view_Games_Roms ON Game.Id = view_Games_Roms.GameId WHERE (" + AgeRestriction + ") GROUP BY Game.Id HAVING RomCount > 0) Game JOIN Relation_Game_s ON Game.Id = Relation_Game_s.GameId AND Game.GameIdType = Relation_Game_s.GameSourceId JOIN ON Relation_Game_s.sId = .Id GROUP BY .`Name` ORDER BY .`Name`;"; sql = sql.Replace("", Name); DataTable dbResponse = db.ExecuteCMD(sql, new Database.DatabaseMemoryCacheOptions(CacheEnabled: true, ExpirationSeconds: 300)); diff --git a/gaseous-server/Classes/Metadata/Games.cs b/gaseous-server/Classes/Metadata/Games.cs index 1c44aba..8526233 100644 --- a/gaseous-server/Classes/Metadata/Games.cs +++ b/gaseous-server/Classes/Metadata/Games.cs @@ -138,7 +138,7 @@ namespace gaseous_server.Classes.Metadata break; } - string sql = "SELECT Game.Id, Game.`Name`, Game.Slug, Relation_Game_Platforms.PlatformsId AS PlatformsId, Game.Summary FROM gaseous.Game JOIN Relation_Game_Platforms ON Game.Id = Relation_Game_Platforms.GameId WHERE " + whereClause + ";"; + string sql = "SELECT Game.Id, Game.`Name`, Game.Slug, Relation_Game_Platforms.PlatformsId AS PlatformsId, Game.Summary FROM gaseous.Game JOIN Relation_Game_Platforms ON Game.Id = Relation_Game_Platforms.GameId AND Game.SourceId = Relation_Game_Platforms.GameSourceId WHERE " + whereClause + ";"; // get Game metadata diff --git a/gaseous-server/Classes/Roms.cs b/gaseous-server/Classes/Roms.cs index c90aa2f..b8ae209 100644 --- a/gaseous-server/Classes/Roms.cs +++ b/gaseous-server/Classes/Roms.cs @@ -93,7 +93,9 @@ namespace gaseous_server.Classes JOIN GameLibraries ON Games_Roms.LibraryId = GameLibraries.Id LEFT JOIN - Platform ON Games_Roms.PlatformId = Platform.Id LEFT JOIN view_GamesWithRoms ON view_GamesWithRoms.MetadataMapId = Games_Roms.MetadataMapId + Platform ON Games_Roms.PlatformId = Platform.Id AND Platform.SourceId = @platformsource + LEFT JOIN + view_GamesWithRoms ON view_GamesWithRoms.MetadataMapId = Games_Roms.MetadataMapId LEFT JOIN GameState ON (Games_Roms.Id = GameState.RomId AND GameState.UserId = @userid AND GameState.IsMediaGroup = 0) " + UserJoin + @" WHERE @@ -106,6 +108,7 @@ namespace gaseous_server.Classes sqlCount = "SELECT COUNT(Games_Roms.Id) AS RomCount FROM Games_Roms WHERE Games_Roms.MetadataMapId = @id AND Games_Roms.PlatformId = @platformid" + NameSearchWhere + ";"; dbDict.Add("platformid", PlatformId); + dbDict.Add("platformsource", (int)HasheousClient.Models.MetadataSources.None); } DataTable romDT = db.ExecuteCMD(sql, dbDict, new Database.DatabaseMemoryCacheOptions(true, (int)TimeSpan.FromMinutes(1).Ticks)); diff --git a/gaseous-server/Controllers/V1.1/GamesController.cs b/gaseous-server/Controllers/V1.1/GamesController.cs index 8f19d4f..4e6735c 100644 --- a/gaseous-server/Controllers/V1.1/GamesController.cs +++ b/gaseous-server/Controllers/V1.1/GamesController.cs @@ -113,7 +113,7 @@ namespace gaseous_server.Controllers.v1_1 } Database db = new Database(Database.databaseType.MySql, Config.DatabaseConfiguration.ConnectionString); - string sql = "SELECT view_Games.Id, view_Games.AgeGroupId, Relation_Game_SimilarGames.SimilarGamesId FROM view_Games JOIN Relation_Game_SimilarGames ON view_Games.Id = Relation_Game_SimilarGames.GameId AND Relation_Game_SimilarGames.SimilarGamesId IN (SELECT Id FROM view_Games) WHERE view_Games.Id = @id AND (view_Games.AgeGroupId <= @agegroupid" + IncludeUnrated + ")"; + string sql = "SELECT view_Games.Id, view_Games.AgeGroupId, Relation_Game_SimilarGames.SimilarGamesId FROM view_Games JOIN Relation_Game_SimilarGames ON view_Games.Id = Relation_Game_SimilarGames.GameId AND view_Games.GameIdType = Relation_Game_SimilarGames.GameSourceId AND Relation_Game_SimilarGames.SimilarGamesId IN (SELECT Id FROM view_Games) WHERE view_Games.Id = @id AND (view_Games.AgeGroupId <= @agegroupid" + IncludeUnrated + ")"; Dictionary dbDict = new Dictionary(); dbDict.Add("id", MetadataMapId); dbDict.Add("agegroupid", (int)user.SecurityProfile.AgeRestrictionPolicy.MaximumAgeRestriction); @@ -542,13 +542,13 @@ FROM AND GameState.UserId = @userid GROUP BY RomMediaGroup.GameId) RomGroupSavedStates ON Game.MetadataMapId = RomGroupSavedStates.GameId LEFT JOIN - Relation_Game_Genres ON Game.Id = Relation_Game_Genres.GameId + Relation_Game_Genres ON Game.Id = Relation_Game_Genres.GameId AND Relation_Game_Genres.GameSourceId = Game.GameIdType LEFT JOIN - Relation_Game_GameModes ON Game.Id = Relation_Game_GameModes.GameId + Relation_Game_GameModes ON Game.Id = Relation_Game_GameModes.GameId AND Relation_Game_GameModes.GameSourceId = Game.GameIdType LEFT JOIN - Relation_Game_PlayerPerspectives ON Game.Id = Relation_Game_PlayerPerspectives.GameId + Relation_Game_PlayerPerspectives ON Game.Id = Relation_Game_PlayerPerspectives.GameId AND Relation_Game_PlayerPerspectives.GameSourceId = Game.GameIdType LEFT JOIN - Relation_Game_Themes ON Game.Id = Relation_Game_Themes.GameId + Relation_Game_Themes ON Game.Id = Relation_Game_Themes.GameId AND Relation_Game_Themes.GameSourceId = Game.GameIdType LEFT JOIN Favourites ON Game.MetadataMapId = Favourites.GameId AND Favourites.UserId = @userid " + whereClause + " " + havingClause + " " + orderByClause; diff --git a/gaseous-server/Support/Database/MySQL/gaseous-1024.sql b/gaseous-server/Support/Database/MySQL/gaseous-1024.sql index 195a787..ffaecb3 100644 --- a/gaseous-server/Support/Database/MySQL/gaseous-1024.sql +++ b/gaseous-server/Support/Database/MySQL/gaseous-1024.sql @@ -414,3 +414,67 @@ FROM ( AND `Game`.`Id` = `view_MetadataMap`.`MetadataSourceId` ) ); + +CREATE OR REPLACE VIEW `view_Games` AS +SELECT + `a`.`ROMGameId` AS `ROMGameId`, + `a`.`Id` AS `Id`, + `a`.`GameIdType` AS `GameIdType`, + `a`.`AgeRatings` AS `AgeRatings`, + `a`.`AggregatedRating` AS `AggregatedRating`, + `a`.`AggregatedRatingCount` AS `AggregatedRatingCount`, + `a`.`AlternativeNames` AS `AlternativeNames`, + `a`.`Artworks` AS `Artworks`, + `a`.`Bundles` AS `Bundles`, + `a`.`Category` AS `Category`, + `a`.`Checksum` AS `Checksum`, + `a`.`Collection` AS `Collection`, + `a`.`Cover` AS `Cover`, + `a`.`CreatedAt` AS `CreatedAt`, + `a`.`Dlcs` AS `Dlcs`, + `a`.`Expansions` AS `Expansions`, + `a`.`ExternalGames` AS `ExternalGames`, + `a`.`FirstReleaseDate` AS `FirstReleaseDate`, + `a`.`Follows` AS `Follows`, + `a`.`Franchise` AS `Franchise`, + `a`.`Franchises` AS `Franchises`, + `a`.`GameEngines` AS `GameEngines`, + `a`.`GameModes` AS `GameModes`, + `a`.`Genres` AS `Genres`, + `a`.`Hypes` AS `Hypes`, + `a`.`InvolvedCompanies` AS `InvolvedCompanies`, + `a`.`Keywords` AS `Keywords`, + `a`.`MultiplayerModes` AS `MultiplayerModes`, + `a`.`Name` AS `Name`, + `a`.`ParentGame` AS `ParentGame`, + `a`.`Platforms` AS `Platforms`, + `a`.`PlayerPerspectives` AS `PlayerPerspectives`, + `a`.`Rating` AS `Rating`, + `a`.`RatingCount` AS `RatingCount`, + `a`.`ReleaseDates` AS `ReleaseDates`, + `a`.`Screenshots` AS `Screenshots`, + `a`.`SimilarGames` AS `SimilarGames`, + `a`.`Slug` AS `Slug`, + `a`.`StandaloneExpansions` AS `StandaloneExpansions`, + `a`.`Status` AS `Status`, + `a`.`StoryLine` AS `StoryLine`, + `a`.`Summary` AS `Summary`, + `a`.`Tags` AS `Tags`, + `a`.`Themes` AS `Themes`, + `a`.`TotalRating` AS `TotalRating`, + `a`.`TotalRatingCount` AS `TotalRatingCount`, + `a`.`UpdatedAt` AS `UpdatedAt`, + `a`.`Url` AS `Url`, + `a`.`VersionParent` AS `VersionParent`, + `a`.`VersionTitle` AS `VersionTitle`, + `a`.`Videos` AS `Videos`, + `a`.`Websites` AS `Websites`, + `a`.`dateAdded` AS `dateAdded`, + `a`.`lastUpdated` AS `lastUpdated`, + `a`.`NameThe` AS `NameThe`, + `b`.`AgeGroupId` AS `AgeGroupId` +FROM ( + `view_GamesWithRoms` `a` + LEFT JOIN `AgeGroup` `b` ON (`b`.`GameId` = `a`.`Id`) + ) +ORDER BY `a`.`NameThe`; \ No newline at end of file diff --git a/gaseous-server/wwwroot/styles/style.css b/gaseous-server/wwwroot/styles/style.css index 2f25d4d..8cff77a 100644 --- a/gaseous-server/wwwroot/styles/style.css +++ b/gaseous-server/wwwroot/styles/style.css @@ -2929,7 +2929,7 @@ button:not(.select2-selection__choice__remove):not(.select2-selection__clear):no .platform_item { padding: 10px; flex-grow: 1; - flex-basis: 45%; + /* flex-basis: 45%; */ border-radius: var(--standard-radius); /* background-color: var(--section-header-background); */ background: linear-gradient(90deg, rgba(200, 200, 200, 0.7469362745098039) 0%, rgba(133, 133, 133, 1) 50%); @@ -2991,6 +2991,7 @@ button:not(.select2-selection__choice__remove):not(.select2-selection__clear):no .platform_name { display: block; max-width: 75px; + height: auto; } .platform_edit_button_container {