feat(SQL): Adding subscriptions and resource counter tables

This commit is contained in:
Josepablo Cruz
2026-04-02 01:36:42 -06:00
parent 0cc0a1cc92
commit ebb8196be9
7 changed files with 19959 additions and 7302 deletions

View File

@@ -1,5 +1,5 @@
-- MySQL Script generated by MySQL Workbench
-- Wed 01 Apr 2026 05:30:16 PM CST
-- Thu 02 Apr 2026 01:32:42 AM CST
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
@@ -119,12 +119,12 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`role_permissions` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`role_id` INT UNSIGNED NOT NULL,
`permission_id` INT UNSIGNED NOT NULL,
`application_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `fk_role_permissions_roles1_idx` (`role_id` ASC) VISIBLE,
INDEX `fk_role_permissions_permissions1_idx` (`permission_id` ASC) VISIBLE,
UNIQUE INDEX `role_id_UNIQUE` (`role_id` ASC, `permission_id` ASC) VISIBLE,
INDEX `fk_role_permissions_applications1_idx` (`application_id` ASC) VISIBLE,
CONSTRAINT `fk_role_permissions_roles1`
FOREIGN KEY (`role_id`)
REFERENCES `u947463964_etaviaporte`.`roles` (`id`)
@@ -134,11 +134,6 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`role_permissions` (
FOREIGN KEY (`permission_id`)
REFERENCES `u947463964_etaviaporte`.`permissions` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_role_permissions_applications1`
FOREIGN KEY (`application_id`)
REFERENCES `u947463964_etaviaporte`.`applications` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
@@ -150,14 +145,13 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`user_roles` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`role_id` INT UNSIGNED NOT NULL,
`application_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`expires_at` DATETIME NULL,
PRIMARY KEY (`id`),
INDEX `fk_user_roles_users1_idx` (`user_id` ASC) VISIBLE,
INDEX `fk_user_roles_roles1_idx` (`role_id` ASC) VISIBLE,
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC, `role_id` ASC) VISIBLE,
INDEX `fk_user_roles_applications1_idx` (`application_id` ASC) VISIBLE,
CONSTRAINT `fk_user_roles_users1`
FOREIGN KEY (`user_id`)
REFERENCES `u947463964_etaviaporte`.`users` (`id`)
@@ -167,11 +161,6 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`user_roles` (
FOREIGN KEY (`role_id`)
REFERENCES `u947463964_etaviaporte`.`roles` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_user_roles_applications1`
FOREIGN KEY (`application_id`)
REFERENCES `u947463964_etaviaporte`.`applications` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
@@ -185,6 +174,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`verification_tokens` (
`token_hash` VARCHAR(255) NOT NULL COMMENT 'Verification token for email/phone/notification mechanisms to either validate or reset passwords',
`purpose` ENUM('email_verification', 'phone_verification', 'password_reset') NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`expires_at` DATETIME NOT NULL,
`used_at` DATETIME NULL,
PRIMARY KEY (`id`),
@@ -227,11 +217,13 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`companies` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`name` VARCHAR(512) NOT NULL,
`description` TEXT NULL,
`type` ENUM('NotSet', 'Shipper', 'Carrier') NOT NULL DEFAULT 'NotSet',
`privacy_enabled` TINYINT NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`disabled` TINYINT NOT NULL DEFAULT 0 COMMENT 'This field allows blocking publications based on business rules',
`disabled_at` DATETIME NULL,
`disabled_reason` VARCHAR(255) NULL COMMENT 'Log of the reason to disable this company and it s resources',
PRIMARY KEY (`id`))
ENGINE = InnoDB;
@@ -249,12 +241,12 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`locations` (
`zipcode` VARCHAR(10) NOT NULL,
`address_line1` VARCHAR(512) NOT NULL,
`address_line2` VARCHAR(512) NULL,
`lat` DECIMAL(10,8) NULL,
`lng` DECIMAL(10,8) NULL,
`lat` DECIMAL(11,8) NULL,
`lng` DECIMAL(11,8) NULL,
`name` VARCHAR(512) NULL,
`description` TEXT NULL,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `fk_locations_companies1_idx` (`company_id` ASC) VISIBLE,
CONSTRAINT `fk_locations_companies1`
@@ -277,7 +269,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`loads` (
`status` ENUM('Draft', 'Published', 'Completed', 'Closed', 'Cancelled') NOT NULL DEFAULT 'Draft',
`product` VARCHAR(100) NOT NULL COMMENT 'Maiz, Trigo, etc',
`sector` VARCHAR(100) NOT NULL COMMENT 'Automotriz, Agricola, etc',
`truck_type` VARCHAR(100) NOT NULL,
`vehicle_type` VARCHAR(100) NOT NULL,
`privacy_enabled` TINYINT NOT NULL DEFAULT 0,
`est_loading_date` DATE NULL,
`est_unloading_date` DATE NULL,
@@ -326,7 +318,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`vehicles` (
`load_id` INT UNSIGNED NULL,
`status` ENUM('Available', 'Busy') NOT NULL DEFAULT 'Available',
`VIN` VARCHAR(45) NOT NULL,
`truck_plate` VARCHAR(45) NOT NULL,
`vehicle_plate` VARCHAR(45) NOT NULL,
`trailer_plate_1` VARCHAR(45) NULL,
`trailer_plate_2` VARCHAR(45) NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
@@ -336,7 +328,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`vehicles` (
UNIQUE INDEX `driver_id_UNIQUE` (`driver_id` ASC) VISIBLE,
UNIQUE INDEX `load_id_UNIQUE` (`load_id` ASC) VISIBLE,
UNIQUE INDEX `VIN_UNIQUE` (`company_id` ASC, `VIN` ASC) VISIBLE,
UNIQUE INDEX `truck_plate_UNIQUE` (`company_id` ASC, `truck_plate` ASC) VISIBLE,
UNIQUE INDEX `vehicle_plate_UNIQUE` (`company_id` ASC, `vehicle_plate` ASC) VISIBLE,
CONSTRAINT `fk_vehicles_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
@@ -364,8 +356,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`load_shipments` (
`status` ENUM('Assigned', 'Loading', 'Transit', 'Unloading', 'Delivered') NOT NULL DEFAULT 'Assigned',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`last_lat` DECIMAL(10,8) NULL,
`last_lng` DECIMAL(10,8) NULL,
`last_lat` DECIMAL(11,8) NULL,
`last_lng` DECIMAL(11,8) NULL,
PRIMARY KEY (`id`),
INDEX `fk_load_shipment_loads1_idx` (`load_id` ASC) VISIBLE,
UNIQUE INDEX `load_id_UNIQUE` (`load_id` ASC) VISIBLE,
@@ -485,7 +477,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`meta_vehicle_types` (
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `meta_truck_typescol_UNIQUE` (`type` ASC) VISIBLE)
UNIQUE INDEX `meta_vehicle_typescol_UNIQUE` (`type` ASC) VISIBLE)
ENGINE = InnoDB;
@@ -524,6 +516,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_sectors` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`company_id` INT UNSIGNED NOT NULL,
`sector` VARCHAR(100) NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `sector_UNIQUE` (`company_id` ASC, `sector` ASC) VISIBLE,
CONSTRAINT `fk_company_sectors_companies1`
@@ -540,10 +534,12 @@ ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_vehicle_types` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`company_id` INT UNSIGNED NOT NULL,
`truck_type` VARCHAR(100) NOT NULL,
`vehicle_type` VARCHAR(100) NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `company_id_UNIQUE` (`company_id` ASC, `truck_type` ASC) VISIBLE,
CONSTRAINT `fk_company_truck_types_companies1`
UNIQUE INDEX `company_id_UNIQUE` (`company_id` ASC, `vehicle_type` ASC) VISIBLE,
CONSTRAINT `fk_company_vehicle_types_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
ON DELETE CASCADE
@@ -552,22 +548,24 @@ ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`location_categories`
-- Table `u947463964_etaviaporte`.`company_location_sectors`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`location_categories` (
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_location_sectors` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`location_id` INT UNSIGNED NOT NULL,
`category_id` INT UNSIGNED NOT NULL,
`sector_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `location_id_UNIQUE` (`location_id` ASC, `category_id` ASC) VISIBLE,
INDEX `fk_location_categories_company_sectors1_idx` (`category_id` ASC) VISIBLE,
CONSTRAINT `fk_location_categories_locations1`
UNIQUE INDEX `location_id_UNIQUE` (`location_id` ASC, `sector_id` ASC) VISIBLE,
INDEX `fk_location_sectors_company_sectors1_idx` (`sector_id` ASC) VISIBLE,
CONSTRAINT `fk_location_sectors_locations1`
FOREIGN KEY (`location_id`)
REFERENCES `u947463964_etaviaporte`.`locations` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_location_categories_company_sectors1`
FOREIGN KEY (`category_id`)
CONSTRAINT `fk_location_sectors_company_sectors1`
FOREIGN KEY (`sector_id`)
REFERENCES `u947463964_etaviaporte`.`company_sectors` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
@@ -581,15 +579,17 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`vehicle_types` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`vehicle_id` INT UNSIGNED NOT NULL,
`type_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `vehicle_id_UNIQUE` (`vehicle_id` ASC, `type_id` ASC) VISIBLE,
INDEX `fk_vehicle_types_company_truck_types1_idx` (`type_id` ASC) VISIBLE,
INDEX `fk_vehicle_types_company_vehicle_types1_idx` (`type_id` ASC) VISIBLE,
CONSTRAINT `fk_vehicle_types_vehicles1`
FOREIGN KEY (`vehicle_id`)
REFERENCES `u947463964_etaviaporte`.`vehicles` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_vehicle_types_company_truck_types1`
CONSTRAINT `fk_vehicle_types_company_vehicle_types1`
FOREIGN KEY (`type_id`)
REFERENCES `u947463964_etaviaporte`.`company_vehicle_types` (`id`)
ON DELETE CASCADE
@@ -604,6 +604,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`user_locations` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`location_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC, `location_id` ASC) VISIBLE,
INDEX `fk_user_locations_locations1_idx` (`location_id` ASC) VISIBLE,
@@ -630,7 +632,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`load_templates` (
`name` VARCHAR(100) NOT NULL COMMENT 'User friendly name to identify the template',
`product` VARCHAR(100) NULL,
`sector` VARCHAR(100) NULL,
`truck_type` VARCHAR(100) NULL,
`vehicle_type` VARCHAR(100) NULL,
`weight` INT UNSIGNED NULL,
`notes` TEXT NULL,
`estimated_cost` INT UNSIGNED NULL,
@@ -674,6 +676,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`user_applications` (
`user_id` INT UNSIGNED NOT NULL,
`application_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC, `application_id` ASC) VISIBLE,
INDEX `fk_user_applications_applications1_idx` (`application_id` ASC) VISIBLE,
@@ -698,6 +701,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_users` (
`user_id` INT UNSIGNED NOT NULL,
`company_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC) VISIBLE,
INDEX `fk_company_users_companies1_idx` (`company_id` ASC) VISIBLE,
@@ -742,6 +746,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`privacy_group_companies` (
`group_id` INT UNSIGNED NOT NULL,
`allowed_company_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `group_id_UNIQUE` (`group_id` ASC, `allowed_company_id` ASC) VISIBLE,
INDEX `fk_privacy_companies_companies1_idx` (`company_id` ASC) VISIBLE,
@@ -771,6 +776,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`loads_alert_emails` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`load_id` INT UNSIGNED NOT NULL,
`email` VARCHAR(512) NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `fk_loads_alert_emails_loads1_idx` (`load_id` ASC) VISIBLE,
UNIQUE INDEX `load_id_UNIQUE` (`load_id` ASC, `email` ASC) VISIBLE,
@@ -789,6 +796,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`warehouse_alert_emails` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`warehouse_id` INT UNSIGNED NOT NULL,
`email` VARCHAR(512) NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `warehouse_id_UNIQUE` (`warehouse_id` ASC, `email` ASC) VISIBLE,
INDEX `fk_warehouse_alert_emails_locations1_idx` (`warehouse_id` ASC) VISIBLE,
@@ -807,7 +816,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_status` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`company_id` INT UNSIGNED NOT NULL,
`status` ENUM('Registered', 'InReview', 'Enabled', 'Disabled') NOT NULL DEFAULT 'Registered',
`notes` TEXT NOT NULL,
`notes` TEXT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
@@ -830,7 +839,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_documents` (
`document_id` VARCHAR(255) NOT NULL,
`name` VARCHAR(512) NOT NULL,
`status` ENUM('New', 'InReview', 'Approved', 'Rejected') NOT NULL DEFAULT 'New',
`status_notes` TEXT NOT NULL COMMENT 'Add metadata like user who reviewed and reason behind the status assigned',
`status_notes` TEXT NULL COMMENT 'Add metadata like user who reviewed and reason behind the status assigned',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
@@ -850,48 +859,57 @@ ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`apikeys` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`application_id` INT UNSIGNED NOT NULL,
`user_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(512) NOT NULL,
`description` TEXT NULL,
`key_hash` VARCHAR(255) NOT NULL,
`active` TINYINT NOT NULL DEFAULT 1,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`expires_at` DATETIME NULL,
`expires_at` DATETIME NULL COMMENT 'When detected that already expired then set this to false',
PRIMARY KEY (`id`),
UNIQUE INDEX `key_hash_UNIQUE` (`key_hash` ASC) VISIBLE,
INDEX `fk_apikeys_users1_idx` (`user_id` ASC) VISIBLE,
CONSTRAINT `fk_apikeys_applications1`
FOREIGN KEY (`application_id`)
REFERENCES `u947463964_etaviaporte`.`applications` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_apikeys_users1`
FOREIGN KEY (`user_id`)
REFERENCES `u947463964_etaviaporte`.`users` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`apikey_permissions`
-- Table `u947463964_etaviaporte`.`user_permissions`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`apikey_permissions` (
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`user_permissions` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`application_id` INT UNSIGNED NOT NULL,
`user_id` INT UNSIGNED NOT NULL,
`permission_id` INT UNSIGNED NOT NULL,
`apikey_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`expires_at` DATETIME NULL,
PRIMARY KEY (`id`),
INDEX `fk_apikey_permissions_permissions1_idx` (`permission_id` ASC) VISIBLE,
INDEX `fk_apikey_permissions_apikeys1_idx` (`apikey_id` ASC) VISIBLE,
UNIQUE INDEX `apikey_id_UNIQUE` (`apikey_id` ASC, `permission_id` ASC) VISIBLE,
CONSTRAINT `fk_apikey_permissions_applications1`
INDEX `fk_user_permissions_permissions1_idx` (`permission_id` ASC) VISIBLE,
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC, `permission_id` ASC) VISIBLE,
CONSTRAINT `fk_user_permissions_applications1`
FOREIGN KEY (`application_id`)
REFERENCES `u947463964_etaviaporte`.`applications` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_apikey_permissions_permissions1`
CONSTRAINT `fk_user_permissions_permissions1`
FOREIGN KEY (`permission_id`)
REFERENCES `u947463964_etaviaporte`.`permissions` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_apikey_permissions_apikeys1`
FOREIGN KEY (`apikey_id`)
REFERENCES `u947463964_etaviaporte`.`apikeys` (`id`)
CONSTRAINT `fk_user_permissions_users1`
FOREIGN KEY (`user_id`)
REFERENCES `u947463964_etaviaporte`.`users` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
@@ -907,7 +925,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`vehicle_documents` (
`document_id` VARCHAR(255) NOT NULL,
`name` VARCHAR(512) NOT NULL,
`status` ENUM('New', 'InReview', 'Approved', 'Rejected') NOT NULL DEFAULT 'New',
`status_notes` TEXT NOT NULL,
`status_notes` TEXT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
@@ -927,6 +945,119 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`vehicle_documents` (
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`subscription_plans`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`subscription_plans` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`application_id` INT UNSIGNED NOT NULL,
`provider` VARCHAR(45) NOT NULL,
`provider_plan_id` VARCHAR(255) NOT NULL,
`name` VARCHAR(100) NOT NULL,
`description` TEXT NULL,
`amount` DECIMAL(19,4) NOT NULL DEFAULT 0.0000,
`currency` VARCHAR(45) NULL DEFAULT 'MXN',
`limit_users` INT NOT NULL DEFAULT 2,
`limit_loads` INT NOT NULL DEFAULT 4,
`limit_shipments` INT NOT NULL DEFAULT 4,
`limit_privacy_allowed` TINYINT UNSIGNED NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `internal_name_UNIQUE` (`application_id` ASC, `name` ASC) VISIBLE,
INDEX `fk_subscription_plans_applications1_idx` (`application_id` ASC) VISIBLE,
UNIQUE INDEX `provider_UNIQUE` (`provider` ASC, `provider_plan_id` ASC) VISIBLE,
CONSTRAINT `fk_subscription_plans_applications1`
FOREIGN KEY (`application_id`)
REFERENCES `u947463964_etaviaporte`.`applications` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`company_subscriptions`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_subscriptions` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`company_id` INT UNSIGNED NOT NULL,
`plan_id` INT UNSIGNED NOT NULL,
`provider_subscription_id` VARCHAR(255) NOT NULL,
`status` ENUM('Pending', 'Active', 'PastDue', 'Unpaid', 'Cancelled', 'Paused') NOT NULL DEFAULT 'Unpaid' COMMENT 'PastDue means retry in X days, Unpaid means all retries failed',
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
`start_date` DATE NULL,
`current_period_start` DATE NULL,
`current_period_end` DATE NULL COMMENT 'The date the next charge will happen',
`cancelled_at` DATE NULL,
`cancelled_at_period_end` TINYINT NULL DEFAULT 0,
PRIMARY KEY (`id`),
INDEX `fk_company_limits_companies1_idx` (`company_id` ASC) VISIBLE,
INDEX `fk_company_subscriptions_subscription_plans1_idx` (`plan_id` ASC) VISIBLE,
UNIQUE INDEX `company_id_UNIQUE` (`company_id` ASC) VISIBLE,
CONSTRAINT `fk_company_limits_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION,
CONSTRAINT `fk_company_subscriptions_subscription_plans1`
FOREIGN KEY (`plan_id`)
REFERENCES `u947463964_etaviaporte`.`subscription_plans` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`payment_methods`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`payment_methods` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`company_id` INT UNSIGNED NOT NULL COMMENT 'When company deleted, the credit cards must be deleted first!',
`provider` VARCHAR(45) NOT NULL,
`provider_payment_id` VARCHAR(255) NOT NULL,
`last4` VARCHAR(4) NOT NULL COMMENT 'Last 4 digits of credit card',
`brand` VARCHAR(45) NOT NULL COMMENT 'MasterCard, Visa, etc',
`name` VARCHAR(100) NOT NULL COMMENT 'Human readable name for the credit card. If not given by user can be set to brand + last4 as naming convention.',
`is_primary` TINYINT NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `fk_payment_methods_companies1_idx` (`company_id` ASC) VISIBLE,
UNIQUE INDEX `provider_UNIQUE` (`provider` ASC, `provider_payment_id` ASC) VISIBLE,
CONSTRAINT `fk_payment_methods_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`company_limits`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_limits` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`company_id` INT UNSIGNED NOT NULL,
`available_users` INT UNSIGNED NOT NULL DEFAULT 2,
`available_shipments` INT UNSIGNED NOT NULL DEFAULT 4,
`available_loads` INT UNSIGNED NOT NULL DEFAULT 4,
`used_users` INT UNSIGNED NOT NULL DEFAULT 0,
`used_shipments` INT UNSIGNED NOT NULL DEFAULT 0,
`used_loads` INT UNSIGNED NOT NULL DEFAULT 0,
`privacy_allowed` TINYINT NOT NULL DEFAULT 0,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `company_id_UNIQUE` (`company_id` ASC) VISIBLE,
CONSTRAINT `fk_company_limits_companies2`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;

View File

@@ -34,14 +34,14 @@ INSERT INTO `permissions` (`application_id`,`name`, `description`) VALUES (3,'cl
INSERT INTO `permissions` (`application_id`,`name`, `description`) VALUES (4,'warehouse', '(ETAObserverWarehouse): Compatibility with Legacy while refactor in progress');
-- Role-Permissions link for ETAConsole application (1)
INSERT INTO `role_permissions` (`application_id`,`role_id`, `permission_id`) VALUES (1,1,1);
INSERT INTO `role_permissions` (`application_id`,`role_id`, `permission_id`) VALUES (1,2,2);
INSERT INTO `role_permissions` (`application_id`,`role_id`, `permission_id`) VALUES (1,3,3);
INSERT INTO `role_permissions` (`application_id`,`role_id`, `permission_id`) VALUES (1,4,4);
INSERT INTO `role_permissions` (`application_id`,`role_id`, `permission_id`) VALUES (1,5,5);
INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (1,1);
INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (2,2);
INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (3,3);
INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (4,4);
INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (5,5);
-- Role-Permissions link for ETADriver application (2)
INSERT INTO `role_permissions` (`application_id`,`role_id`, `permission_id`) VALUES (2,6,6);
INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (6,6);
-- Role-Permissions link for ETAObserverClient application (3)
INSERT INTO `role_permissions` (`application_id`,`role_id`, `permission_id`) VALUES (3,7,7);
INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (7,7);
-- Role-Permissions link for ETAObserverWarehouse application (4)
INSERT INTO `role_permissions` (`application_id`,`role_id`, `permission_id`) VALUES (4,8,8);
INSERT INTO `role_permissions` (`role_id`, `permission_id`) VALUES (8,8);