<?php use App\Dataclasses\DatabaseFolkTuneDetails; use App\Dataclasses\TuneVariant; use App\Wrappers\DatabaseInteractions; use App\Wrappers\SQLQueryBuilderWrapper; $tuneDir = __DIR__ . '/../../../LocalStorage/Tunes'; $targetTuneVariantID = $_GET['tune-variant-id']; $db = new DatabaseInteractions(); $variantDetails = $db->RunOneSelect( queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE( table: 'TuneVariants', id: $targetTuneVariantID ) ->cols([ 'T.ID AS TuneVariantID', 'T.TuneID AS TuneID', "CONCAT('[', GROUP_CONCAT( CONCAT( '{\"TimeSignature\":', JSON_QUOTE(T_TVP.TimeSignature), ',', '\"KeySignature\":', JSON_QUOTE(T_TVP.KeySignature), ',', '\"ABCNotation\":', JSON_QUOTE(T_TVP.ABCNotation), '}' ) ), ']') AS Parts" ]) ->join( join: 'INNER', spec: 'TuneVariantParts AS T_TVP', cond: 'T.ID = T_TVP.TuneVariantID' ) ->groupBy(spec: [ 'T.ID', ]) ); $tuneDetails = $db->RunOneSelect( queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE( table: 'Tunes', id: $variantDetails['TuneID'] ) ); $tuneDetails = new DatabaseFolkTuneDetails($tuneDetails); $variantDetails = new TuneVariant($tuneDetails, $variantDetails); header(header: "Content-type: text/text"); echo $variantDetails->Build(); die();