CREATE DATABASE IF NOT EXISTS `codexcol_firmas_pdf` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci */;
USE `codexcol_firmas_pdf`;

-- Dumping structure for table codexcol_firmas_pdf.actividad_del_usuario
CREATE TABLE IF NOT EXISTS `actividad_del_usuario` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_de_usuario` int(11) NOT NULL,
  `accion_de_usuario` varchar(50) NOT NULL,
  `descripcion` text DEFAULT NULL,
  `direccion_ip` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `creado_el` timestamp NULL DEFAULT current_timestamp(),
  PRIMARY KEY (`id`),
  KEY `idx_user_id` (`id_de_usuario`),
  KEY `idx_action` (`accion_de_usuario`),
  KEY `idx_created_at` (`creado_el`),
  CONSTRAINT `actividad_del_usuario_ibfk_1` FOREIGN KEY (`id_de_usuario`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=37 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- Dumping structure for table codexcol_firmas_pdf.firmas
CREATE TABLE IF NOT EXISTS `firmas` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_de_usuario` int(11) NOT NULL,
  `id_de_documento` varchar(100) NOT NULL,
  `token` varchar(255) NOT NULL,
  `nombre_del_firmante` varchar(255) NOT NULL, 
  `firmado_el` datetime NOT NULL,
  `nombre_de_archivo` varchar(255) NOT NULL,
  `nombre_original_de_archivo` varchar(255) DEFAULT NULL,
  `tamano_de_archivo` int(11) DEFAULT NULL,
  `estado_de_documento` enum('valido','revocado','expirado') DEFAULT 'valido',
  `tipo_de_firma` varchar(40) NOT NULL DEFAULT 'electronica_pdf',
  `direccion_ip` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `hash_documento_original` char(64) DEFAULT NULL,
  `hash_documento_firmado` char(64) DEFAULT NULL,
  `evidencia_firma` longtext DEFAULT NULL,
  `creado_el` timestamp NULL DEFAULT current_timestamp(),
  `actualizado_el` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `id_de_documento` (`id_de_documento`),
  UNIQUE KEY `token` (`token`),
  KEY `idx_user_id` (`id_de_usuario`),
  KEY `idx_token` (`token`),
  KEY `idx_document_id` (`id_de_documento`),
  KEY `idx_status` (`estado_de_documento`),
  KEY `idx_tipo_de_firma` (`tipo_de_firma`),
  KEY `idx_hash_documento_firmado` (`hash_documento_firmado`),
  KEY `idx_signed_at` (`firmado_el`),
  CONSTRAINT `firmas_ibfk_1` FOREIGN KEY (`id_de_usuario`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- Dumping structure for table codexcol_firmas_pdf.firmas_svg_usuarios
CREATE TABLE IF NOT EXISTS `firmas_svg_usuarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_usuario` int(11) NOT NULL,
  `nombre_de_la_firma` varchar(100) NOT NULL,
  `svg_de_la_firma` mediumtext NOT NULL,
  `es_por_defecto` tinyint(1) DEFAULT 0,
  `creado_el` timestamp NULL DEFAULT current_timestamp(),
  `actualizado_el` timestamp NULL DEFAULT current_timestamp() ON UPDATE current_timestamp(),
  PRIMARY KEY (`id`),
  UNIQUE KEY `unique_default_signature` (`id_usuario`,`es_por_defecto`),
  CONSTRAINT `firmas_svg_usuarios_ibfk_1` FOREIGN KEY (`id_usuario`) REFERENCES `usuarios` (`id`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci;


-- Dumping structure for table codexcol_firmas_pdf.usuarios
CREATE TABLE IF NOT EXISTS `usuarios` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usuario_de_logeo` varchar(50) NOT NULL,
  `email` varchar(255) NOT NULL,
  `contrasena_encryptada` varchar(255) NOT NULL,
  `nombre_completo` varchar(255) NOT NULL,
  `estado_de_usuario` enum('activo','inactivo','suspendido') DEFAULT 'activo',
  `creado_el` timestamp NULL DEFAULT current_timestamp(),
  `ultima_entrada_registrada` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `usuario_de_logeo` (`usuario_de_logeo`),
  UNIQUE KEY `email` (`email`),
  KEY `idx_username` (`usuario_de_logeo`),
  KEY `idx_email` (`email`),
  KEY `idx_status` (`estado_de_usuario`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- Dumping structure for table codexcol_firmas_pdf.usuario_administrador
CREATE TABLE IF NOT EXISTS `usuario_administrador` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `usuario_de_logeo` varchar(100) NOT NULL,
  `contrasena_encryptada` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `creado_el` timestamp NULL DEFAULT current_timestamp(),
  `ultima_entrada_registrada` datetime DEFAULT NULL,
  `estado_de_usuario` enum('activo','inactivo') DEFAULT 'activo',
  PRIMARY KEY (`id`),
  UNIQUE KEY `usuario_de_logeo` (`usuario_de_logeo`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- Dumping data for table codexcol_firmas_pdf.usuario_administrador: ~0 rows (approximately)

-- Dumping structure for table codexcol_firmas_pdf.verificacion_de_firmas
CREATE TABLE IF NOT EXISTS `verificacion_de_firmas` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `token` varchar(255) NOT NULL,
  `verificada_el` datetime NOT NULL,
  `direccion_ip` varchar(45) DEFAULT NULL,
  `user_agent` text DEFAULT NULL,
  `resultado` enum('valido','revocado','expirado') NOT NULL,
  PRIMARY KEY (`id`),
  KEY `idx_token` (`token`),
  KEY `idx_verified_at` (`verificada_el`),
  CONSTRAINT `verificacion_de_firmas_ibfk_1` FOREIGN KEY (`token`) REFERENCES `firmas` (`token`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

