From 0dfe1d8afafc59c4a5559c498342668d5a58d6ef Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Thu, 23 Jul 2026 22:41:41 +0000
Subject: [PATCH] =Still working away at the Integrations overhaul

---
 inc/integrations/SyncHelpers.php |   51 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 51 insertions(+), 0 deletions(-)

diff --git a/inc/integrations/SyncHelpers.php b/inc/integrations/SyncHelpers.php
index f2d0ca0..7abc2fe 100644
--- a/inc/integrations/SyncHelpers.php
+++ b/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,51 @@
 		]);
 		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);
+	}
+
+	/**
+	 * Empty. Integration extensions can register additional operation types here
+	 * @param IntegrationExecutor $executor
+	 * @return void
+	 */
+	protected function registerAdditionalQueueTypes(IntegrationExecutor $executor):void	{}
+
+	/**
+	 * @return void Sets the $this->contentTypes, which is an array of TYPE => [$fields]
+	 * Should probably set the endpoints here as well, which would be an array of [ TYPE => [ 'create' => '','update' =>'', 'delete'=>'', 'batchCreate'=>'','batchUpdate'=>'', 'batchDelete'=>''] endpoints
+	 */
+	abstract protected function setContentTypes():void;
 }

--
Gitblit v1.10.0