aboutsummaryrefslogtreecommitdiff
path: root/db
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2021-11-11 14:45:40 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2021-11-11 14:45:40 +0000
commit55966778f070aca0dfe9f405db1a7bfa098a13f6 (patch)
treeca92156a67377660cebeb8cc9cfd7d7171a8fc4e /db
parent9dcac1b5473709f6f5d2843fa4120ff2050e8074 (diff)
TIC #9569
Diffstat (limited to 'db')
-rw-r--r--db/migrations/5.1.10_coursememberadmission_courseid_type.php41
1 files changed, 41 insertions, 0 deletions
diff --git a/db/migrations/5.1.10_coursememberadmission_courseid_type.php b/db/migrations/5.1.10_coursememberadmission_courseid_type.php
new file mode 100644
index 0000000..badb132
--- /dev/null
+++ b/db/migrations/5.1.10_coursememberadmission_courseid_type.php
@@ -0,0 +1,41 @@
+<?php
+class CourseMemberAdmissionCourseIdType extends Migration
+{
+ public function description()
+ {
+ return "Save course ids as JSON instead of plain text.";
+ }
+
+ public function up()
+ {
+ DBManager::get()->exec("
+ ALTER TABLE `coursememberadmissions`
+ ADD COLUMN `courses` JSON default NULL AFTER `course_id`
+ ");
+
+ DBManager::get()->exec("UPDATE `coursememberadmissions`
+ SET `courses` = JSON_ARRAY_APPEND('[]', '$', `course_id`)
+ WHERE `course_id` != ''
+ ");
+
+ DBManager::get()->exec("ALTER TABLE `coursememberadmissions`
+ DROP COLUMN `course_id`");
+
+ }
+
+ public function down()
+ {
+ $query = "ALTER TABLE `coursememberadmissions`
+ ADD COLUMN `course_id` CHAR(32) CHARACTER SET `latin1` COLLATE `latin1_bin` NOT NULL DEFAULT ''";
+ DBManager::get()->exec($query);
+
+ $query = "UPDATE `coursememberadmissions`
+ SET `course_id` = IFNULL(JSON_EXTRACT(`courses`, '$[0]'), '')";
+ DBManager::get()->exec($query);
+
+ $query = "ALTER TABLE `coursememberadmissions`
+ DROP COLUMN `courses`";
+ DBManager::get()->exec($query);
+ }
+
+}