« get me outta code hell

find, data: move find specs into Thing subclasses - hsmusic-wiki - HSMusic - static wiki software cataloguing collaborative creation
about summary refs log tree commit diff
path: root/src/data/things/track.js
diff options
context:
space:
mode:
author(quasar) nebula <qznebula@protonmail.com>2024-01-30 14:04:41 -0400
committer(quasar) nebula <qznebula@protonmail.com>2024-01-30 14:30:06 -0400
commitad146774480bb29cff04b50d887e132f3bd3f64f (patch)
tree9c789f74cf21793d9e3672f92628aa237f61eec3 /src/data/things/track.js
parent7fbc5b87ed05bce433ed959ca18119b72835ee41 (diff)
find, data: move find specs into Thing subclasses
Diffstat (limited to 'src/data/things/track.js')
-rw-r--r--src/data/things/track.js29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/data/things/track.js b/src/data/things/track.js
index d1a12aa..5a8bec3 100644
--- a/src/data/things/track.js
+++ b/src/data/things/track.js
@@ -451,6 +451,35 @@ export class Track extends Thing {
     ],
   };
 
+  static [Thing.findSpecs] = {
+    track: {
+      referenceTypes: ['track'],
+      bindTo: 'trackData',
+
+      getMatchableNames: track =>
+        (track.alwaysReferenceByDirectory
+          ? []
+          : [track.name]),
+    },
+
+    trackOriginalReleasesOnly: {
+      referenceTypes: ['track'],
+      bindTo: 'trackData',
+
+      include: track =>
+        !CacheableObject.getUpdateValue(track, 'originalReleaseTrack'),
+
+      // It's still necessary to check alwaysReferenceByDirectory here, since
+      // it may be set manually (with `Always Reference By Directory: true`),
+      // and these shouldn't be matched by name (as per usual).
+      // See the definition for that property for more information.
+      getMatchableNames: track =>
+        (track.alwaysReferenceByDirectory
+          ? []
+          : [track.name]),
+    },
+  };
+
   // Track YAML loading is handled in album.js.
   static [Thing.getYamlLoadingSpec] = null;