diff options
author | Profpatsch <mail@profpatsch.de> | 2024-08-06T09·46+0200 |
---|---|---|
committer | Profpatsch <mail@profpatsch.de> | 2024-08-06T09·59+0000 |
commit | f9703a9af5e3b2fb53f10204fce43950e2c33f98 (patch) | |
tree | 6c85317e6ce9afd684e02e7561914e6c11a0a3db /users/Profpatsch/whatcd-resolver/src/Redacted.hs | |
parent | 13d79e04d8bb55f1343fc909fa420d8e4932c78f (diff) |
fix(users/Profpatsch/whatcd-resolver): reduce json data from db r/8449
We’d transfer the full json data for each torrent from the db instead of just the 2 or 3 fields we need. Adds some more helpers for parsing database values. Adds some better logging events & traces. Change-Id: I5db386c4ea247febf5f9fc3815da2e7f11286d41 Reviewed-on: https://cl.tvl.fyi/c/depot/+/12140 Tested-by: BuildkiteCI Reviewed-by: Profpatsch <mail@profpatsch.de>
Diffstat (limited to 'users/Profpatsch/whatcd-resolver/src/Redacted.hs')
-rw-r--r-- | users/Profpatsch/whatcd-resolver/src/Redacted.hs | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/users/Profpatsch/whatcd-resolver/src/Redacted.hs b/users/Profpatsch/whatcd-resolver/src/Redacted.hs index 6cdb22273fad..5b6751346b18 100644 --- a/users/Profpatsch/whatcd-resolver/src/Redacted.hs +++ b/users/Profpatsch/whatcd-resolver/src/Redacted.hs @@ -364,14 +364,13 @@ data TorrentData transmissionInfo = TorrentData torrentId :: Int, seedingWeight :: Int, artists :: [T2 "artistId" Int "artistName" Text], - torrentJson :: Json.Value, torrentGroupJson :: TorrentGroupJson, torrentStatus :: TorrentStatus transmissionInfo } data TorrentGroupJson = TorrentGroupJson { groupName :: Text, - groupYear :: Int + groupYear :: Natural } data TorrentStatus transmissionInfo @@ -420,8 +419,9 @@ getBestTorrents opts = do tg.group_id, t.torrent_id, t.seeding_weight, - t.full_json_result AS torrent_json, - tg.full_json_result AS torrent_group_json, + t.full_json_result->'artists' AS artists, + tg.full_json_result->>'groupName' AS group_name, + tg.full_json_result->>'groupYear' AS group_year, t.torrent_file IS NOT NULL AS has_torrent_file, t.transmission_torrent_hash FROM filtered_torrents f @@ -442,19 +442,15 @@ getBestTorrents opts = do groupId <- Dec.fromField @Int torrentId <- Dec.fromField @Int seedingWeight <- Dec.fromField @Int - (torrentJson, artists) <- Dec.json $ do - val <- Json.asValue - artists <- Json.keyOrDefault "artists" [] $ Json.eachInArray $ do + artists <- Dec.json $ + Json.eachInArray $ do id_ <- Json.keyLabel @"artistId" "id" (Json.asIntegral @_ @Int) name <- Json.keyLabel @"artistName" "name" Json.asText pure $ T2 id_ name - pure (val, artists) - torrentGroupJson <- - ( Dec.json $ do - groupName <- Json.key "groupName" Json.asText - groupYear <- Json.key "groupYear" (Json.asIntegral @_ @Int) - pure $ TorrentGroupJson {..} - ) + torrentGroupJson <- do + groupName <- Dec.text + groupYear <- Dec.textParse Field.decimalNatural + pure $ TorrentGroupJson {..} hasTorrentFile <- Dec.fromField @Bool transmissionTorrentHash <- Dec.fromField @(Maybe Text) |