Jake Vanderwerf
10 days ago de317675a8069b747cb253ba3e2b5dc394ca36ef
inc/integrations/SyncHelpers.php
@@ -1,6 +1,9 @@
<?php
namespace JVBase\integrations;
use JVBase\managers\queue\executors\IntegrationExecutor;
use JVBase\managers\queue\mergers\DefaultMerger;
use JVBase\managers\queue\TypeConfig;
use JVBase\meta\Meta;
use WP_Query;
@@ -20,6 +23,7 @@
   protected static string $syncCustomer;
   protected static string $import;
   protected function setQueueTypes():void
   {
      self::$syncTo = $this->service_name.'_sync_to';
@@ -141,4 +145,47 @@
      ]);
      return is_wp_error($get) || empty($get) ? false : [$get[0], 'user'];
   }
   public function registerQueueTypes():void
   {
      if (empty($this->syncTaxonomies) && empty($this->syncPostTypes)) {
         return;
      }
      $queue = JVB()->queue();
      $executor = new IntegrationExecutor();
      $queue->registry()->register(self::$syncTo, new TypeConfig(
         mergeable: new DefaultMerger('items'),
         executor: $executor,
         chunkKey: 'items',
         chunkSize: 50,
         maxRetries: 3,
      ));
      if ($this->canSync['delete']) {
         $queue->registry()->register(self::$deleteFrom, new TypeConfig(
            mergeable: new DefaultMerger('external_ids'),
            executor: $executor,
            chunkKey: 'external_ids',
            chunkSize: 200,
            maxRetries: 2
         ));
      }
      $queue->registry()->register(self::$syncFrom, new TypeConfig(
         executor: $executor,
         maxRetries: 3
      ));
      $this->registerAdditionalQueueTypes($executor);
   }
   protected function registerAdditionalQueueTypes(IntegrationExecutor $executor):void
   {
      //Empty. Integration extensions can register additional operation types from here.
   }
   /**
    * @return void Sets the $this->contentTypes
    */
   abstract protected function setContentTypes():void;
}