fix(users/Profpatsch/whatcd-resolver): reduce json data from db
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>
This commit is contained in:
		
							parent
							
								
									13d79e04d8
								
							
						
					
					
						commit
						f9703a9af5
					
				
					 4 changed files with 104 additions and 20 deletions
				
			
		| 
						 | 
				
			
			@ -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)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue