You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

54 lines
1.5 KiB

<?php
4 weeks ago
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'];
4 weeks ago
$db = new DatabaseInteractions();
$variantDetails = $db->RunOneSelect(
queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE(
table: 'TuneVariants',
id: $targetTuneVariantID
4 weeks ago
)
->cols([
'T.ID AS TuneVariantID',
'T.TuneID AS TuneID',
4 weeks ago
"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'
4 weeks ago
)
->groupBy(spec: [
'T.ID',
])
);
$tuneDetails = $db->RunOneSelect(
queryBuilder: SQLQueryBuilderWrapper::SELECT_ONE(
table: 'Tunes',
id: $variantDetails['TuneID']
)
);
4 weeks ago
$tuneDetails = new DatabaseFolkTuneDetails($tuneDetails);
$variantDetails = new TuneVariant($tuneDetails, $variantDetails);
4 weeks ago
header(header: "Content-type: text/text");
echo $variantDetails->Build();
die();