diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2025-04-06 18:15:15 -0300 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2025-04-10 16:02:42 -0300 |
commit | c72196f5feae56ff734b00189908ad362a13ea47 (patch) | |
tree | 23e53bb20e86b35688c8f691f9c2cda19651c352 | |
parent | eeec9368eee8428b019168b29dba548a35d3eaca (diff) |
data: Artwork.referencedByArtworks
Also drop this property from Track, Album
-rw-r--r-- | src/data/things/album.js | 11 | ||||
-rw-r--r-- | src/data/things/artwork.js | 30 | ||||
-rw-r--r-- | src/data/things/track.js | 10 | ||||
-rw-r--r-- | src/reverse.js | 23 |
4 files changed, 29 insertions, 45 deletions
diff --git a/src/data/things/album.js b/src/data/things/album.js index 32905624..1a1235e6 100644 --- a/src/data/things/album.js +++ b/src/data/things/album.js @@ -278,17 +278,6 @@ export class Album extends Thing { withTracks(), exposeDependency({dependency: '#tracks'}), ], - - referencedByArtworks: [ - exitWithoutContribs({ - contribs: 'coverArtistContribs', - value: input.value([]), - }), - - reverseReferenceList({ - reverse: soupyReverse.input('artworksWhichReference'), - }), - ], }); static [Thing.getSerializeDescriptors] = ({ diff --git a/src/data/things/artwork.js b/src/data/things/artwork.js index 9e4a1d7c..fabbf625 100644 --- a/src/data/things/artwork.js +++ b/src/data/things/artwork.js @@ -18,8 +18,6 @@ import { } from '#validators'; import {withPropertyFromObject} from '#composite/data'; -import {contentString, directory, simpleString, soupyFind, thing, wikiData} - from '#composite/wiki-properties'; import { exitWithoutDependency, @@ -36,6 +34,17 @@ import { withResolvedReferenceList, } from '#composite/wiki-data'; +import { + contentString, + directory, + reverseReferenceList, + simpleString, + soupyFind, + soupyReverse, + thing, + wikiData, +} from '#composite/wiki-properties'; + import {withDate} from '#composite/things/artwork'; export class Artwork extends Thing { @@ -222,11 +231,18 @@ export class Artwork extends Thing { // Update only find: soupyFind(), + reverse: soupyReverse(), // used for referencedArtworks (mixedFind) artworkData: wikiData({ class: input.value(Artwork), }), + + // Expose only + + referencedByArtworks: reverseReferenceList({ + reverse: soupyReverse.input('artworksWhichReference'), + }), }); static [Thing.yamlDocumentSpec] = { @@ -256,6 +272,16 @@ export class Artwork extends Thing { }, }; + static [Thing.reverseSpecs] = { + artworksWhichReference: { + bindTo: 'artworkData', + + referencing: artwork => [artwork], + referenced: artwork => + artwork.referencedArtworks.map(ref => ref.artwork), + }, + }; + get path() { if (!this.thing) return null; if (!this.thing.getOwnArtworkPath) return null; diff --git a/src/data/things/track.js b/src/data/things/track.js index 4679d78b..c2ba503b 100644 --- a/src/data/things/track.js +++ b/src/data/things/track.js @@ -420,16 +420,6 @@ export class Track extends Thing { featuredInFlashes: reverseReferenceList({ reverse: soupyReverse.input('flashesWhichFeature'), }), - - referencedByArtworks: [ - exitWithoutUniqueCoverArt({ - value: input.value([]), - }), - - reverseReferenceList({ - reverse: soupyReverse.input('artworksWhichReference'), - }), - ], }); static [Thing.yamlDocumentSpec] = { diff --git a/src/reverse.js b/src/reverse.js index 9ad5c8a7..e8e4f3af 100644 --- a/src/reverse.js +++ b/src/reverse.js @@ -100,28 +100,7 @@ function reverseHelper(spec) { }; } -const hardcodedReverseSpecs = { - // Artworks aren't Thing objects. - // This spec operates on albums and tracks alike! - artworksWhichReference: { - bindTo: 'wikiData', - - referencing: ({albumData, trackData}) => - [...albumData, ...trackData] - .flatMap(referencingThing => - referencingThing.referencedArtworks - .map(({thing: referencedThing, ...referenceDetails}) => ({ - referencingThing, - referencedThing, - referenceDetails, - }))), - - referenced: ({referencedThing}) => [referencedThing], - - tidy: ({referencingThing, referenceDetails}) => - ({thing: referencingThing, ...referenceDetails}), - }, -}; +const hardcodedReverseSpecs = {}; const findReverseHelperConfig = { word: `reverse`, |