From 456add95575312013e75432fe5a31fbd18427f76 Mon Sep 17 00:00:00 2001
From: Jared Hancock <jared@osticket.com>
Date: Tue, 12 May 2015 15:59:53 -0500
Subject: [PATCH] amendme: Add migration for %thread_event table

---
 .../streams/core/9143a511-00000000.patch.sql  | 28 +++++++++++++++++++
 setup/inc/streams/core/install-mysql.sql      | 16 +++++++----
 2 files changed, 38 insertions(+), 6 deletions(-)
 create mode 100644 include/upgrader/streams/core/9143a511-00000000.patch.sql

diff --git a/include/upgrader/streams/core/9143a511-00000000.patch.sql b/include/upgrader/streams/core/9143a511-00000000.patch.sql
new file mode 100644
index 000000000..10a6a2321
--- /dev/null
+++ b/include/upgrader/streams/core/9143a511-00000000.patch.sql
@@ -0,0 +1,28 @@
+
+ALTER TABLE `%TABLE_PREFIX%ticket_event`
+  ADD `id` int(10) unsigned NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST,
+  CHANGE `ticket_id` `thread_id` int(11) unsigned NOT NULL default '0',
+  CHANGE `staff` `username` varchar(128) NOT NULL default 'SYSTEM',
+  CHANGE `state` `state` enum('created','closed','reopened','assigned','transferred','overdue','edited','viewed','error','collab','resent') NOT NULL,
+  ADD `data` varchar(1024) DEFAULT NULL COMMENT 'Encoded differences' AFTER `state`,
+  ADD `uid` int(11) unsigned DEFAULT NULL AFTER `username`,
+  ADD `uid_type` char(1) NOT NULL DEFAULT 'S' AFTER `uid`,
+  RENAME TO `%TABLE_PREFIX%thread_event`;
+
+-- Change the `ticket_id` column to the values in `%thread`.`id`
+CREATE TABLE `%TABLE_PREFIX%_ticket_thread_evt`
+    (PRIMARY KEY (`object_id`))
+    SELECT `object_id`, `id` FROM `%TABLE_PREFIX%thread`
+    WHERE `object_type` = 'T';
+
+UPDATE `%TABLE_PREFIX%thread_event` A1
+    JOIN `%TABLE_PREFIX%_ticket_thread_evt` A2 ON (A1.`thread_id` = A2.`object_id`)
+    SET A1.`thread_id` = A2.`id`;
+
+DROP TABLE `%TABLE_PREFIX%_ticket_thread_evt`;
+
+-- Attempt to connect the `username` to the staff_id
+UPDATE `%TABLE_PREFIX%thread_event` A1
+    LEFT JOIN `%TABLE_PREFIX%staff` A2 ON (A2.`username` = A1.`username`)
+    SET A1.`uid` = A2.`staff_id`
+    WHERE A1.`username` != 'SYSTEM';
diff --git a/setup/inc/streams/core/install-mysql.sql b/setup/inc/streams/core/install-mysql.sql
index 26f129681..3ecb6bff6 100644
--- a/setup/inc/streams/core/install-mysql.sql
+++ b/setup/inc/streams/core/install-mysql.sql
@@ -712,18 +712,22 @@ CREATE TABLE `%TABLE_PREFIX%lock` (
   KEY `staff_id` (`staff_id`)
 ) DEFAULT CHARSET=utf8;
 
-DROP TABLE IF EXISTS `%TABLE_PREFIX%ticket_event`;
-CREATE TABLE `%TABLE_PREFIX%ticket_event` (
-  `ticket_id` int(11) unsigned NOT NULL default '0',
+DROP TABLE IF EXISTS `%TABLE_PREFIX%thread_event`;
+CREATE TABLE `%TABLE_PREFIX%thread_event` (
+  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+  `thread_id` int(11) unsigned NOT NULL default '0',
   `staff_id` int(11) unsigned NOT NULL,
   `team_id` int(11) unsigned NOT NULL,
   `dept_id` int(11) unsigned NOT NULL,
   `topic_id` int(11) unsigned NOT NULL,
-  `state` enum('created','closed','reopened','assigned','transferred','overdue') NOT NULL,
-  `staff` varchar(255) NOT NULL default 'SYSTEM',
+  `state` enum('created','closed','reopened','assigned','transferred','overdue','edited','viewed','error','collab','resent') NOT NULL,
+  `data` varchar(1024) DEFAULT NULL COMMENT 'Encoded differences',
+  `username` varchar(128) NOT NULL default 'SYSTEM',
+  `uid` int(11) unsigned DEFAULT NULL,
+  `uid_type` char(1) NOT NULL DEFAULT 'S',
   `annulled` tinyint(1) unsigned NOT NULL default '0',
   `timestamp` datetime NOT NULL,
-  KEY `ticket_state` (`ticket_id`, `state`, `timestamp`),
+  KEY `ticket_state` (`thread_id`, `state`, `timestamp`),
   KEY `ticket_stats` (`timestamp`, `state`)
 ) DEFAULT CHARSET=utf8;
 
-- 
GitLab