_auth_entity = $auth_entity; parent::__construct($auth_entity); } protected function getModel(): AccountModel { if ($this->_model === null) { $this->_model = new AccountModel(); } return $this->_model; } //Result 형태 // [ // {"id":"078e88a7735965b661715af13031ecb0", // "name":"Cloudwin002@idcjp.jp's Auth", // "type":"standard", // "settings":{ // "enforce_twofactor":false, // "api_access_enabled":null, // "access_approval_expiry":null, // "use_account_custom_ns_by_default":false // }, // "legacy_flags":{"enterprise_zone_quota":{"maximum":0,"current":0,"available":0}}, // "created_on":"2017-06-26T05:44:49.470184Z"} // ] public function getArrayByResult($result, array $formDatas = []): array { $formDatas[AccountModel::PK] = $result->id; $formDatas[AccountModel::PARENT] = $this->_auth_entity->getPK(); $formDatas[AccountModel::TITLE] = $result->name; $formDatas['type'] = $result->type; $formDatas['status'] = $this->_auth_entity->status; $formDatas['updated_at'] = date("Y-m-d H:i:s"); $formDatas['created_at'] = $result->created_on; return $formDatas; } public function reload(): void { log_message("notice", "-----{$this->_auth_entity->getTitle()} 처리 시작-----"); $entity_uids = []; $results = $this->reload_procedure("accounts"); //DB수정 foreach ($results as $result) { $formDatas = $this->getArrayByResult($result); $entity = $this->getModel()->modify($this->getModel()->getEntity(), $formDatas); $entity_uids[] = $entity->getPK(); } //부모키를 기준으로 CF에 존재하지 않는 데이터 삭제용 $this->getModel()->where(AccountModel::PARENT, $this->_auth_entity); $this->getModel()->whereNotIn(AccountModel::PK, $entity_uids); $this->getModel()->delete(); log_message("notice", "-----{$this->_auth_entity->getTitle()} 처리[" . count($results) . "개] 완료-----"); } }