<?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();