diff --git a/rsc/db/structure.sql b/rsc/db/structure.sql index 728cf088..53831ece 100644 --- a/rsc/db/structure.sql +++ b/rsc/db/structure.sql @@ -27,6 +27,12 @@ CREATE TABLE `ea_appointments` ( ENGINE = InnoDB DEFAULT CHARSET = utf8; +CREATE TABLE `ea_migrations` ( + `version` INT(11) NOT NULL +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + CREATE TABLE `ea_roles` ( `id` INT(11) AUTO_INCREMENT NOT NULL, `name` VARCHAR(256) DEFAULT NULL, diff --git a/src/application/config/migration.php b/src/application/config/migration.php index 7d25f4ec..89821f3b 100644 --- a/src/application/config/migration.php +++ b/src/application/config/migration.php @@ -11,6 +11,21 @@ $config['migration_enabled'] = TRUE; +/* +|-------------------------------------------------------------------------- +| Migrations table +|-------------------------------------------------------------------------- +| +| This is the name of the table that will store the current migrations state. +| When migrations runs it will store in a database table which migration +| level the system is at. It then compares the migration level in this +| table to the $config['migration_version'] if they are not the same it +| will migrate up. This must be set. +| +*/ +$config['migration_table'] = 'ea_migrations'; + + /* |-------------------------------------------------------------------------- | Migrations version diff --git a/src/assets/sql/data.sql b/src/assets/sql/data.sql index 452e6763..9905258e 100644 --- a/src/assets/sql/data.sql +++ b/src/assets/sql/data.sql @@ -16,3 +16,5 @@ VALUES ('customer_notifications', '1'), ('date_format', 'DMY'), ('require_captcha', '0'); + +INSERT INTO `ea_migrations` VALUES ('8'); diff --git a/src/assets/sql/structure.sql b/src/assets/sql/structure.sql index 511e24f4..77438004 100644 --- a/src/assets/sql/structure.sql +++ b/src/assets/sql/structure.sql @@ -1,147 +1,191 @@ -SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; CREATE TABLE IF NOT EXISTS `ea_appointments` ( - `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `book_datetime` DATETIME, - `start_datetime` DATETIME, - `end_datetime` DATETIME, - `notes` TEXT, - `hash` TEXT, - `is_unavailable` TINYINT(4) DEFAULT '0', - `id_users_provider` BIGINT(20) UNSIGNED, - `id_users_customer` BIGINT(20) UNSIGNED, - `id_services` BIGINT(20) UNSIGNED, - `id_google_calendar` TEXT, - PRIMARY KEY (`id`), - KEY `id_users_customer` (`id_users_customer`), - KEY `id_services` (`id_services`), - KEY `id_users_provider` (`id_users_provider`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `book_datetime` DATETIME, + `start_datetime` DATETIME, + `end_datetime` DATETIME, + `notes` TEXT, + `hash` TEXT, + `is_unavailable` TINYINT(4) DEFAULT '0', + `id_users_provider` BIGINT(20) UNSIGNED, + `id_users_customer` BIGINT(20) UNSIGNED, + `id_services` BIGINT(20) UNSIGNED, + `id_google_calendar` TEXT, + PRIMARY KEY (`id`), + KEY `id_users_customer` (`id_users_customer`), + KEY `id_services` (`id_services`), + KEY `id_users_provider` (`id_users_provider`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; +CREATE TABLE `ea_migrations` ( + `version` INT(11) NOT NULL +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; + CREATE TABLE IF NOT EXISTS `ea_roles` ( - `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` VARCHAR(256), - `slug` VARCHAR(256), - `is_admin` TINYINT(4), - `appointments` INT(4), - `customers` INT(4), - `services` INT(4), - `users` INT(4), - `system_settings` INT(4), - `user_settings` INT(11), - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` VARCHAR(256), + `slug` VARCHAR(256), + `is_admin` TINYINT(4), + `appointments` INT(4), + `customers` INT(4), + `services` INT(4), + `users` INT(4), + `system_settings` INT(4), + `user_settings` INT(11), + PRIMARY KEY (`id`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; CREATE TABLE IF NOT EXISTS `ea_secretaries_providers` ( - `id_users_secretary` BIGINT(20) UNSIGNED NOT NULL, - `id_users_provider` BIGINT(20) UNSIGNED NOT NULL, - PRIMARY KEY (`id_users_secretary`,`id_users_provider`), - KEY `fk_ea_secretaries_providers_1` (`id_users_secretary`), - KEY `fk_ea_secretaries_providers_2` (`id_users_provider`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id_users_secretary` BIGINT(20) UNSIGNED NOT NULL, + `id_users_provider` BIGINT(20) UNSIGNED NOT NULL, + PRIMARY KEY (`id_users_secretary`, `id_users_provider`), + KEY `fk_ea_secretaries_providers_1` (`id_users_secretary`), + KEY `fk_ea_secretaries_providers_2` (`id_users_provider`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; CREATE TABLE IF NOT EXISTS `ea_services` ( - `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` VARCHAR(256), - `duration` INT(11), - `price` DECIMAL(10,2), - `currency` VARCHAR(32), - `description` TEXT, - `availabilities_type` VARCHAR(32) DEFAULT 'flexible', - `attendants_number` INT(11) DEFAULT '1', - `id_service_categories` BIGINT(20) UNSIGNED, - PRIMARY KEY (`id`), - KEY `id_service_categories` (`id_service_categories`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` VARCHAR(256), + `duration` INT(11), + `price` DECIMAL(10, 2), + `currency` VARCHAR(32), + `description` TEXT, + `availabilities_type` VARCHAR(32) DEFAULT 'flexible', + `attendants_number` INT(11) DEFAULT '1', + `id_service_categories` BIGINT(20) UNSIGNED, + PRIMARY KEY (`id`), + KEY `id_service_categories` (`id_service_categories`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; CREATE TABLE IF NOT EXISTS `ea_services_providers` ( - `id_users` BIGINT(20) UNSIGNED NOT NULL, - `id_services` BIGINT(20) UNSIGNED NOT NULL, - PRIMARY KEY (`id_users`,`id_services`), - KEY `id_services` (`id_services`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id_users` BIGINT(20) UNSIGNED NOT NULL, + `id_services` BIGINT(20) UNSIGNED NOT NULL, + PRIMARY KEY (`id_users`, `id_services`), + KEY `id_services` (`id_services`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; CREATE TABLE IF NOT EXISTS `ea_service_categories` ( - `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` VARCHAR(256), - `description` TEXT, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` VARCHAR(256), + `description` TEXT, + PRIMARY KEY (`id`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; CREATE TABLE IF NOT EXISTS `ea_settings` ( - `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `name` VARCHAR(512), - `value` LONGTEXT, - PRIMARY KEY (`id`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `name` VARCHAR(512), + `value` LONGTEXT, + PRIMARY KEY (`id`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; CREATE TABLE IF NOT EXISTS `ea_users` ( - `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, - `first_name` VARCHAR(256), - `last_name` VARCHAR(512), - `email` VARCHAR(512), - `mobile_number` VARCHAR(128), - `phone_number` VARCHAR(128), - `address` VARCHAR(256), - `city` VARCHAR(256), - `state` VARCHAR(128), - `zip_code` VARCHAR(64), - `notes` TEXT, - `id_roles` BIGINT(20) UNSIGNED NOT NULL, - PRIMARY KEY (`id`), - KEY `id_roles` (`id_roles`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, + `first_name` VARCHAR(256), + `last_name` VARCHAR(512), + `email` VARCHAR(512), + `mobile_number` VARCHAR(128), + `phone_number` VARCHAR(128), + `address` VARCHAR(256), + `city` VARCHAR(256), + `state` VARCHAR(128), + `zip_code` VARCHAR(64), + `notes` TEXT, + `id_roles` BIGINT(20) UNSIGNED NOT NULL, + PRIMARY KEY (`id`), + KEY `id_roles` (`id_roles`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; CREATE TABLE IF NOT EXISTS `ea_user_settings` ( - `id_users` BIGINT(20) UNSIGNED NOT NULL, - `username` VARCHAR(256), - `password` VARCHAR(512), - `salt` VARCHAR(512), - `working_plan` TEXT, - `notifications` TINYINT(4) DEFAULT '0', - `google_sync` TINYINT(4) DEFAULT '0', - `google_token` TEXT, - `google_calendar` VARCHAR(128), - `sync_past_days` INT(11) DEFAULT '5', - `sync_future_days` INT(11) DEFAULT '5', - `calendar_view` VARCHAR(32) DEFAULT 'default', - PRIMARY KEY (`id_users`) -) ENGINE=InnoDB DEFAULT CHARSET=utf8; + `id_users` BIGINT(20) UNSIGNED NOT NULL, + `username` VARCHAR(256), + `password` VARCHAR(512), + `salt` VARCHAR(512), + `working_plan` TEXT, + `notifications` TINYINT(4) DEFAULT '0', + `google_sync` TINYINT(4) DEFAULT '0', + `google_token` TEXT, + `google_calendar` VARCHAR(128), + `sync_past_days` INT(11) DEFAULT '5', + `sync_future_days` INT(11) DEFAULT '5', + `calendar_view` VARCHAR(32) DEFAULT 'default', + PRIMARY KEY (`id_users`) +) + ENGINE = InnoDB + DEFAULT CHARSET = utf8; ALTER TABLE `ea_appointments` - ADD CONSTRAINT `ea_appointments_ibfk_2` FOREIGN KEY (`id_users_customer`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `ea_appointments_ibfk_3` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `ea_appointments_ibfk_4` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + ADD CONSTRAINT `ea_appointments_ibfk_2` FOREIGN KEY (`id_users_customer`) REFERENCES `ea_users` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE, + ADD CONSTRAINT `ea_appointments_ibfk_3` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE, + ADD CONSTRAINT `ea_appointments_ibfk_4` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE; ALTER TABLE `ea_secretaries_providers` - ADD CONSTRAINT `fk_ea_secretaries_providers_1` FOREIGN KEY (`id_users_secretary`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `fk_ea_secretaries_providers_2` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + ADD CONSTRAINT `fk_ea_secretaries_providers_1` FOREIGN KEY (`id_users_secretary`) REFERENCES `ea_users` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE, + ADD CONSTRAINT `fk_ea_secretaries_providers_2` FOREIGN KEY (`id_users_provider`) REFERENCES `ea_users` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE; ALTER TABLE `ea_services` - ADD CONSTRAINT `ea_services_ibfk_1` FOREIGN KEY (`id_service_categories`) REFERENCES `ea_service_categories` (`id`) ON DELETE SET NULL ON UPDATE CASCADE; + ADD CONSTRAINT `ea_services_ibfk_1` FOREIGN KEY (`id_service_categories`) REFERENCES `ea_service_categories` (`id`) + ON DELETE SET NULL + ON UPDATE CASCADE; ALTER TABLE `ea_services_providers` - ADD CONSTRAINT `ea_services_providers_ibfk_1` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE, - ADD CONSTRAINT `ea_services_providers_ibfk_2` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + ADD CONSTRAINT `ea_services_providers_ibfk_1` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE, + ADD CONSTRAINT `ea_services_providers_ibfk_2` FOREIGN KEY (`id_services`) REFERENCES `ea_services` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE; ALTER TABLE `ea_users` - ADD CONSTRAINT `ea_users_ibfk_1` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + ADD CONSTRAINT `ea_users_ibfk_1` FOREIGN KEY (`id_roles`) REFERENCES `ea_roles` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE; ALTER TABLE `ea_user_settings` - ADD CONSTRAINT `ea_user_settings_ibfk_1` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; + ADD CONSTRAINT `ea_user_settings_ibfk_1` FOREIGN KEY (`id_users`) REFERENCES `ea_users` (`id`) + ON DELETE CASCADE + ON UPDATE CASCADE;