From 7a9054bb3f033c98067b3196378311dae54c5fbf Mon Sep 17 00:00:00 2001
From: Jake Vanderwerf <get@jakevanderwerf.ca>
Date: Tue, 20 Jan 2026 01:31:53 +0000
Subject: [PATCH] =OperationQueue refactor to the JVBase/managers/queue namespace

---
 inc/registry/CheckCustomTables.php |   54 +++++++++++++++++++++++++++++++-----------------------
 1 files changed, 31 insertions(+), 23 deletions(-)

diff --git a/inc/registry/CheckCustomTables.php b/inc/registry/CheckCustomTables.php
index bf0f1bf..a54967e 100644
--- a/inc/registry/CheckCustomTables.php
+++ b/inc/registry/CheckCustomTables.php
@@ -445,16 +445,15 @@
             `type` varchar(50) NOT NULL,
             `user_id` {$this->userIDType} NOT NULL,
 
-            `request_data` JSON NOT NULL,
+            `request_data` JSON NOT NULL CHECK (JSON_VALID(request_data)),
 
             `total_items` int(11) NOT NULL DEFAULT 1,
             `processed_items` int(11) DEFAULT 0,
             `failed_items` JSON,
 
-            `priority` enum('low', 'normal', 'high') DEFAULT 'normal',
-//            `status` enum('pending', 'scheduled', 'processing','failed', 'failed_permanent', 'completed', 'completed_with_errors') DEFAULT 'pending',
-            `state` enum('pending', 'scheduled', 'processing', 'completed'),
-            `outcome` enum('success', 'partial', 'failed','failed_permanent'),
+            `priority` ENUM('high', 'normal', 'low') DEFAULT 'normal',
+            `state` enum('pending', 'scheduled', 'processing', 'completed') DEFAULT 'pending',
+            `outcome` enum('pending', 'success', 'partial', 'failed','failed_permanent') DEFAULT 'pending',
 
 			`retries` int(11) DEFAULT 0,
             `last_error_hash` CHAR(32) DEFAULT NULL,
@@ -467,7 +466,6 @@
             `metadata` JSON DEFAULT NULL,
             `result` JSON,
             `dependencies` JSON,
-//            `merge` enum('merge', 'append', 'replace') DEFAULT 'merge',
 
             `user_dismissed` tinyint(1) DEFAULT 0,
             `created_at` DATETIME DEFAULT CURRENT_TIMESTAMP,
@@ -476,26 +474,36 @@
 		   	KEY `idx_run_queue` (state, priority, scheduled_at),
 			KEY `idx_user_ops` (user_id, state),
 			KEY `idx_user_type_pending` (user_id, type, state),
-			KEY `idx_completed_at` (completed_at)
+			KEY `idx_completed_at` (completed_at),
+			KEY `idx_processing_stuck` (`state`, `started_at`)
             )",
 
 		'stats__operation_queue' => "(
-            `id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
-            `date` date NOT NULL,
-            `type` varchar(50) NOT NULL,
-            `total_operations` int NOT NULL DEFAULT 0,
-            `successful_operations` int NOT NULL DEFAULT 0,
-            `failed_operations` int NOT NULL DEFAULT 0,
-            `average_duration` float DEFAULT NULL,
-            `total_items_processed` int NOT NULL DEFAULT 0,
-            `peak_queue_size` int NOT NULL DEFAULT 0,
-            `peak_memory_usage` int DEFAULT NULL,
-            `peak_cpu_usage` float DEFAULT NULL,
-            `created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
-            PRIMARY KEY (`id`),
-            UNIQUE KEY (`date`, `type`),
-            KEY `date_idx` (`date`),
-            KEY `type_idx` (`type`)
+			`id` bigint unsigned AUTO_INCREMENT,
+			`date` date NOT NULL,
+			`type` varchar(50) NOT NULL,
+
+			`total_operations` int NOT NULL DEFAULT 0,
+			`successful_operations` int NOT NULL DEFAULT 0,
+			`partial_operations` int NOT NULL DEFAULT 0,
+			`failed_operations` int NOT NULL DEFAULT 0,
+			`failed_permanent_operations` int NOT NULL DEFAULT 0,
+
+			`total_items_processed` int NOT NULL DEFAULT 0,
+
+			`average_duration` float DEFAULT NULL,
+			`max_duration` int DEFAULT NULL,
+
+			`peak_queue_size` int NOT NULL DEFAULT 0,
+
+			`peak_memory_usage` int DEFAULT NULL,
+			`peak_cpu_usage` float DEFAULT NULL,
+			
+			`created_at` timestamp DEFAULT CURRENT_TIMESTAMP,
+
+			UNIQUE KEY (date, type),
+			KEY `date_idx` (date),
+			KEY `type_idx` (type)
         )"
         ];
     }

--
Gitblit v1.10.0