Commit 2550e5d1 authored by Telenkov Ruslan's avatar Telenkov Ruslan

all done, new functions, one queue

parent bf04ac5c
......@@ -203,4 +203,5 @@ public function processItem($data){
));
$node->save();
}
}
......@@ -2,7 +2,7 @@
namespace Drupal\myservice\Plugin\QueueWorker;
use Drupal\Core\Queue\QueueWorkerBase;
use Drupal\myservice\Controller\MyService;
/**
* Process a queue.
*
......@@ -18,51 +18,34 @@ class MyQueueWorker extends QueueWorkerBase {
/**
* {@inheritdoc}
*/
public function existNode($type, $id){
$query = \Drupal::entityQuery('node')
->condition('type', $type)
->condition('field_swapi_id', $id);
$nids = $query->execute();
return $nids;
}
public function nodeType($api_url){
$array_of_url = explode('/', $api_url); //разделяю адрес АПИ на массив элементов
$type_of_node = $array_of_url[4]; // название необходимой ноды - ВСЕГДА четвертый элемент данного массива
return $type_of_node;
}
public function nodeId($api_url){
$array_of_url = explode('/', $api_url); //разделяю адрес АПИ на массив элементов
$node_id = $array_of_url[5];
return $node_id;
}
// 1 API
public function processItem($data)
{
$queue = \Drupal::queue('my_node_queue'); //объявляю очередь
$secondQueue = \Drupal::queue('my_second_node_queue');
$url = $data;
//$queue = \Drupal::queue('my_node_queue'); //объявляю очередь
// $secondQueue = \Drupal::queue('my_second_node_queue');
$url = $data; // перезаписываю адреса
$service = \Drupal::service('myservice.my'); //обращаюсь к сервису
do {
$request = \Drupal::service('myservice.my')->getResult($url);
$request = $service->getResult($url);
$result = $request->results; // выкинул служебную информацию
foreach ($result as $row_item){
$type = $this->nodeType($row_item->url); // получаю ID ноды для дальнейшей проверки из БД
$id = $this -> nodeId($row_item->url); // получаю тип ноды для дальнейшей проверки из БД
$nids = $this->existNode($type, $id); // вызываю функцию проверки ноды в БД, если есть, то вернется ID
$type =$service->nodeType($row_item->url); // получаю ID ноды для дальнейшей проверки из БД
$id = $service->nodeId($row_item->url); // получаю тип ноды для дальнейшей проверки из БД
$nids = $service->existNode($type, $id); // вызываю функцию проверки ноды в БД, если есть, то вернется ID
if (empty($nids)){
$queue->createItem($row_item);
// $queue->createItem($row_item);
$service->createNode($row_item); // вызываю метод создания ноды из сервиса
$service->updateNode($row_item);
}
else {
$secondQueue->createItem($row_item);
$service->updateNode($row_item);
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment