37243-vm/db/schema.sql
2026-01-02 22:45:22 +00:00

47 lines
2.0 KiB
SQL

-- Adapted from user requirements for MySQL/MariaDB
CREATE TABLE IF NOT EXISTS `customers` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`first_name` VARCHAR(100),
`last_name` VARCHAR(100),
`email` VARCHAR(255) UNIQUE,
`phone` VARCHAR(20),
`phone_normalized` VARCHAR(15),
`service_address` TEXT,
`city` VARCHAR(100),
`state` VARCHAR(50),
`zip_code` VARCHAR(20),
`lifetime_value` DECIMAL(10, 2) DEFAULT 0,
`total_bookings` INT DEFAULT 0,
`total_quotes` INT DEFAULT 0,
`acquisition_source` ENUM('google_ads', 'google_lsa', 'organic', 'referral', 'facebook', 'yelp', 'direct', 'other'),
`acquisition_campaign` VARCHAR(255),
`first_contact_date` DATETIME DEFAULT CURRENT_TIMESTAMP,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `bookings` (
`id` INT AUTO_INCREMENT PRIMARY KEY,
`record_type` ENUM('appointment', 'quote_request') NOT NULL,
`customer_name` VARCHAR(255),
`customer_phone` VARCHAR(20),
`customer_email` VARCHAR(255),
`service_address` TEXT,
`service_category` ENUM('repair', 'maintenance', 'installation', 'inspection', 'emergency'),
`service_type` VARCHAR(100),
`system_type` ENUM('central_air', 'heat_pump', 'furnace', 'mini_split', 'boiler', 'other'),
`urgency_level` ENUM('routine', 'urgent', 'emergency'),
`issue_description` TEXT,
`appointment_date` DATE,
`appointment_time` VARCHAR(20),
`status` ENUM('new', 'confirmed', 'dispatched', 'in_progress', 'completed', 'cancelled', 'no_show') NOT NULL DEFAULT 'new',
`estimated_revenue` DECIMAL(10, 2),
`actual_revenue` DECIMAL(10, 2),
`booked_by` ENUM('ai_agent', 'human_agent', 'online', 'walk_in'),
`customer_id` INT,
`created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
`updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
FOREIGN KEY (`customer_id`) REFERENCES `customers`(`id`) ON DELETE SET NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;