General 클래스를 General, GeneralLite로 분리 (#236)
내부 코드 사용례에서 General 테이블의 column을 일부만 가져오는 경우가 다수 있습니다. 다만 General 클래스에서 각종 iAction에 해당하는 트리거 함수 호출을 위해서는 모든 column을 다 가져와야 정상 동작이 가능한 만큼, iAction interface를 구현한 General 클래스와, 구현하지 않은 GeneralLite 클래스 둘로 나눕니다. 또한 General 클래스에서는 필요한 column을 다 가져오도록 변경합니다. Reviewed-on: https://storage.hided.net/gitea/devsam/core/pulls/236
This commit was merged in pull request #236.
This commit is contained in:
@@ -4,14 +4,8 @@ namespace sammo;
|
||||
trait LazyVarUpdater{
|
||||
protected $raw = [];
|
||||
protected $updatedVar = [];
|
||||
protected $auxVar = null;
|
||||
protected $auxUpdated = false;
|
||||
|
||||
function getRaw(bool $extractAux=false):array{
|
||||
if($extractAux){
|
||||
$this->getAuxVar('');
|
||||
|
||||
}
|
||||
function getRaw():array{
|
||||
return $this->raw;
|
||||
}
|
||||
|
||||
@@ -38,15 +32,6 @@ trait LazyVarUpdater{
|
||||
return true;
|
||||
}
|
||||
|
||||
function unpackAux(){
|
||||
if(!key_exists('auxVar', $this->raw)){
|
||||
if(!key_exists('aux', $this->raw)){
|
||||
throw new \RuntimeException('aux is not set');
|
||||
}
|
||||
$this->raw['auxVar'] = Json::decode($this->raw['aux']??'{}');
|
||||
}
|
||||
}
|
||||
|
||||
function setVar(string|\BackedEnum $key, $value){
|
||||
if($key instanceof \BackedEnum){
|
||||
$key = $key->value;
|
||||
@@ -54,33 +39,6 @@ trait LazyVarUpdater{
|
||||
return $this->updateVar($key, $value);
|
||||
}
|
||||
|
||||
function getAuxVar(string|\BackedEnum $key){
|
||||
if($key instanceof \BackedEnum){
|
||||
$key = $key->value;
|
||||
}
|
||||
$this->unpackAux();
|
||||
return $this->raw['auxVar'][$key]??null;
|
||||
}
|
||||
|
||||
function setAuxVar(string|\BackedEnum $key, $var){
|
||||
if($key instanceof \BackedEnum){
|
||||
$key = $key->value;
|
||||
}
|
||||
$oldVar = $this->getAuxVar($key);
|
||||
|
||||
if($oldVar === $var){
|
||||
return;
|
||||
}
|
||||
|
||||
if($var === null){
|
||||
unset($this->raw['auxVar'][$key]);
|
||||
$this->auxUpdated = true;
|
||||
return;
|
||||
}
|
||||
$this->raw['auxVar'][$key] = $var;
|
||||
$this->auxUpdated = true;
|
||||
}
|
||||
|
||||
function updateVar(string|\BackedEnum $key, $value){
|
||||
if($key instanceof \BackedEnum){
|
||||
$key = $key->value;
|
||||
@@ -160,10 +118,6 @@ trait LazyVarUpdater{
|
||||
}
|
||||
|
||||
function getUpdatedValues():array {
|
||||
if($this->auxUpdated){
|
||||
$this->setVar('aux', Json::encode($this->raw['auxVar']));
|
||||
$this->auxUpdated = false;
|
||||
}
|
||||
$updateVals = [];
|
||||
foreach(array_keys($this->updatedVar) as $key){
|
||||
$updateVals[$key] = $this->raw[$key];
|
||||
@@ -173,9 +127,5 @@ trait LazyVarUpdater{
|
||||
|
||||
function flushUpdateValues():void {
|
||||
$this->updatedVar = [];
|
||||
if(key_exists('auxVar', $this->raw)){
|
||||
$this->auxUpdated = false;
|
||||
unset($this->raw['auxVar']);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user