54 lines
2.0 KiB
SQL
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;
|