20 lines
997 B
SQL
20 lines
997 B
SQL
CREATE TABLE IF NOT EXISTS `rate_limit_blocks` (
|
|
`id` BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
`block_type` ENUM('ip', 'user') NOT NULL,
|
|
`cache_identifier` VARCHAR(191) NOT NULL COMMENT 'fingerprint for ip, hashed identity for user',
|
|
`display_identifier` VARCHAR(255) NOT NULL COMMENT 'actual IP or email/mobile for admin display',
|
|
`block_level` ENUM('soft', 'medium', 'hard') NOT NULL,
|
|
`status` ENUM('active', 'unblocked') NOT NULL DEFAULT 'active',
|
|
`blocked_at` DATETIME NOT NULL,
|
|
`unblocked_at` DATETIME NULL DEFAULT NULL,
|
|
`unblocked_by` BIGINT NULL DEFAULT NULL,
|
|
`unblock_reason` VARCHAR(255) NULL DEFAULT NULL,
|
|
`meta_json` LONGTEXT NULL,
|
|
`created_at` DATETIME NOT NULL,
|
|
`updated_at` DATETIME NOT NULL,
|
|
PRIMARY KEY (`id`),
|
|
UNIQUE KEY `uniq_rate_limit_block` (`block_type`, `cache_identifier`),
|
|
KEY `idx_rate_limit_status` (`status`, `block_type`),
|
|
KEY `idx_rate_limit_level` (`block_level`)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|