diff --git a/users/Profpatsch/whatcd-resolver/src/Redacted.hs b/users/Profpatsch/whatcd-resolver/src/Redacted.hs index 2ea681654..a9790bb2f 100644 --- a/users/Profpatsch/whatcd-resolver/src/Redacted.hs +++ b/users/Profpatsch/whatcd-resolver/src/Redacted.hs @@ -622,6 +622,7 @@ getTorrentById dat = do data GetBestTorrentsFilter = GetBestTorrentsFilter { onlyArtist :: Maybe (Label "artistRedactedId" Int), onlyTheseTorrents :: Maybe ([Label "torrentId" Int]), + disallowedReleaseTypes :: [ReleaseType], limitResults :: Maybe Natural, ordering :: BestTorrentsOrdering } @@ -672,6 +673,7 @@ getBestTorrents opts = do FROM filtered_torrents f JOIN redacted.torrents t ON t.id = f.id JOIN redacted.torrent_groups tg ON tg.id = t.torrent_group + WHERE tg.full_json_result->>'releaseType' <> ALL (?::text[]) |] <> case opts.ordering of BySeedingWeight -> [fmt|ORDER BY seeding_weight DESC|] <> "\n" @@ -691,6 +693,7 @@ getBestTorrents opts = do onlyArtistId :: Int, onlyTheseTorrentsB :: Bool, onlyTheseTorrents, + (opts.disallowedReleaseTypes & concatMap (\rt -> [rt.stringKey, rt.intKey & buildText intDecimalT]) & PGArray :: PGArray Text), opts.limitResults <&> naturalToInteger :: Maybe Integer ) ) diff --git a/users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs b/users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs index 926691565..d49b4438e 100644 --- a/users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs +++ b/users/Profpatsch/whatcd-resolver/src/WhatcdResolver.hs @@ -159,7 +159,7 @@ htmlUi = do ( do d <- getBestTorrentsData - (t2 #limitResults Nothing #ordering BySeedingWeight) + (t3 #limitResults Nothing #ordering BySeedingWeight #disallowedReleaseTypes []) ( Just ( E21 (label @"onlyTheseTorrents" res.newTorrents) @@ -380,9 +380,22 @@ htmlUi = do (bestTorrentsTable, settings) <- concurrentlyTraced ( do - d <- getBestTorrentsData (t2 #limitResults (Just 30) #ordering ByLastReleases) Nothing + d <- + getBestTorrentsData + ( t3 + #limitResults + (Just 100) + #ordering + ByLastReleases + #disallowedReleaseTypes + [ releaseTypeBootleg, + releaseTypeGuestAppearance, + releaseTypeRemix + ] + ) + Nothing pure $ case d & nonEmpty of - Nothing -> [hsx|

Last Releases

No torrents found

|] + Nothing -> [hsx|

Latest Releases

No torrents found

|] Just d' -> mkBestTorrentsTableSection (lbl #sectionName "Last Releases") d' ) (getSettings) @@ -588,7 +601,7 @@ artistPage dat = runTransaction $ do (fresh, settings) <- concurrentlyTraced ( getBestTorrentsData - (t2 #limitResults Nothing #ordering BySeedingWeight) + (t3 #limitResults Nothing #ordering BySeedingWeight #disallowedReleaseTypes []) (Just $ E22 (getLabel @"artistRedactedId" dat)) ) (getSettings) @@ -827,7 +840,8 @@ getBestTorrentsData :: MonadPostgres m, MonadOtel m, HasField "limitResults" opts (Maybe Natural), - HasField "ordering" opts BestTorrentsOrdering + HasField "ordering" opts BestTorrentsOrdering, + HasField "disallowedReleaseTypes" opts [ReleaseType] ) => opts -> Maybe (E2 "onlyTheseTorrents" [Label "torrentId" Int] "artistRedactedId" Int) -> @@ -840,6 +854,7 @@ getBestTorrentsData opts filters = inSpan' "get torrents table data" $ \span -> let limitResults = getField @"limitResults" opts let ordering = opts.ordering + let disallowedReleaseTypes = opts.disallowedReleaseTypes let getBest = getBestTorrents GetBestTorrentsFilter {..} bestStale :: [TorrentData ()] <- getBest (statusInfo, transmissionStatus) <- @@ -935,7 +950,7 @@ mkBestTorrentsTableSection opts torrents = do (label @"content" $ Html.toHtml @Text a.artistName) ) & mkLinkList - + let releaseTypeTooltip rt = [fmt|{rt.stringKey} (Release type ID: {rt.intKey})|] :: Text [hsx| {localTorrent b} @@ -948,7 +963,7 @@ mkBestTorrentsTableSection opts torrents = do {Html.toHtml @Text b.torrentGroupJson.groupName} - {Html.toHtml @Text b.releaseType.stringKey} + {Html.toHtml @Text b.releaseType.stringKey} {Html.toHtml @Natural b.torrentGroupJson.groupYear} {Html.toHtml @Int b.seedingWeight} {Html.toHtml @Text b.torrentFormat}