feat(SQL): Adding document tables for vehicles and company and apikeys table

This commit is contained in:
Josepablo Cruz
2026-04-01 17:39:53 -06:00
parent b73cdaa5ce
commit 0cc0a1cc92
5 changed files with 6386 additions and 3630 deletions

View File

@@ -1,5 +1,5 @@
-- MySQL Script generated by MySQL Workbench
-- Wed 01 Apr 2026 02:54:57 PM CST
-- Wed 01 Apr 2026 05:30:16 PM CST
-- Model: New Model Version: 1.0
-- MySQL Workbench Forward Engineering
@@ -99,6 +99,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`permissions` (
`application_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(512) NOT NULL,
`description` 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`),
UNIQUE INDEX `name_UNIQUE` (`application_id` ASC, `name` ASC) VISIBLE,
INDEX `fk_permissions_applications1_idx` (`application_id` ASC) VISIBLE,
@@ -229,7 +231,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`companies` (
`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` VARCHAR(45) NULL,
`disabled_at` DATETIME NULL,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
@@ -247,8 +249,8 @@ 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` VARCHAR(128) NULL,
`lng` VARCHAR(128) NULL,
`lat` DECIMAL(10,8) NULL,
`lng` DECIMAL(10,8) NULL,
`name` VARCHAR(512) NULL,
`description` TEXT NULL,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
@@ -272,7 +274,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`loads` (
`created_by` INT UNSIGNED NOT NULL,
`origin_id` INT UNSIGNED NULL,
`destination_id` INT UNSIGNED NULL,
`status` ENUM('Draft', 'Published', 'Completed', 'Closed', 'Cancel') NOT NULL DEFAULT 'Draft',
`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,
@@ -322,6 +324,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`vehicles` (
`company_id` INT UNSIGNED NOT NULL,
`driver_id` INT UNSIGNED NULL,
`load_id` INT UNSIGNED NULL,
`status` ENUM('Available', 'Busy') NOT NULL DEFAULT 'Available',
`VIN` VARCHAR(45) NOT NULL,
`truck_plate` VARCHAR(45) NOT NULL,
`trailer_plate_1` VARCHAR(45) NULL,
@@ -332,6 +335,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`vehicles` (
INDEX `fk_vehicles_companies1_idx` (`company_id` ASC) VISIBLE,
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,
CONSTRAINT `fk_vehicles_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
@@ -359,8 +364,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` VARCHAR(128) NULL,
`last_lng` VARCHAR(128) NULL,
`last_lat` DECIMAL(10,8) NULL,
`last_lng` DECIMAL(10,8) NULL,
PRIMARY KEY (`id`),
INDEX `fk_load_shipment_loads1_idx` (`load_id` ASC) VISIBLE,
UNIQUE INDEX `load_id_UNIQUE` (`load_id` ASC) VISIBLE,
@@ -405,22 +410,22 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`shipment_proposals` (
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
INDEX `fk_shipment_proposals_loads1_idx` (`load_id` ASC) VISIBLE,
INDEX `fk_shipment_proposals_user_roles1_idx` (`created_by` ASC) VISIBLE,
INDEX `fk_shipment_proposals_vehicles1_idx` (`vehicle_id` ASC) VISIBLE,
INDEX `fk_shipment_proposals_users1_idx` (`created_by` ASC) VISIBLE,
CONSTRAINT `fk_shipment_proposals_loads1`
FOREIGN KEY (`load_id`)
REFERENCES `u947463964_etaviaporte`.`loads` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_shipment_proposals_user_roles1`
FOREIGN KEY (`created_by`)
REFERENCES `u947463964_etaviaporte`.`user_roles` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_shipment_proposals_vehicles1`
FOREIGN KEY (`vehicle_id`)
REFERENCES `u947463964_etaviaporte`.`vehicles` (`id`)
ON DELETE SET NULL
ON UPDATE NO ACTION,
CONSTRAINT `fk_shipment_proposals_users1`
FOREIGN KEY (`created_by`)
REFERENCES `u947463964_etaviaporte`.`users` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
@@ -438,8 +443,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`shipment_agreements` (
PRIMARY KEY (`id`),
INDEX `fk_shipment_proposal_agreement_loads1_idx` (`load_id` ASC) VISIBLE,
INDEX `fk_shipment_proposal_agreement_shipment_proposals1_idx` (`proposal_id` ASC) VISIBLE,
INDEX `fk_shipment_proposal_agreement_user_roles1_idx` (`accepted_by` ASC) VISIBLE,
UNIQUE INDEX `load_id_UNIQUE` (`load_id` ASC) VISIBLE,
INDEX `fk_shipment_agreements_users1_idx` (`accepted_by` ASC) VISIBLE,
CONSTRAINT `fk_shipment_proposal_agreement_loads1`
FOREIGN KEY (`load_id`)
REFERENCES `u947463964_etaviaporte`.`loads` (`id`)
@@ -450,9 +455,9 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`shipment_agreements` (
REFERENCES `u947463964_etaviaporte`.`shipment_proposals` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_shipment_proposal_agreement_user_roles1`
CONSTRAINT `fk_shipment_agreements_users1`
FOREIGN KEY (`accepted_by`)
REFERENCES `u947463964_etaviaporte`.`user_roles` (`id`)
REFERENCES `u947463964_etaviaporte`.`users` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
@@ -464,17 +469,21 @@ ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`meta_sectors` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`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` (`sector` ASC) VISIBLE)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`meta_truck_types`
-- Table `u947463964_etaviaporte`.`meta_vehicle_types`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`meta_truck_types` (
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`meta_vehicle_types` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`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 `meta_truck_typescol_UNIQUE` (`type` ASC) VISIBLE)
ENGINE = InnoDB;
@@ -486,6 +495,8 @@ ENGINE = InnoDB;
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`meta_products` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`product` 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 `product_UNIQUE` (`product` ASC) VISIBLE)
ENGINE = InnoDB;
@@ -500,6 +511,8 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`meta_cities` (
`state` VARCHAR(100) NOT NULL,
`country` VARCHAR(100) NOT NULL,
`zipcode` VARCHAR(100) NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`))
ENGINE = InnoDB;
@@ -522,9 +535,9 @@ ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`company_truck_types`
-- Table `u947463964_etaviaporte`.`company_vehicle_types`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_truck_types` (
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,
@@ -562,9 +575,9 @@ ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`truck_types`
-- Table `u947463964_etaviaporte`.`vehicle_types`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`truck_types` (
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,
@@ -578,7 +591,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`truck_types` (
ON UPDATE NO ACTION,
CONSTRAINT `fk_vehicle_types_company_truck_types1`
FOREIGN KEY (`type_id`)
REFERENCES `u947463964_etaviaporte`.`company_truck_types` (`id`)
REFERENCES `u947463964_etaviaporte`.`company_vehicle_types` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
@@ -633,22 +646,22 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`load_templates` (
CONSTRAINT `fk_load_templates_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
ON DELETE NO ACTION
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_load_templates_locations1`
FOREIGN KEY (`origin_id`)
REFERENCES `u947463964_etaviaporte`.`locations` (`id`)
ON DELETE NO ACTION
ON DELETE SET NULL
ON UPDATE NO ACTION,
CONSTRAINT `fk_load_templates_locations2`
FOREIGN KEY (`destination_id`)
REFERENCES `u947463964_etaviaporte`.`locations` (`id`)
ON DELETE NO ACTION
ON DELETE SET NULL
ON UPDATE NO ACTION,
CONSTRAINT `fk_load_templates_users1`
FOREIGN KEY (`created_by`)
REFERENCES `u947463964_etaviaporte`.`users` (`id`)
ON DELETE NO ACTION
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
@@ -684,7 +697,7 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_users` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`user_id` INT UNSIGNED NOT NULL,
`company_id` INT UNSIGNED NOT NULL,
`created_at` DATETIME NOT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE INDEX `user_id_UNIQUE` (`user_id` ASC) VISIBLE,
INDEX `fk_company_users_companies1_idx` (`company_id` ASC) VISIBLE,
@@ -787,6 +800,133 @@ CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`warehouse_alert_emails` (
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`company_status`
-- -----------------------------------------------------
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,
`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_company_status_companies1_idx` (`company_id` ASC) VISIBLE,
UNIQUE INDEX `company_id_UNIQUE` (`company_id` ASC) VISIBLE,
CONSTRAINT `fk_company_status_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`company_documents`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`company_documents` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`company_id` INT UNSIGNED NOT NULL,
`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',
`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_company_documents_companies1_idx` (`company_id` ASC) VISIBLE,
UNIQUE INDEX `name_UNIQUE` (`company_id` ASC, `name` ASC) VISIBLE,
CONSTRAINT `fk_company_documents_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`apikeys`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`apikeys` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`application_id` INT UNSIGNED NOT NULL,
`name` VARCHAR(512) NOT NULL,
`description` TEXT NULL,
`key_hash` VARCHAR(255) 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`),
UNIQUE INDEX `key_hash_UNIQUE` (`key_hash` ASC) VISIBLE,
CONSTRAINT `fk_apikeys_applications1`
FOREIGN KEY (`application_id`)
REFERENCES `u947463964_etaviaporte`.`applications` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`apikey_permissions`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`apikey_permissions` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`application_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,
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`
FOREIGN KEY (`application_id`)
REFERENCES `u947463964_etaviaporte`.`applications` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_apikey_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`)
ON DELETE CASCADE
ON UPDATE NO ACTION)
ENGINE = InnoDB;
-- -----------------------------------------------------
-- Table `u947463964_etaviaporte`.`vehicle_documents`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `u947463964_etaviaporte`.`vehicle_documents` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`company_id` INT UNSIGNED NOT NULL,
`vehicle_id` INT UNSIGNED NOT NULL,
`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,
`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_vehicle_documents_companies1_idx` (`company_id` ASC) VISIBLE,
INDEX `fk_vehicle_documents_vehicles1_idx` (`vehicle_id` ASC) VISIBLE,
UNIQUE INDEX `name_UNIQUE` (`company_id` ASC, `name` ASC) VISIBLE,
CONSTRAINT `fk_vehicle_documents_companies1`
FOREIGN KEY (`company_id`)
REFERENCES `u947463964_etaviaporte`.`companies` (`id`)
ON DELETE CASCADE
ON UPDATE NO ACTION,
CONSTRAINT `fk_vehicle_documents_vehicles1`
FOREIGN KEY (`vehicle_id`)
REFERENCES `u947463964_etaviaporte`.`vehicles` (`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;