fix: 준비중
This commit is contained in:
@@ -298,10 +298,8 @@ class GeneralLite
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* @var string[] $column
|
* @var string[] $column
|
||||||
* @var RankColumn[] $rankColumn
|
|
||||||
* @var GeneralAccessLogColumn[] $accessLogColumn
|
|
||||||
*/
|
*/
|
||||||
[$column, $rankColumn, $accessLogColumn] = static::mergeQueryColumn($column, $queryMode);
|
[$column,,] = static::mergeQueryColumn($column, $queryMode);
|
||||||
|
|
||||||
if ($generalIDList === null) {
|
if ($generalIDList === null) {
|
||||||
$rawGenerals = Util::convertArrayToDict(
|
$rawGenerals = Util::convertArrayToDict(
|
||||||
@@ -317,52 +315,13 @@ class GeneralLite
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** @var Map<int,Map<RankColumn,int|float>> */
|
|
||||||
$rawRanks = new Map();
|
|
||||||
if ($rankColumn) {
|
|
||||||
$rawValue = $db->queryAllLists(
|
|
||||||
'SELECT `general_id`, `type`, `value` FROM rank_data WHERE general_id IN %li AND `type` IN %ls',
|
|
||||||
$generalIDList,
|
|
||||||
array_map(fn (\BackedEnum $e) => $e->value, $rankColumn)
|
|
||||||
);
|
|
||||||
foreach ($rawValue as [$generalID, $rawRankType, $rankValue]) {
|
|
||||||
if (!$rawRanks->hasKey($generalID)) {
|
|
||||||
$rawRanks[$generalID] = new Map();
|
|
||||||
}
|
|
||||||
|
|
||||||
$rankType = RankColumn::from($rawRankType);
|
|
||||||
$rawRanks[$generalID][$rankType] = $rankValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$rawAccessLogs = new Map();
|
|
||||||
if ($accessLogColumn) {
|
|
||||||
$rawValue = $db->query(
|
|
||||||
'SELECT `general_id`, %l FROM general_access_log WHERE general_id IN %li',
|
|
||||||
Util::formatListOfBackticks($accessLogColumn),
|
|
||||||
$generalIDList
|
|
||||||
);
|
|
||||||
foreach ($rawValue as $rawLog) {
|
|
||||||
$generalID = $rawLog['general_id'];
|
|
||||||
$logValue = new Map();
|
|
||||||
foreach ($rawLog as $key => $value) {
|
|
||||||
$logValue[GeneralAccessLogColumn::from($key)] = $value;
|
|
||||||
}
|
|
||||||
$rawAccessLogs[$generalID] = $logValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$result = [];
|
$result = [];
|
||||||
foreach ($generalIDList as $generalID) {
|
foreach ($generalIDList as $generalID) {
|
||||||
if (!key_exists($generalID, $rawGenerals)) {
|
if (!key_exists($generalID, $rawGenerals)) {
|
||||||
$result[$generalID] = new DummyGeneral($queryMode->value > 0);
|
$result[$generalID] = new DummyGeneral($queryMode->value > 0);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if ($rawRanks->hasKey($generalID) && $rawRanks[$generalID]->count() !== count($rankColumn)) {
|
$result[$generalID] = new static($rawGenerals[$generalID], null, null, $year, $month);
|
||||||
throw new \RuntimeException('column의 수가 일치하지 않음 : ' . $generalID);
|
|
||||||
}
|
|
||||||
$result[$generalID] = new static($rawGenerals[$generalID], $rawRanks[$generalID] ?? null, $rawAccessLogs[$generalID] ?? null, null, null, $year, $month, $queryMode->value >= GeneralQueryMode::Full->value);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return $result;
|
return $result;
|
||||||
|
|||||||
Reference in New Issue
Block a user