diff --git a/database/migrations/2017_10_02_202000_ChangeServicesToUseAMoreUniqueIdentifier.php b/database/migrations/2017_10_02_202000_ChangeServicesToUseAMoreUniqueIdentifier.php new file mode 100644 index 000000000..64d31f749 --- /dev/null +++ b/database/migrations/2017_10_02_202000_ChangeServicesToUseAMoreUniqueIdentifier.php @@ -0,0 +1,50 @@ +dropUnique(['name']); + $table->dropUnique(['file']); + + $table->string('author')->change(); + $table->char('uuid', 36)->after('id'); + $table->dropColumn('folder'); + }); + + DB::table('services')->get(['id', 'author', 'uuid'])->each(function ($service) { + DB::table('services')->where('id', $service->id)->update([ + 'author' => ($service->author === 'ptrdctyl-v040-11e6-8b77-86f30ca893d3') ? 'support@pterodactyl.io' : 'unknown@unknown-author.com', + 'uuid' => Uuid::uuid4()->toString(), + ]); + }); + + Schema::table('services', function (Blueprint $table) { + $table->unique('uuid'); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + { + Schema::table('services', function (Blueprint $table) { + $table->dropColumn('uuid'); + $table->string('folder')->unique('file'); + $table->char('author', 36)->change(); + + $table->unique('name'); + }); + } +} diff --git a/database/migrations/2017_10_02_202007_ChangeToABetterUniqueServiceConfiguration.php b/database/migrations/2017_10_02_202007_ChangeToABetterUniqueServiceConfiguration.php new file mode 100644 index 000000000..c8159826a --- /dev/null +++ b/database/migrations/2017_10_02_202007_ChangeToABetterUniqueServiceConfiguration.php @@ -0,0 +1,51 @@ +char('uuid', 36)->after('id'); + $table->string('author')->after('service_id'); + + $table->index(['service_id', 'tag']); + }); + + DB::table('service_options')->select([ + 'service_options.id', + 'service_options.author', + 'service_options.uuid', + 'services.author AS service_author', + ])->join('services', 'services.id', '=', 'service_options.service_id')->get()->each(function ($option) { + DB::table('service_options')->where('id', $option->id)->update([ + 'author' => $option->service_author, + 'uuid' => Uuid::uuid4()->toString(), + ]); + }); + + Schema::table('service_options', function (Blueprint $table) { + $table->unique('uuid'); + }); + } + + /** + * Reverse the migrations. + */ + public function down() + { + Schema::table('service_options', function (Blueprint $table) { + $table->dropColumn('uuid'); + $table->dropColumn('author'); + $table->dropIndex(['service_id', 'tag']); + }); + } +}