-- https://www.phpmyadmin.net/
--
-- Tempo de geração: 26/06/2026 às 19:49
-- Versão do servidor: 10.4.32-MariaDB
-- Versão do PHP: 8.2.12

START TRANSACTION;



--
-- Banco de dados: `dbpedro1`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `validaLeiturapedro` (IN `pidmac` INT, IN `pidsensor` INT, IN `pidcoletor` INT)   BEGIN

    DECLARE vmac BOOLEAN;
    DECLARE vsensor BOOLEAN;
    DECLARE vcoletor BOOLEAN;

    SELECT ativo
    INTO vmac
    FROM macpedro
    WHERE idmacpedro = pidmac;

    SELECT ativo
    INTO vsensor
    FROM sensorpedro
    WHERE idsensorpedro = pidsensor;

    SELECT ativo
    INTO vcoletor
    FROM coletorpedro
    WHERE idcoletorpedro = pidcoletor;

    IF vmac = FALSE THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'MAC desativado';
    END IF;

    IF vsensor = FALSE THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Sensor desativado';
    END IF;

    IF vcoletor = FALSE THEN
        SIGNAL SQLSTATE '45000'
        SET MESSAGE_TEXT = 'Coletor desativado';
    END IF;

END$$

DELIMITER ;

-- --------------------------------------------------------

--
-- Estrutura para tabela `coletorpedro`
--

CREATE TABLE `coletorpedro` (
  `idcoletorpedro` int(10) UNSIGNED NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT NULL,
  `limite` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Despejando dados para a tabela `coletorpedro`
--

INSERT INTO `coletorpedro` (`idcoletorpedro`, `nome`, `contador`, `ativo`, `limite`) VALUES
(1, 'Gateway Principal', 1, 1, 100),
(2, 'Gateway Principal', 0, 1, 100),
(3, 'Gateway Laboratório', 0, 1, 100),
(4, 'Gateway Reserva', 0, 1, 100),
(5, 'Coletor 1', 0, 1, 100),
(6, 'Coletor 1', 0, 1, 100);

-- --------------------------------------------------------

--
-- Estrutura para tabela `leiturapedro`
--

CREATE TABLE `leiturapedro` (
  `idleiturapedro` int(10) UNSIGNED NOT NULL,
  `sensorpedro_idsensorpedro` int(10) UNSIGNED NOT NULL,
  `macpedro_idmacpedro` int(10) UNSIGNED NOT NULL,
  `coletorpedro_idcoletorpedro` int(10) UNSIGNED NOT NULL,
  `dataleitura` date DEFAULT NULL,
  `horaleitura` time DEFAULT NULL,
  `valor` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Despejando dados para a tabela `leiturapedro`
--

INSERT INTO `leiturapedro` (`idleiturapedro`, `sensorpedro_idsensorpedro`, `macpedro_idmacpedro`, `coletorpedro_idcoletorpedro`, `dataleitura`, `horaleitura`, `valor`) VALUES
(5, 5, 3, 1, '2026-06-18', '12:49:00', 12);

--
-- Acionadores `leiturapedro`
--
DELIMITER $$
CREATE TRIGGER `trg_after_delete_leiturape` AFTER DELETE ON `leiturapedro` FOR EACH ROW BEGIN

    UPDATE macpedro
       SET contador = contador - 1
     WHERE idmacpedro = OLD.macpedro_idmacpedro;

    UPDATE sensorpedro
       SET contador = contador - 1
     WHERE idsensorpedro = OLD.sensorpedro_idsensorpedro;

    UPDATE coletorpedro
       SET contador = contador - 1
     WHERE idcoletorpedro = OLD.coletorpedro_idcoletorpedro;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_after_insert_leiturape` AFTER INSERT ON `leiturapedro` FOR EACH ROW BEGIN

    UPDATE macpedro
       SET contador = contador + 1
     WHERE idmacpedro = NEW.macpedro_idmacpedro;

    UPDATE sensorpedro
       SET contador = contador + 1
     WHERE idsensorpedro = NEW.sensorpedro_idsensorpedro;

    UPDATE coletorpedro
       SET contador = contador + 1
     WHERE idcoletorpedro = NEW.coletorpedro_idcoletorpedro;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_after_update_leiturape` AFTER UPDATE ON `leiturapedro` FOR EACH ROW BEGIN

    IF OLD.macpedro_idmacpedro <> NEW.macpedro_idmacpedro THEN

        UPDATE macpedro
           SET contador = contador - 1
         WHERE idmacpedro = OLD.macpedro_idmacpedro;

        UPDATE macpedro
           SET contador = contador + 1
         WHERE idmacpedro = NEW.macpedro_idmacpedro;

    END IF;

    IF OLD.sensorpedro_idsensorpedro <> NEW.sensorpedro_idsensorpedro THEN

        UPDATE sensorpedro
           SET contador = contador - 1
         WHERE idsensorpedro = OLD.sensorpedro_idsensorpedro;

        UPDATE sensorpedro
           SET contador = contador + 1
         WHERE idsensorpedro = NEW.sensorpedro_idsensorpedro;

    END IF;

    IF OLD.coletorpedro_idcoletorpedro <> NEW.coletorpedro_idcoletorpedro THEN

        UPDATE coletorpedro
           SET contador = contador - 1
         WHERE idcoletorpedro = OLD.coletorpedro_idcoletorpedro;

        UPDATE coletorpedro
           SET contador = contador + 1
         WHERE idcoletorpedro = NEW.coletorpedro_idcoletorpedro;

    END IF;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_before_insert_leiturape` BEFORE INSERT ON `leiturapedro` FOR EACH ROW BEGIN

    CALL validaLeiturapedro(
        NEW.macpedro_idmacpedro,
        NEW.sensorpedro_idsensorpedro,
        NEW.coletorpedro_idcoletorpedro
    );

END
$$
DELIMITER ;

-- --------------------------------------------------------

--
-- Estrutura para tabela `macpedro`
--

CREATE TABLE `macpedro` (
  `idmacpedro` int(10) UNSIGNED NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT NULL,
  `limite` int(10) UNSIGNED DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Despejando dados para a tabela `macpedro`
--

INSERT INTO `macpedro` (`idmacpedro`, `nome`, `contador`, `ativo`, `limite`) VALUES
(1, 'ESP32 Sala', 0, 1, 100),
(2, 'ESP8266 Quarto', 0, 1, 100),
(3, 'ESP8266 Quarto', 1, 1, 100),
(4, 'Arduino Uno', 0, 1, 100),
(5, 'Raspberry Pico', 0, 1, 100),
(6, 'Mac 1', 0, 1, 100),
(7, 'Mac 1', 0, 1, 100);

-- --------------------------------------------------------

--
-- Estrutura para tabela `sensorpedro`
--

CREATE TABLE `sensorpedro` (
  `idsensorpedro` int(10) UNSIGNED NOT NULL,
  `nome` varchar(45) DEFAULT NULL,
  `ativo` tinyint(1) DEFAULT NULL,
  `limite` int(10) UNSIGNED DEFAULT NULL,
  `contador` int(10) UNSIGNED DEFAULT NULL,
  `unidade` varchar(10) DEFAULT NULL,
  `sigla` varchar(3) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

--
-- Despejando dados para a tabela `sensorpedro`
--

INSERT INTO `sensorpedro` (`idsensorpedro`, `nome`, `ativo`, `limite`, `contador`, `unidade`, `sigla`) VALUES
(1, 'Temperatura', 1, 80, 0, 'Celsius', '°C'),
(2, 'Temperatura', 1, 80, 0, 'Celsius', '°C'),
(3, 'Umidade', 1, 100, 0, 'Percentual', '%'),
(4, 'Luminosidade', 1, 1000, 0, 'Lux', 'Lux'),
(5, 'Pressão', 1, 2000, 1, 'hPa', 'hPa'),
(6, 'Sensor 1', 1, 100, 0, 'graus', 'C'),
(7, 'Sensor 1', 1, 100, 0, 'graus', 'C');

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `coletorpedro`
--
ALTER TABLE `coletorpedro`
  ADD PRIMARY KEY (`idcoletorpedro`);

--
-- Índices de tabela `leiturapedro`
--
ALTER TABLE `leiturapedro`
  ADD PRIMARY KEY (`idleiturapedro`),
  ADD KEY `leiturapedro_FKIndex1` (`coletorpedro_idcoletorpedro`),
  ADD KEY `leiturapedro_FKIndex2` (`macpedro_idmacpedro`),
  ADD KEY `leiturapedro_FKIndex3` (`sensorpedro_idsensorpedro`);

--
-- Índices de tabela `macpedro`
--
ALTER TABLE `macpedro`
  ADD PRIMARY KEY (`idmacpedro`);

--
-- Índices de tabela `sensorpedro`
--
ALTER TABLE `sensorpedro`
  ADD PRIMARY KEY (`idsensorpedro`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `coletorpedro`
--
ALTER TABLE `coletorpedro`
  MODIFY `idcoletorpedro` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=7;

--
-- AUTO_INCREMENT de tabela `leiturapedro`
--
ALTER TABLE `leiturapedro`
  MODIFY `idleiturapedro` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=6;

--
-- AUTO_INCREMENT de tabela `macpedro`
--
ALTER TABLE `macpedro`
  MODIFY `idmacpedro` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- AUTO_INCREMENT de tabela `sensorpedro`
--
ALTER TABLE `sensorpedro`
  MODIFY `idsensorpedro` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;

--
-- Restrições para tabelas despejadas
--

--
-- Restrições para tabelas `leiturapedro`
--
ALTER TABLE `leiturapedro`
  ADD CONSTRAINT `leiturapedro_ibfk_1` FOREIGN KEY (`coletorpedro_idcoletorpedro`) REFERENCES `coletorpedro` (`idcoletorpedro`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leiturapedro_ibfk_2` FOREIGN KEY (`macpedro_idmacpedro`) REFERENCES `macpedro` (`idmacpedro`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leiturapedro_ibfk_3` FOREIGN KEY (`sensorpedro_idsensorpedro`) REFERENCES `sensorpedro` (`idsensorpedro`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

