refac,wip: GeneralQueryMode 분리

- GeneralQueryMode - General 생성용
- GeneralLiteQueryMode - GeneralLite 생성용
- 이를 통해 확실한 에러 메시지를 내줄 것으로..
This commit is contained in:
2023-08-01 16:28:29 +00:00
parent 6b91a800fa
commit 29273d7a8b
6 changed files with 28 additions and 31 deletions
+1 -1
View File
@@ -569,7 +569,7 @@ if ($str3) {
[$prizeColumn->value, $gameColumn->value, $winColumn->value, $drawColumn->value, $loseColumn->value, 'leadership', 'strength', 'intel', 'no', 'npc', 'name'],
GeneralQueryMode::Core
);
usort($tournamentRankerList, function (General $lhs, General $rhs) use ($gameColumn, $winColumn, $drawColumn, $loseColumn) {
usort($tournamentRankerList, function (GeneralLite $lhs, GeneralLite $rhs) use ($gameColumn, $winColumn, $drawColumn, $loseColumn) {
$result = - ($lhs->getRankVar($gameColumn) <=> $rhs->getRankVar($gameColumn));
if ($result !== 0) return $result;
$result = - (
+14
View File
@@ -0,0 +1,14 @@
<?php
namespace sammo\Enums;
// mergeQueryColumn, createGeneralLiteObjListFromDB, createGeneralLiteObjFromDB 호출시 column 특수 모드 지정
enum GeneralLiteQueryMode: int
{
/** 장수 식별을 위한 최소한의 정보, logger 초기화 없음 */
case Core = 0;
/** 게임 내에서 필수 이벤트 처리를 위한 정보 */
case Lite = 1;
/** 게임 내 모든 이벤트 처리를 위한 정보 */
case Full = 2;
}
-6
View File
@@ -5,12 +5,6 @@ namespace sammo\Enums;
// mergeQueryColumn, createGeneralObjListFromDB, createGeneralObjFromDB 호출시 column 특수 모드 지정
enum GeneralQueryMode: int
{
/** 장수 식별을 위한 최소한의 정보, logger 초기화 없음 */
case Core = 0;
/** 게임 내에서 필수 이벤트 처리를 위한 정보, iAction 제외 */
case Lite = 1;
/** 게임 내 모든 이벤트 처리를 위한 정보, iAction 제외 */
case FullWithoutIAction = 2;
/** 게임 내 모든 이벤트 처리를 위한 정보, iAction 포함 */
case Full = 3;
/** 접속 정보를 포함한 모든 정보 */
-8
View File
@@ -927,10 +927,6 @@ class General extends GeneralBase implements iAction
return [];
}
if($queryMode < GeneralQueryMode::Full){
throw new \InvalidArgumentException('충분하지 않은 queryMode:' . $queryMode->name);
}
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
@@ -1013,10 +1009,6 @@ class General extends GeneralBase implements iAction
static public function createGeneralObjFromDB(int $generalID, ?array $column = null, GeneralQueryMode $queryMode = GeneralQueryMode::Full): self
{
if($queryMode < GeneralQueryMode::Full){
throw new \InvalidArgumentException('충분하지 않은 queryMode:' . $queryMode->name);
}
$db = DB::db();
$gameStor = KVStorage::getStorage($db, 'game_env');
[$year, $month] = $gameStor->getValuesAsArray(['year', 'month']);
+8 -7
View File
@@ -4,6 +4,7 @@ namespace sammo;
use Ds\Map;
use sammo\Enums\GeneralAccessLogColumn;
use sammo\Enums\GeneralLiteQueryMode;
use sammo\Enums\GeneralQueryMode;
use sammo\Enums\RankColumn;
@@ -145,7 +146,7 @@ abstract class GeneralBase
abstract function applyDB($db): bool;
static public function mergeQueryColumn(?array $reqColumns = null, GeneralQueryMode $queryMode = GeneralQueryMode::Full): array
static public function mergeQueryColumn(?array $reqColumns = null, GeneralQueryMode|GeneralLiteQueryMode $queryMode = GeneralQueryMode::Full): array
{
$minimumColumn = ['no', 'name', 'owner', 'npc', 'city', 'nation', 'officer_level', 'officer_city'];
$defaultEventColumn = [
@@ -170,11 +171,11 @@ abstract class GeneralBase
if ($reqColumns === null) {
switch ($queryMode) {
case GeneralQueryMode::Core:
case GeneralLiteQueryMode::Core:
return [$minimumColumn, [], []];
case GeneralQueryMode::Lite:
case GeneralLiteQueryMode::Lite:
return [$defaultEventColumn, [], []];
case GeneralQueryMode::FullWithoutIAction:
case GeneralLiteQueryMode::Full:
case GeneralQueryMode::Full:
return [$fullColumn, RankColumn::cases(), []];
case GeneralQueryMode::FullWithAccessLog:
@@ -211,11 +212,11 @@ abstract class GeneralBase
}
switch ($queryMode) {
case GeneralQueryMode::Core:
case GeneralLiteQueryMode::Core:
return [array_unique(array_merge($minimumColumn, $subColumn)), $rankColumn, $accessLogColumn];
case GeneralQueryMode::Lite:
case GeneralLiteQueryMode::Lite:
return [array_unique(array_merge($defaultEventColumn, $subColumn)), $rankColumn, $accessLogColumn];
case GeneralQueryMode::FullWithoutIAction:
case GeneralLiteQueryMode::Full:
case GeneralQueryMode::Full:
return [array_unique(array_merge($fullColumn, $subColumn)), $rankColumn, $accessLogColumn];
case GeneralQueryMode::FullWithAccessLog:
+5 -9
View File
@@ -3,7 +3,7 @@
namespace sammo;
use Ds\Map;
use sammo\Enums\GeneralQueryMode;
use sammo\Enums\GeneralLiteQueryMode;
use sammo\Enums\RankColumn;
class GeneralLite extends GeneralBase
@@ -64,17 +64,17 @@ class GeneralLite extends GeneralBase
/**
* @param ?int[] $generalIDList
* @param null|array<string|RankColumn> $column
* @param GeneralQueryMode $queryMode
* @param GeneralLiteQueryMode $queryMode
* @return \sammo\GeneralLite[]
* @throws MustNotBeReachedException
*/
static public function createGeneralLiteObjListFromDB(?array $generalIDList, ?array $column = null, GeneralQueryMode $queryMode = GeneralQueryMode::FullWithoutIAction): array
static public function createGeneralLiteObjListFromDB(?array $generalIDList, ?array $column = null, GeneralLiteQueryMode $queryMode = GeneralLiteQueryMode::Full): array
{
if ($generalIDList === []) {
return [];
}
if($queryMode > GeneralQueryMode::FullWithoutIAction){
if($queryMode > GeneralLiteQueryMode::Full){
throw new \InvalidArgumentException('지원하지 않는 queryMode:' . $queryMode->name);
}
@@ -136,12 +136,8 @@ class GeneralLite extends GeneralBase
return $result;
}
static public function createGeneralLiteObjFromDB(int $generalID, ?array $column = null, GeneralQueryMode $queryMode = GeneralQueryMode::FullWithoutIAction): self
static public function createGeneralLiteObjFromDB(int $generalID, ?array $column = null, GeneralLiteQueryMode $queryMode = GeneralLiteQueryMode::Full): self
{
if($queryMode > GeneralQueryMode::FullWithoutIAction){
throw new \InvalidArgumentException('지원하지 않는 queryMode:' . $queryMode->name);
}
$db = DB::db();
if ($queryMode->value > 0) {
$gameStor = KVStorage::getStorage($db, 'game_env');