-- SMS Chat MVP schema CREATE TABLE IF NOT EXISTS conversations ( id INT AUTO_INCREMENT PRIMARY KEY, contact_name VARCHAR(120) NOT NULL, phone VARCHAR(32) NOT NULL, channel VARCHAR(20) NOT NULL DEFAULT 'twilio', created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS messages ( id INT AUTO_INCREMENT PRIMARY KEY, conversation_id INT NOT NULL, direction VARCHAR(12) NOT NULL, body TEXT NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'queued', channel_message_id VARCHAR(120) DEFAULT NULL, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, INDEX idx_messages_convo (conversation_id), CONSTRAINT fk_messages_convo FOREIGN KEY (conversation_id) REFERENCES conversations(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS sms_queue ( id INT AUTO_INCREMENT PRIMARY KEY, message_id INT NOT NULL, provider VARCHAR(20) NOT NULL, payload TEXT NOT NULL, status VARCHAR(20) NOT NULL DEFAULT 'queued', attempts INT NOT NULL DEFAULT 0, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, updated_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, INDEX idx_queue_status (status), CONSTRAINT fk_queue_message FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS billing_events ( id INT AUTO_INCREMENT PRIMARY KEY, message_id INT NOT NULL, units INT NOT NULL DEFAULT 1, unit_price DECIMAL(10,4) NOT NULL DEFAULT 0.0000, total_cost DECIMAL(10,4) NOT NULL DEFAULT 0.0000, created_at DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, UNIQUE KEY uq_billing_message (message_id), CONSTRAINT fk_billing_message FOREIGN KEY (message_id) REFERENCES messages(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; CREATE TABLE IF NOT EXISTS settings ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(64) NOT NULL UNIQUE, value TEXT NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;