No puede seleccionar más de 25 temas Los temas deben comenzar con una letra o número, pueden incluir guiones ('-') y pueden tener hasta 35 caracteres de largo.

100 líneas
3.0KB

  1. <?php
  2. declare(strict_types=1);
  3. use Core\Database;
  4. use Core\Migration;
  5. return new class extends Migration
  6. {
  7. public function up(Database $database): void
  8. {
  9. $database->execute('
  10. CREATE TABLE IF NOT EXISTS users (
  11. id INTEGER PRIMARY KEY AUTOINCREMENT,
  12. email VARCHAR(255) NOT NULL UNIQUE,
  13. password VARCHAR(255) NOT NULL,
  14. permissions TEXT,
  15. last_login DATETIME,
  16. first_name VARCHAR(255),
  17. last_name VARCHAR(255),
  18. created_at DATETIME,
  19. updated_at DATETIME
  20. )
  21. ');
  22. $database->execute('
  23. CREATE TABLE IF NOT EXISTS roles (
  24. id INTEGER PRIMARY KEY AUTOINCREMENT,
  25. slug VARCHAR(255) NOT NULL UNIQUE,
  26. name VARCHAR(255) NOT NULL,
  27. permissions TEXT,
  28. created_at DATETIME,
  29. updated_at DATETIME
  30. )
  31. ');
  32. $database->execute('
  33. CREATE TABLE IF NOT EXISTS role_users (
  34. user_id INTEGER NOT NULL,
  35. role_id INTEGER NOT NULL,
  36. created_at DATETIME,
  37. updated_at DATETIME,
  38. PRIMARY KEY (user_id, role_id)
  39. )
  40. ');
  41. $database->execute('
  42. CREATE TABLE IF NOT EXISTS persistences (
  43. id INTEGER PRIMARY KEY AUTOINCREMENT,
  44. user_id INTEGER NOT NULL,
  45. code VARCHAR(255) NOT NULL UNIQUE,
  46. created_at DATETIME,
  47. updated_at DATETIME
  48. )
  49. ');
  50. $database->execute('
  51. CREATE TABLE IF NOT EXISTS activations (
  52. id INTEGER PRIMARY KEY AUTOINCREMENT,
  53. user_id INTEGER NOT NULL,
  54. code VARCHAR(255) NOT NULL,
  55. completed INTEGER NOT NULL DEFAULT 0,
  56. completed_at DATETIME,
  57. created_at DATETIME,
  58. updated_at DATETIME
  59. )
  60. ');
  61. $database->execute('
  62. CREATE TABLE IF NOT EXISTS reminders (
  63. id INTEGER PRIMARY KEY AUTOINCREMENT,
  64. user_id INTEGER NOT NULL,
  65. code VARCHAR(255) NOT NULL,
  66. completed INTEGER NOT NULL DEFAULT 0,
  67. completed_at DATETIME,
  68. created_at DATETIME,
  69. updated_at DATETIME
  70. )
  71. ');
  72. $database->execute('
  73. CREATE TABLE IF NOT EXISTS throttle (
  74. id INTEGER PRIMARY KEY AUTOINCREMENT,
  75. user_id INTEGER,
  76. type VARCHAR(255) NOT NULL,
  77. ip VARCHAR(255),
  78. created_at DATETIME,
  79. updated_at DATETIME
  80. )
  81. ');
  82. }
  83. public function down(Database $database): void
  84. {
  85. foreach (['throttle', 'reminders', 'activations', 'persistences', 'role_users', 'roles', 'users'] as $table) {
  86. $database->execute("DROP TABLE IF EXISTS {$table}");
  87. }
  88. }
  89. };

Powered by TurnKey Linux.