Files
onboard/app/Services/Analytics/AnalyticsQuery.php

37 lines
1.3 KiB
PHP

<?php
namespace App\Services\Analytics;
use App\Models\Department;
use App\Models\User;
use App\Services\DateRange;
/**
* Запрос на построение отчёта: что и как агрегировать.
*/
readonly class AnalyticsQuery
{
/**
* @param array<int,string> $dimensions ключи измерений (в порядке отображения)
* @param array<int,string> $measures ключи показателей (в порядке отображения)
* @param array<int,array{key:string,value:mixed}> $filters
* @param 'period'|'dynamics' $mode
* @param 'day'|'week'|'month' $detalization
* @param array{metric?:string,type?:string} $chart
* @param Measure[] $customMeasures пользовательские показатели, подмешиваемые к датасету
*/
public function __construct(
public string $datasetKey,
public array $dimensions,
public array $measures,
public array $filters,
public string $mode,
public string $detalization,
public Department $department,
public DateRange $dateRange,
public array $chart = [],
public array $customMeasures = [],
public ?User $user = null,
) {}
}