Kaynağa Gözat

Update migration to add pgsql support

Daniel Supernault 6 yıl önce
ebeveyn
işleme
e69a1ce8af

+ 24 - 1
database/migrations/2018_10_09_043717_update_status_visibility_defaults.php

@@ -13,7 +13,30 @@ class UpdateStatusVisibilityDefaults extends Migration
      */
     public function up()
     {
-        DB::statement("ALTER TABLE statuses CHANGE COLUMN visibility visibility ENUM('public','unlisted','private','direct', 'draft') NOT NULL DEFAULT 'public'");
+        $type = config('database.default');
+        switch($type)
+        {
+            case 'mysql':
+                DB::statement("ALTER TABLE statuses CHANGE COLUMN visibility visibility ENUM('public','unlisted','private','direct', 'draft') NOT NULL DEFAULT 'public'");
+                break;
+
+            case 'pgsql':
+                $sql = <<<'SQL'
+# rename the existing type
+ALTER TYPE visibility_enum RENAME TO visibility_enum_old;
+
+# create the new type
+CREATE TYPE visibility_enum AS ENUM('public','unlisted','private','direct', 'draft');
+
+# update the columns to use the new type
+ALTER TABLE statuses ALTER COLUMN visibility TYPE visibility_enum USING visibility::text::visibility_enum;
+
+# remove the old type
+DROP TYPE visibility_enum_old;
+SQL;
+                DB::statement($sql);
+                break;
+        }
     }
 
     /**