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; + } } /**