From 9e7807a8500a0208f8f8cbded89dfb06f1e21061 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 3 Oct 2025 15:07:42 -0300 Subject: data: "Main Release: same name single" --- src/data/composite/things/track/withMainRelease.js | 41 ++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) (limited to 'src/data/composite') diff --git a/src/data/composite/things/track/withMainRelease.js b/src/data/composite/things/track/withMainRelease.js index b1f427eb..f1b0841a 100644 --- a/src/data/composite/things/track/withMainRelease.js +++ b/src/data/composite/things/track/withMainRelease.js @@ -33,20 +33,57 @@ export default templateCompositeFrom({ output: input.value({'#mainRelease': null}), }), + { + dependencies: [input('from'), 'name'], + compute: (continuation, { + [input('from')]: ref, + ['name']: ownName, + }) => + (ref === 'same name single' + ? continuation({ + ['#albumOrTrackReference']: null, + ['#sameNameSingleReference']: ownName, + }) + : continuation({ + ['#albumOrTrackReference']: ref, + ['#sameNameSingleReference']: null, + })), + }, + withResolvedReference({ - ref: input('from'), + ref: '#albumOrTrackReference', find: soupyFind.input('trackMainReleasesOnly'), }).outputs({ '#resolvedReference': '#matchingTrack', }), withResolvedReference({ - ref: input('from'), + ref: '#albumOrTrackReference', find: soupyFind.input('album'), }).outputs({ '#resolvedReference': '#matchingAlbum', }), + withResolvedReference({ + ref: '#sameNameSingleReference', + find: soupyFind.input('albumSinglesOnly'), + }).outputs({ + '#resolvedReference': '#sameNameSingle', + }), + + { + dependencies: ['#sameNameSingle'], + compute: (continuation, { + ['#sameNameSingle']: sameNameSingle, + }) => + (sameNameSingle + ? continuation.raiseOutput({ + ['#mainRelease']: + sameNameSingle, + }) + : continuation()), + }, + { dependencies: [ '#matchingTrack', -- cgit 1.3.0-6-gf8a5