« 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/things.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/things.js')
-rw-r--r--src/data/things.js78
1 files changed, 77 insertions, 1 deletions
diff --git a/src/data/things.js b/src/data/things.js
index 5889b11..2d199c1 100644
--- a/src/data/things.js
+++ b/src/data/things.js
@@ -28,6 +28,8 @@ import {
     validateReferenceList,
 } from './validators.js';
 
+import * as S from './serialize.js';
+
 import {
     getKebabCase,
 } from '../util/wiki-data.js';
@@ -508,6 +510,43 @@ Album.propertyDescriptors = {
     artTags: Thing.common.dynamicThingsFromReferenceList('artTagsByRef', 'artTagData', find.artTag),
 };
 
+Album[S.serializeDescriptors] = {
+    name: S.id,
+    color: S.id,
+    directory: S.id,
+    urls: S.id,
+
+    date: S.id,
+    coverArtDate: S.id,
+    trackArtDate: S.id,
+    dateAddedToWiki: S.id,
+
+    artistContribs: S.toContribRefs,
+    coverArtistContribs: S.toContribRefs,
+    trackCoverArtistContribs: S.toContribRefs,
+    wallpaperArtistContribs: S.toContribRefs,
+    bannerArtistContribs: S.toContribRefs,
+
+    coverArtFileExtension: S.id,
+    trackCoverArtFileExtension: S.id,
+    wallpaperStyle: S.id,
+    wallpaperFileExtension: S.id,
+    bannerStyle: S.id,
+    bannerFileExtension: S.id,
+    bannerDimensions: S.id,
+
+    hasTrackArt: S.id,
+    isMajorRelease: S.id,
+    isListedOnHomepage: S.id,
+
+    commentary: S.id,
+
+    tracks: S.toRefs,
+    groups: S.toRefs,
+    artTags: S.toRefs,
+    commentatorArtists: S.toRefs,
+};
+
 TrackGroup.propertyDescriptors = {
     // Update & expose
 
@@ -781,7 +820,7 @@ Track.prototype[inspect.custom] = function() {
     return (albumName
         ? base + ` (${color.yellow(trackNum)} in ${color.green(albumName)})`
         : base);
-}
+};
 
 // -> Artist
 
@@ -871,6 +910,7 @@ Artist.propertyDescriptors = {
         }
     },
 
+    albumsAsAlbumArtist: Artist.filterByContrib('albumData', 'artistContribs'),
     albumsAsCoverArtist: Artist.filterByContrib('albumData', 'coverArtistContribs'),
     albumsAsWallpaperArtist: Artist.filterByContrib('albumData', 'wallpaperArtistContribs'),
     albumsAsBannerArtist: Artist.filterByContrib('albumData', 'bannerArtistContribs'),
@@ -889,6 +929,31 @@ Artist.propertyDescriptors = {
     flashesAsContributor: Artist.filterByContrib('flashData', 'contributorContribs'),
 };
 
+Artist[S.serializeDescriptors] = {
+    name: S.id,
+    directory: S.id,
+    urls: S.id,
+    contextNotes: S.id,
+
+    hasAvatar: S.id,
+    avatarFileExtension: S.id,
+
+    aliasNames: S.id,
+
+    tracksAsArtist: S.toRefs,
+    tracksAsContributor: S.toRefs,
+    tracksAsCoverArtist: S.toRefs,
+    tracksAsCommentator: S.toRefs,
+
+    albumsAsAlbumArtist: S.toRefs,
+    albumsAsCoverArtist: S.toRefs,
+    albumsAsWallpaperArtist: S.toRefs,
+    albumsAsBannerArtist: S.toRefs,
+    albumsAsCommentator: S.toRefs,
+
+    flashesAsContributor: S.toRefs,
+};
+
 // -> Group
 
 Group.propertyDescriptors = {
@@ -1202,6 +1267,17 @@ Flash.propertyDescriptors = {
     },
 };
 
+Flash[S.serializeDescriptors] = {
+    name: S.id,
+    page: S.id,
+    directory: S.id,
+    date: S.id,
+    contributors: S.toContribRefs,
+    tracks: S.toRefs,
+    urls: S.id,
+    color: S.id,
+};
+
 FlashAct.propertyDescriptors = {
     // Update & expose