39233-vm/db/migrations/001_sms_chat.sql
2026-03-18 06:44:17 +00:00

54 lines
2.0 KiB
SQL

-- 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;