diff options
author | (quasar) nebula <qznebula@protonmail.com> | 2024-01-29 08:10:30 -0400 |
---|---|---|
committer | (quasar) nebula <qznebula@protonmail.com> | 2024-01-30 07:59:40 -0400 |
commit | eb8b316bb9af7d34720de1fa8f8dbd4b81513b32 (patch) | |
tree | 22d435e702b89344304928b7a860a5326357f192 /src/data/things/artist.js | |
parent | b30585187480a270826767eaf97e1acc66126072 (diff) |
data, yaml: store data step info on Thing constructors
Diffstat (limited to 'src/data/things/artist.js')
-rw-r--r-- | src/data/things/artist.js | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/data/things/artist.js b/src/data/things/artist.js index ab08f52..8f32afd 100644 --- a/src/data/things/artist.js +++ b/src/data/things/artist.js @@ -1,3 +1,5 @@ +export const ARTIST_DATA_FILE = 'artists.yaml'; + import {input} from '#composite'; import find from '#find'; import {unique} from '#sugar'; @@ -257,4 +259,33 @@ export class Artist extends Thing { 'Review Points': {ignore: true}, }, }; + + static [Thing.getYamlLoadingSpec] = ({ + documentModes: {allInOne}, + thingConstructors: {Artist}, + }) => ({ + title: `Process artists file`, + file: ARTIST_DATA_FILE, + + documentMode: allInOne, + documentThing: Artist, + + save(results) { + const artistData = results; + + const artistAliasData = results.flatMap((artist) => { + const origRef = Thing.getReference(artist); + return artist.aliasNames?.map((name) => { + const alias = new Artist(); + alias.name = name; + alias.isAlias = true; + alias.aliasedArtist = origRef; + alias.artistData = artistData; + return alias; + }) ?? []; + }); + + return {artistData, artistAliasData}; + }, + }); } |