« get me outta code hell

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:
Diffstat (limited to 'src/data')
-rw-r--r--src/data/things/Track.js2
-rw-r--r--src/data/things/album/Album.js5
-rw-r--r--src/data/things/contrib/AlbumArtistContribution.js12
-rw-r--r--src/data/things/contrib/Contribution.js (renamed from src/data/things/Contribution.js)0
-rw-r--r--src/data/things/contrib/MusicalArtistContribution.js12
-rw-r--r--src/data/things/contrib/TrackArtistContribution.js12
-rw-r--r--src/data/things/contrib/index.js5
-rw-r--r--src/data/things/index.js2
8 files changed, 49 insertions, 1 deletions
diff --git a/src/data/things/Track.js b/src/data/things/Track.js
index 57ff3a94..5f825509 100644
--- a/src/data/things/Track.js
+++ b/src/data/things/Track.js
@@ -116,6 +116,7 @@ export class Track extends Thing {
     LyricsEntry,
     MusicVideo,
     ReferencingSourcesEntry,
+    TrackTrackArtistContribution,
     TrackSection,
     WikiInfo,
   }) => ({
@@ -262,6 +263,7 @@ export class Track extends Thing {
     artistContribs: [
       withResolvedContribs({
         from: input.updateValue({validate: isContributionList}),
+        class: input.value(TrackTrackArtistContribution),
         date: 'date',
         thingProperty: input.thisProperty(),
         artistProperty: input.value('trackArtistContributions'),
diff --git a/src/data/things/album/Album.js b/src/data/things/album/Album.js
index e81615d4..ebec5444 100644
--- a/src/data/things/album/Album.js
+++ b/src/data/things/album/Album.js
@@ -68,11 +68,13 @@ export class Album extends Thing {
   static [Thing.getPropertyDescriptors] = ({
     AdditionalFile,
     AdditionalName,
+    AlbumArtistContribution,
     ArtTag,
     Artwork,
     CommentaryEntry,
     CreditingSourcesEntry,
     Group,
+    TrackArtistContribution,
     TrackSection,
     WikiInfo,
   }) => ({
@@ -119,6 +121,7 @@ export class Album extends Thing {
     // > Update & expose - Credits and contributors
 
     artistContribs: contributionList({
+      class: input.value(AlbumArtistContribution),
       artistProperty: input.value('albumArtistContributions'),
     }),
 
@@ -127,6 +130,7 @@ export class Album extends Thing {
     trackArtistContribs: [
       withResolvedContribs({
         from: input.updateValue({validate: isContributionList}),
+        class: input.value(TrackArtistContribution),
         thingProperty: input.thisProperty(),
         artistProperty: input.value('albumTrackArtistContributions'),
       }).outputs({
@@ -136,6 +140,7 @@ export class Album extends Thing {
       exposeDependencyOrContinue('#trackArtistContribs', V('empty')),
 
       withRecontextualizedContributionList('artistContribs', {
+        reclass: input.value(TrackArtistContribution),
         artistProperty: input.value('albumTrackArtistContributions'),
       }),
 
diff --git a/src/data/things/contrib/AlbumArtistContribution.js b/src/data/things/contrib/AlbumArtistContribution.js
new file mode 100644
index 00000000..7b6bc9da
--- /dev/null
+++ b/src/data/things/contrib/AlbumArtistContribution.js
@@ -0,0 +1,12 @@
+import {V} from '#composite';
+import Thing from '#thing';
+
+import {exposeConstant} from '#composite/control-flow';
+
+import {MusicalArtistContribution} from './MusicalArtistContribution.js';
+
+export class AlbumArtistContribution extends MusicalArtistContribution {
+  static [Thing.getPropertyDescriptors] = () => ({
+    isAlbumArtistContribution: exposeConstant(V(true)),
+  });
+}
diff --git a/src/data/things/Contribution.js b/src/data/things/contrib/Contribution.js
index 4048709b..4048709b 100644
--- a/src/data/things/Contribution.js
+++ b/src/data/things/contrib/Contribution.js
diff --git a/src/data/things/contrib/MusicalArtistContribution.js b/src/data/things/contrib/MusicalArtistContribution.js
new file mode 100644
index 00000000..b4f8d370
--- /dev/null
+++ b/src/data/things/contrib/MusicalArtistContribution.js
@@ -0,0 +1,12 @@
+import {V} from '#composite';
+import Thing from '#thing';
+
+import {exposeConstant} from '#composite/control-flow';
+
+import {Contribution} from './Contribution.js';
+
+export class MusicalArtistContribution extends Contribution {
+  static [Thing.getPropertyDescriptors] = () => ({
+    isMusicalArtistContribution: exposeConstant(V(true)),
+  });
+}
diff --git a/src/data/things/contrib/TrackArtistContribution.js b/src/data/things/contrib/TrackArtistContribution.js
new file mode 100644
index 00000000..ecbe9b34
--- /dev/null
+++ b/src/data/things/contrib/TrackArtistContribution.js
@@ -0,0 +1,12 @@
+import {V} from '#composite';
+import Thing from '#thing';
+
+import {exposeConstant} from '#composite/control-flow';
+
+import {MusicalArtistContribution} from './MusicalArtistContribution.js';
+
+export class TrackArtistContribution extends MusicalArtistContribution {
+  static [Thing.getPropertyDescriptors] = () => ({
+    isTrackArtistContribution: exposeConstant(V(true)),
+  });
+}
diff --git a/src/data/things/contrib/index.js b/src/data/things/contrib/index.js
new file mode 100644
index 00000000..a0629bdf
--- /dev/null
+++ b/src/data/things/contrib/index.js
@@ -0,0 +1,5 @@
+export * from './Contribution.js';
+
+export * from './MusicalArtistContribution.js';
+export * from './AlbumArtistContribution.js';
+export * from './TrackArtistContribution.js';
diff --git a/src/data/things/index.js b/src/data/things/index.js
index bf8a5a33..3773864b 100644
--- a/src/data/things/index.js
+++ b/src/data/things/index.js
@@ -2,6 +2,7 @@
 
 export * from './album/index.js';
 export * from './content/index.js';
+export * from './contrib/index.js';
 export * from './flash/index.js';
 export * from './group/index.js';
 export * from './homepage-layout/index.js';
@@ -12,7 +13,6 @@ export * from './AdditionalName.js';
 export * from './ArtTag.js';
 export * from './Artist.js';
 export * from './Artwork.js';
-export * from './Contribution.js';
 export * from './Language.js';
 export * from './MusicVideo.js';
 export * from './NewsEntry.js';