Migrate.php 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?php
  2. use Schema\Wrapper as Wrapper;
  3. function core_auth_upgrade($pluginversion)
  4. {
  5. if ($pluginversion < "0.0.1") {
  6. $table = Wrapper::get_table("auth_user");
  7. $table->addColumn("method", "string", array("null" => false, 'default' => 'manual'));
  8. $table->addColumn("username", "string", array("null" => false));
  9. $table->addColumn("name", "string", array("null" => false));
  10. $table->addColumn("email", "string", array("null" => false));
  11. $table->addColumn("password", "string", array("null" => true));
  12. $table->addIndex(['username'], ['unique' => true]);
  13. $table->addIndex(['email'], ['unique' => true]);
  14. $table->addTimestamps();
  15. $table->addSoftDelete();
  16. $table->create();
  17. $table = Wrapper::get_table("auth_permission");
  18. $table->addColumn("name", "string", array("null" => false, "limit" => 255));
  19. $table->addColumn("description", "string", array("null" => true));
  20. $table->create();
  21. $table = Wrapper::get_table("auth_group");
  22. $table->addColumn("name", "string", array("null" => false, "limit" => 255));
  23. $table->addColumn("description", "string", array("null" => true));
  24. $table->create();
  25. $table = Wrapper::get_table("auth_group_user");
  26. $table->addColumn("user_id", "integer", array("null" => false));
  27. $table->addColumn("group_id", "integer", array("null" => false));
  28. $table->addForeignKey('user_id', Wrapper::get_table("auth_user"), 'id', ['delete' => 'SET_NULL', 'update' => 'NO_ACTION']);
  29. $table->addForeignKey('group_id', Wrapper::get_table("auth_group"), 'id', ['delete' => 'SET_NULL', 'update' => 'NO_ACTION']);
  30. $table->create();
  31. $table = Wrapper::get_table("auth_permission_group");
  32. $table->addColumn("group_id", "integer", array("null" => false));
  33. $table->addColumn("permission_id", "integer", array("null" => false));
  34. $table->addForeignKey('group_id', Wrapper::get_table("auth_group"), 'id', ['delete' => 'SET_NULL', 'update' => 'NO_ACTION']);
  35. $table->addForeignKey('permission_id', Wrapper::get_table("auth_permission"), 'id', ['delete' => 'SET_NULL', 'update' => 'NO_ACTION']);
  36. $table->create();
  37. $table = Wrapper::get_table("auth_permission_user");
  38. $table->addColumn("user_id", "integer", array("null" => false));
  39. $table->addColumn("permission_id", "integer", array("null" => false));
  40. $table->addColumn("action", "string", array("null" => false, 'limit' => 1));
  41. $table->addForeignKey('user_id', Wrapper::get_table("auth_group"), 'id', ['delete' => 'SET_NULL', 'update' => 'NO_ACTION']);
  42. $table->addForeignKey('permission_id', Wrapper::get_table("auth_permission"), 'id', ['delete' => 'SET_NULL', 'update' => 'NO_ACTION']);
  43. $table->create();
  44. Wrapper::exec(file_get_contents(__DIR__ . '/001_auth_seeding.sql'));
  45. App\Core\Sanity\MigratorController::getInstance()->update_plugin_version("core_auth", "1.0.0");
  46. return;
  47. }
  48. /**
  49. * Create logs tables
  50. */
  51. if ($pluginversion < "1.0.1") {
  52. $table = Wrapper::get_table("auth_log");
  53. $table->addColumn("user_id", "integer", array("null" => false));
  54. $table->addColumn("permission_id", "integer", array("null" => false));
  55. $table->addColumn("real_user_id", "integer", array("null" => false));
  56. $table->addForeignKey('user_id', Wrapper::get_table("auth_user"), 'id');
  57. $table->addForeignKey('real_user_id', Wrapper::get_table("auth_user"), 'id');
  58. $table->create();
  59. App\Core\Sanity\MigratorController::getInstance()->update_plugin_version("core_auth", "1.0.1");
  60. }
  61. /**
  62. * Create token tables
  63. */
  64. if ($pluginversion < "1.0.2") {
  65. $table = Wrapper::get_table("auth_token");
  66. $table->addColumn("user_id", "integer", array("null" => false));
  67. $table->addColumn("token", "string", array("null" => false, "limit" => 64));
  68. $table->addForeignKey('user_id', Wrapper::get_table("auth_user"), 'id', ['delete' => 'SET_NULL', 'update' => 'NO_ACTION']);
  69. $table->create();
  70. App\Core\Sanity\MigratorController::getInstance()->update_plugin_version("core_auth", "1.0.2");
  71. }
  72. }
  73. function core_auth_rollback($pluginversion)
  74. {
  75. if ($pluginversion > "0.1.0") {
  76. $table = Wrapper::get_table("auth");
  77. $table->drop();
  78. return;
  79. }
  80. }