CREATE TABLE admins (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(80) UNIQUE,
    password VARCHAR(255),
    role VARCHAR(50) DEFAULT 'super_admin',
    email VARCHAR(120) NULL,
    is_active TINYINT DEFAULT 1,
    last_login DATETIME NULL
);

CREATE TABLE settings (
    id INT AUTO_INCREMENT PRIMARY KEY,
    setting_key VARCHAR(120) UNIQUE,
    setting_value LONGTEXT
);

CREATE TABLE sources (
    id INT AUTO_INCREMENT PRIMARY KEY,
    source_name VARCHAR(120),
    site_name VARCHAR(120),
    grade VARCHAR(50),
    api_url TEXT,
    priority INT DEFAULT 1,
    status TINYINT DEFAULT 1,
    cache_minutes INT DEFAULT 30,
    timeout_seconds INT DEFAULT 10
);

CREATE TABLE logs (
    id INT AUTO_INCREMENT PRIMARY KEY,
    admin_user VARCHAR(100),
    action_text TEXT,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(120),
    email VARCHAR(150) UNIQUE,
    password VARCHAR(255),
    status TINYINT DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE favorites (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    paper_id VARCHAR(80),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE history (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT,
    paper_id VARCHAR(80),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE ad_settings (
    id INT AUTO_INCREMENT PRIMARY KEY,
    ad_key VARCHAR(120) UNIQUE,
    ad_value LONGTEXT
);

CREATE TABLE feature_flags (
    id INT AUTO_INCREMENT PRIMARY KEY,
    flag_key VARCHAR(120) UNIQUE,
    flag_value VARCHAR(20)
);

CREATE TABLE notifications (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255),
    message TEXT,
    target_grade VARCHAR(50),
    status TINYINT DEFAULT 1,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE visits (
    id INT AUTO_INCREMENT PRIMARY KEY,
    page VARCHAR(255),
    grade VARCHAR(50),
    ip VARCHAR(120),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);