« get me outta code hell

data: Artwork.referencedByArtworks - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data
diff options
context:
space:
mode:
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
commitc72196f5feae56ff734b00189908ad362a13ea47 (patch)
tree23e53bb20e86b35688c8f691f9c2cda19651c352 /src/data
parenteeec9368eee8428b019168b29dba548a35d3eaca (diff)
data: Artwork.referencedByArtworks
Also drop this property from Track, Album
Diffstat (limited to 'src/data')
-rw-r--r--src/data/things/album.js11
-rw-r--r--src/data/things/artwork.js30
-rw-r--r--src/data/things/track.js10
3 files changed, 28 insertions, 23 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] = {