18 lines
953 B
SQL
18 lines
953 B
SQL
-- analytics table: tracks all user actions
|
|
CREATE TABLE IF NOT EXISTS analytics (
|
|
id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
|
|
event VARCHAR(50) NOT NULL COMMENT 'paste_created, paste_viewed, paste_unlocked, paste_failed_password, paste_expired, paste_not_found, decrypt_error',
|
|
paste_id CHAR(32) DEFAULT NULL COMMENT 'related paste ID if applicable',
|
|
ip VARCHAR(45) NOT NULL DEFAULT '',
|
|
user_agent VARCHAR(512) DEFAULT NULL,
|
|
referer VARCHAR(512) DEFAULT NULL,
|
|
extra JSON DEFAULT NULL COMMENT 'expire_time, char_count, has_password, source, etc.',
|
|
created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
|
|
|
PRIMARY KEY (id),
|
|
INDEX idx_event (event),
|
|
INDEX idx_paste_id (paste_id),
|
|
INDEX idx_ip (ip),
|
|
INDEX idx_created_at (created_at)
|
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|