CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    email VARCHAR(255) NOT NULL UNIQUE,
    auth_token VARCHAR(255) NOT NULL UNIQUE,
    token_created_at DATETIME NOT NULL,
    token_expires_at DATETIME NOT NULL,
    is_board_member BOOLEAN NOT NULL DEFAULT FALSE,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

CREATE TABLE questionnaire_responses (
    id INT AUTO_INCREMENT PRIMARY KEY,
    user_id INT NOT NULL UNIQUE,
    role VARCHAR(255) NOT NULL,
    role_function TEXT NOT NULL,
    tasks TEXT NOT NULL,
    devices JSON NOT NULL,
    pc_os JSON,
    tablet_os JSON,
    phone_os JSON,
    work_location ENUM(
        '100% Office',
        'Mostly Office',
        'Balanced',
        'Mostly Remote',
        '100% Remote'
    ) NOT NULL,
    email_access ENUM(
        'Outlook',
        'Webmail',
        'Mobile',
        'Outlook and Mobile',
        'Webmail and Mobile',
        'All 3 methods',
        'Outlook or Webmail only'
    ) NOT NULL,
    shared_mailboxes BOOLEAN NOT NULL,
    shared_mailbox_details TEXT,
    collaboration_tools JSON,
    email_issues JSON,
    weekly_meetings ENUM(
        '0',
        '1-2',
        '3-5',
        '6-10',
        'More than 10'
    ) NOT NULL,
    file_storage JSON NOT NULL,
    shared_files BOOLEAN NOT NULL,
    critical_files JSON,
    mfa BOOLEAN NOT NULL,
    mfa_types JSON,
    mfa_apps JSON,
    personal_device BOOLEAN NOT NULL,
    personal_device_types JSON,
    security_concerns JSON,
    it_challenges JSON,
    improvements TEXT,
    operations_improvement TEXT,
    -- Board member specific fields (nullable if user not board member)
    board_doc_access BOOLEAN,
    access_issues_details TEXT,
    board_collab_effectiveness ENUM(
        'Very Effective',
        'Effective',
        'Neutral',
        'Ineffective',
        'Very Ineffective'
    ),
    meeting_issues JSON,
    board_suggestions TEXT,
    created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
    updated_at DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
    FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE
);

