migrations/Version20251006100030.php line 1

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace DoctrineMigrations;
  4. use Doctrine\DBAL\Schema\Schema;
  5. use Doctrine\Migrations\AbstractMigration;
  6. /**
  7. * Create user_session_log table for tracking user sessions and activity
  8. */
  9. final class Version20251006100030 extends AbstractMigration
  10. {
  11. public function getDescription(): string
  12. {
  13. return 'Create user_session_log table to track user logins, logouts and session activity';
  14. }
  15. public function up(Schema $schema): void
  16. {
  17. $this->addSql('CREATE TABLE perseo.user_session_log (
  18. id BIGINT UNSIGNED AUTO_INCREMENT NOT NULL,
  19. user_id BIGINT UNSIGNED DEFAULT NULL,
  20. username VARCHAR(255) DEFAULT NULL,
  21. email VARCHAR(255) DEFAULT NULL,
  22. login_at DATETIME NOT NULL,
  23. logout_at DATETIME DEFAULT NULL,
  24. last_activity_at DATETIME DEFAULT NULL,
  25. duration INT DEFAULT NULL COMMENT \'Duration in seconds\',
  26. ip_address VARCHAR(255) DEFAULT NULL,
  27. user_agent VARCHAR(500) DEFAULT NULL,
  28. session_id VARCHAR(255) NOT NULL,
  29. deleted_at DATETIME DEFAULT NULL,
  30. updated_at DATETIME DEFAULT \'2022-01-01 00:00:00\' NOT NULL,
  31. created_at DATETIME DEFAULT \'2022-01-01 00:00:00\' NOT NULL,
  32. INDEX idx_session_user_id (user_id),
  33. INDEX idx_session_username (username),
  34. INDEX idx_session_login_at (login_at),
  35. INDEX idx_session_logout_at (logout_at),
  36. INDEX idx_session_active (logout_at, last_activity_at),
  37. INDEX idx_session_id (session_id),
  38. PRIMARY KEY(id)
  39. ) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
  40. $this->addSql('ALTER TABLE perseo.user_session_log
  41. ADD CONSTRAINT FK_4DB45FC3A76ED395
  42. FOREIGN KEY (user_id) REFERENCES perseo.user (id)
  43. ON DELETE SET NULL');
  44. }
  45. public function down(Schema $schema): void
  46. {
  47. $this->addSql('DROP TABLE perseo.user_session_log');
  48. }
  49. }