From e69a1ce8afe90de50022d9639f84836bd6aa9b79 Mon Sep 17 00:00:00 2001 From: Daniel Supernault Date: Tue, 16 Oct 2018 20:39:22 -0600 Subject: [PATCH] Update migration to add pgsql support --- ...3717_update_status_visibility_defaults.php | 25 ++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/database/migrations/2018_10_09_043717_update_status_visibility_defaults.php b/database/migrations/2018_10_09_043717_update_status_visibility_defaults.php index 9c0dc3375..fafdf77d3 100644 --- a/database/migrations/2018_10_09_043717_update_status_visibility_defaults.php +++ b/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; + } } /**