From 714d6b5d4950e52cf1c3170bb59954f98ffd48bd Mon Sep 17 00:00:00 2001
From: Yassine Doghri <yassine@doghri.fr>
Date: Fri, 11 Jun 2021 13:01:42 +0000
Subject: [PATCH] fix(analytics): update migrations to set decimal precision
 for latitude and longitude

add unsigned for soundbites start time and duration
---
 .../2020-06-05-180000_add_soundbites.php         |  2 ++
 ...1-160000_add_analytics_podcasts_by_region.php |  4 ++--
 ...1-210000_add_analytics_podcasts_procedure.php | 16 ++++++++--------
 ...dd_analytics_unknown_useragents_procedure.php |  2 +-
 ...01-210000_add_analytics_website_procedure.php | 11 +++++++++--
 5 files changed, 22 insertions(+), 13 deletions(-)

diff --git a/app/Database/Migrations/2020-06-05-180000_add_soundbites.php b/app/Database/Migrations/2020-06-05-180000_add_soundbites.php
index cf20ee1d3c..90573d5194 100644
--- a/app/Database/Migrations/2020-06-05-180000_add_soundbites.php
+++ b/app/Database/Migrations/2020-06-05-180000_add_soundbites.php
@@ -34,10 +34,12 @@ class AddSoundbites extends Migration
             ],
             'start_time' => [
                 'type' => 'DECIMAL(8,3)',
+                'unsigned' => true,
             ],
             'duration' => [
                 // soundbite duration cannot be higher than 9999,999 seconds ~ 2.77 hours
                 'type' => 'DECIMAL(7,3)',
+                'unsigned' => true,
             ],
             'label' => [
                 'type' => 'VARCHAR',
diff --git a/app/Libraries/Analytics/Database/Migrations/2017-12-01-160000_add_analytics_podcasts_by_region.php b/app/Libraries/Analytics/Database/Migrations/2017-12-01-160000_add_analytics_podcasts_by_region.php
index 57ee57b31a..39d3149243 100644
--- a/app/Libraries/Analytics/Database/Migrations/2017-12-01-160000_add_analytics_podcasts_by_region.php
+++ b/app/Libraries/Analytics/Database/Migrations/2017-12-01-160000_add_analytics_podcasts_by_region.php
@@ -37,11 +37,11 @@ class AddAnalyticsPodcastsByRegion extends Migration
                 'comment' => 'ISO 3166-2 code.',
             ],
             'latitude' => [
-                'type' => 'DECIMAL',
+                'type' => 'DECIMAL(8,6)',
                 'null' => true,
             ],
             'longitude' => [
-                'type' => 'DECIMAL',
+                'type' => 'DECIMAL(9,6)',
                 'null' => true,
             ],
             'hits' => [
diff --git a/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php b/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php
index b04b4e08b0..03c5fae434 100644
--- a/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php
+++ b/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_podcasts_procedure.php
@@ -26,14 +26,14 @@ class AddAnalyticsPodcastsProcedure extends Migration
         CREATE PROCEDURE `{$prefix}analytics_podcasts` (
             IN `p_podcast_id` INT UNSIGNED,
             IN `p_episode_id` INT UNSIGNED,
-            IN `p_country_code` VARCHAR(3) CHARSET utf8mb4,
-            IN `p_region_code` VARCHAR(3) CHARSET utf8mb4,
-            IN `p_latitude` DECIMAL,
-            IN `p_longitude` DECIMAL,
-            IN `p_service` VARCHAR(128) CHARSET utf8mb4,
-            IN `p_app` VARCHAR(128) CHARSET utf8mb4,
-            IN `p_device` VARCHAR(32) CHARSET utf8mb4,
-            IN `p_os` VARCHAR(32) CHARSET utf8mb4,
+            IN `p_country_code` VARCHAR(3),
+            IN `p_region_code` VARCHAR(3),
+            IN `p_latitude` DECIMAL(8,6),
+            IN `p_longitude` DECIMAL(9,6),
+            IN `p_service` VARCHAR(128),
+            IN `p_app` VARCHAR(128),
+            IN `p_device` VARCHAR(32),
+            IN `p_os` VARCHAR(32),
             IN `p_bot` TINYINT(1) UNSIGNED,
             IN `p_filesize` INT UNSIGNED,
             IN `p_duration` INT UNSIGNED,
diff --git a/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_unknown_useragents_procedure.php b/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_unknown_useragents_procedure.php
index 918fa96097..e7a0f9b010 100644
--- a/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_unknown_useragents_procedure.php
+++ b/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_unknown_useragents_procedure.php
@@ -22,7 +22,7 @@ class AddAnalyticsUnknownUseragentsProcedure extends Migration
         // Example: CALL analytics_unknown_useragents('Podcasts/1430.46 CFNetwork/1125.2 Darwin/19.4.0');
         $procedureName = $this->db->prefixTable('analytics_unknown_useragents');
         $createQuery = <<<CODE_SAMPLE
-        CREATE PROCEDURE `{$procedureName}` (IN `p_useragent` VARCHAR(191) CHARSET utf8mb4)  MODIFIES SQL DATA
+        CREATE PROCEDURE `{$procedureName}` (IN `p_useragent` VARCHAR(191)) MODIFIES SQL DATA
         DETERMINISTIC
         SQL SECURITY INVOKER
         COMMENT 'Add an unknown useragent to table {$procedureName}.'
diff --git a/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_website_procedure.php b/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_website_procedure.php
index 6f91cdddbf..8222abd9c7 100644
--- a/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_website_procedure.php
+++ b/app/Libraries/Analytics/Database/Migrations/2017-12-01-210000_add_analytics_website_procedure.php
@@ -22,10 +22,17 @@ class AddAnalyticsWebsiteProcedure extends Migration
         // Example: CALL analytics_website(1,'FR','Firefox');
         $procedureName = $this->db->prefixTable('analytics_website');
         $createQuery = <<<CODE_SAMPLE
-        CREATE PROCEDURE `{$procedureName}` (IN `p_podcast_id` INT UNSIGNED, IN `p_browser` VARCHAR(191) CHARSET utf8mb4, IN `p_entry_page` VARCHAR(512) CHARSET utf8mb4, IN `p_referer_url` VARCHAR(512) CHARSET utf8mb4, IN `p_domain` VARCHAR(128) CHARSET utf8mb4, IN `p_keywords` VARCHAR(384) CHARSET utf8mb4)  MODIFIES SQL DATA
+        CREATE PROCEDURE `{$procedureName}` (
+            IN `p_podcast_id` INT UNSIGNED,
+            IN `p_browser` VARCHAR(191),
+            IN `p_entry_page` VARCHAR(512),
+            IN `p_referer_url` VARCHAR(512),
+            IN `p_domain` VARCHAR(128),
+            IN `p_keywords` VARCHAR(384)
+        ) COMMENT 'Add one hit in website logs tables.'
+        MODIFIES SQL DATA
         DETERMINISTIC
         SQL SECURITY INVOKER
-        COMMENT 'Add one hit in website logs tables.'
         BEGIN
 
         SET @current_date = DATE(NOW());
-- 
GitLab