feat: add install SQL with 8 booking tables

This commit is contained in:
2026-06-27 20:20:25 +00:00
parent 2aa7b638e9
commit a8fe17bd4d
@@ -0,0 +1,138 @@
-- Copyright (C) 2026 Moko Consulting <hello@mokoconsulting.tech>
-- SPDX-License-Identifier: GPL-3.0-or-later
-- Authored-by: Moko Consulting
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_locations` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`address` VARCHAR(500) NOT NULL DEFAULT '',
`phone` VARCHAR(50) NOT NULL DEFAULT '',
`email` VARCHAR(255) NOT NULL DEFAULT '',
`timezone` VARCHAR(50) NOT NULL DEFAULT 'America/New_York',
`operating_hours` JSON DEFAULT NULL,
`published` TINYINT NOT NULL DEFAULT 1,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_staff` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`contact_id` INT DEFAULT NULL,
`name` VARCHAR(255) NOT NULL,
`email` VARCHAR(255) NOT NULL DEFAULT '',
`phone` VARCHAR(50) NOT NULL DEFAULT '',
`title` VARCHAR(255) NOT NULL DEFAULT '',
`bio` TEXT,
`photo` VARCHAR(500) NOT NULL DEFAULT '',
`color` VARCHAR(7) NOT NULL DEFAULT '#3788d8',
`location_id` INT UNSIGNED DEFAULT NULL,
`published` TINYINT NOT NULL DEFAULT 1,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_contact` (`contact_id`),
KEY `idx_location` (`location_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_services` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`description` TEXT,
`category` VARCHAR(100) NOT NULL DEFAULT '',
`duration_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 60,
`buffer_before` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
`buffer_after` SMALLINT UNSIGNED NOT NULL DEFAULT 0,
`price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`deposit_required` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`max_participants` SMALLINT UNSIGNED NOT NULL DEFAULT 1,
`color` VARCHAR(7) NOT NULL DEFAULT '#3788d8',
`published` TINYINT NOT NULL DEFAULT 1,
`ordering` INT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_schedules` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`staff_id` INT UNSIGNED NOT NULL,
`day_of_week` TINYINT UNSIGNED NOT NULL,
`start_time` TIME NOT NULL,
`end_time` TIME NOT NULL,
`location_id` INT UNSIGNED DEFAULT NULL,
`effective_from` DATE DEFAULT NULL,
`effective_to` DATE DEFAULT NULL,
`published` TINYINT NOT NULL DEFAULT 1,
PRIMARY KEY (`id`),
KEY `idx_staff` (`staff_id`),
KEY `idx_day` (`day_of_week`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_availability_overrides` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`staff_id` INT UNSIGNED NOT NULL,
`override_date` DATE NOT NULL,
`available` TINYINT NOT NULL DEFAULT 0,
`start_time` TIME DEFAULT NULL,
`end_time` TIME DEFAULT NULL,
`reason` VARCHAR(255) NOT NULL DEFAULT '',
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_staff` (`staff_id`),
KEY `idx_date` (`override_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_bookings` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`booking_ref` VARCHAR(20) NOT NULL,
`client_contact_id` INT DEFAULT NULL,
`client_name` VARCHAR(255) NOT NULL,
`client_email` VARCHAR(255) NOT NULL DEFAULT '',
`client_phone` VARCHAR(50) NOT NULL DEFAULT '',
`staff_id` INT UNSIGNED DEFAULT NULL,
`location_id` INT UNSIGNED DEFAULT NULL,
`status` ENUM('pending','confirmed','in_progress','completed','cancelled','no_show') NOT NULL DEFAULT 'pending',
`booking_date` DATE NOT NULL,
`start_time` TIME NOT NULL,
`end_time` TIME NOT NULL,
`total_price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`deposit_paid` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`payment_status` ENUM('pending','partial','paid','refunded') NOT NULL DEFAULT 'pending',
`source` ENUM('admin','online','phone','walkin') NOT NULL DEFAULT 'admin',
`notes` TEXT,
`reminder_sent` TINYINT NOT NULL DEFAULT 0,
`created` DATETIME NOT NULL,
`created_by` INT NOT NULL DEFAULT 0,
PRIMARY KEY (`id`),
UNIQUE KEY `idx_ref` (`booking_ref`),
KEY `idx_client` (`client_contact_id`),
KEY `idx_staff` (`staff_id`),
KEY `idx_status` (`status`),
KEY `idx_date` (`booking_date`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_booking_services` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`booking_id` INT UNSIGNED NOT NULL,
`service_id` INT UNSIGNED NOT NULL,
`price` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`duration_minutes` SMALLINT UNSIGNED NOT NULL DEFAULT 60,
PRIMARY KEY (`id`),
KEY `idx_booking` (`booking_id`),
KEY `idx_service` (`service_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE IF NOT EXISTS `#__mokosuitebooking_waitlist` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`client_contact_id` INT DEFAULT NULL,
`client_name` VARCHAR(255) NOT NULL,
`client_email` VARCHAR(255) NOT NULL DEFAULT '',
`service_id` INT UNSIGNED DEFAULT NULL,
`staff_id` INT UNSIGNED DEFAULT NULL,
`preferred_date` DATE DEFAULT NULL,
`status` ENUM('waiting','notified','booked','expired','cancelled') NOT NULL DEFAULT 'waiting',
`notes` TEXT,
`created` DATETIME NOT NULL,
PRIMARY KEY (`id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;