選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

45 行
1.4KB

  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. $tableExists = $database->first(
  10. "SELECT 1 AS tbl FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'campaign_audit'"
  11. );
  12. if ($tableExists) {
  13. return;
  14. }
  15. // No foreign key on id: audit records must survive deletion of the
  16. // campaign row they reference (that deletion is itself audited as 'D').
  17. $database->execute(
  18. "CREATE TABLE campaign_audit (
  19. audit_id INT IDENTITY(1,1) NOT NULL,
  20. id INT NOT NULL,
  21. action CHAR(1) NOT NULL,
  22. fields NVARCHAR(MAX) NOT NULL,
  23. username NVARCHAR(255) NOT NULL DEFAULT 'system',
  24. created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
  25. CONSTRAINT PK_campaign_audit PRIMARY KEY (audit_id),
  26. CONSTRAINT CHK_campaign_audit_action CHECK (action IN ('I','U','D','R'))
  27. )"
  28. );
  29. $database->execute(
  30. 'CREATE INDEX IX_campaign_audit_id ON campaign_audit (id)'
  31. );
  32. }
  33. public function down(Database $database): void
  34. {
  35. $database->execute('DROP TABLE IF EXISTS campaign_audit');
  36. }
  37. };

Powered by TurnKey Linux.