diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-06 17:01:36 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-10 16:02:40 -0300 |
commit | adc8167190ce173c4389d6e398548fee5e384b54 (patch) | |
tree | ccd09f76fd439497667af1581930382e25162542 /src/data | |
parent | 2f6da4c157ad0a7e2fea9efd756ac40db14e7ad0 (diff) |
checks: report orphaned artworks (groan)
Diffstat (limited to 'src/data')
-rw-r--r-- | src/data/checks.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/data/checks.js b/src/data/checks.js index 10261e4f..a70f7d06 100644 --- a/src/data/checks.js +++ b/src/data/checks.js @@ -795,3 +795,49 @@ export function reportContentTextErrors(wikiData, { } }); } + +export function reportOrphanedArtworks(wikiData) { + const aggregate = + openAggregate({message: `Artwork objects are orphaned`}); + + const assess = ({ + message, + filterThing, + filterContribs, + link, + }) => { + aggregate.nest({message: `Orphaned ${message}`}, ({push}) => { + const ostensibleArtworks = + wikiData.artworkData + .filter(artwork => + artwork.thing instanceof filterThing && + artwork.artistContribsFromThingProperty === filterContribs); + + const orphanedArtworks = + ostensibleArtworks + .filter(artwork => !artwork.thing[link].includes(artwork)); + + for (const artwork of orphanedArtworks) { + push(new Error(`Orphaned: ${inspect(artwork)}`)); + } + }); + }; + + const {Album, Track} = thingConstructors; + + assess({ + message: `album cover artworks`, + filterThing: Album, + filterContribs: 'coverArtistContribs', + link: 'coverArtworks', + }); + + assess({ + message: `track artworks`, + filterThing: Track, + filterContribs: 'coverArtistContribs', + link: 'trackArtworks', + }); + + aggregate.close(); +} |