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. }