-- https://www.phpmyadmin.net/
--
-- Tempo de geração: 19/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: `trabalhofinalallang`
--

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

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

    SELECT ativo
    INTO vmac
    FROM macAllang
    WHERE idmacAllang = pidmac;

    SELECT ativo
    INTO vsensor
    FROM sensorAllang
    WHERE idsensorAllang = pidsensor;

    SELECT ativo
    INTO vcoletor
    FROM coletorAllang
    WHERE idcoletorAllang = 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 `coletorallang`
--

CREATE TABLE `coletorallang` (
  `idcoletorAllang` 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 `coletorallang`
--

INSERT INTO `coletorallang` (`idcoletorAllang`, `nome`, `contador`, `ativo`, `limite`) VALUES
(1, 'Gateway Principal', 2, 1, 100),
(2, 'Gateway Principal', 0, 1, 100),
(3, 'Gateway Laboratório', 0, 1, 100),
(4, 'Gateway Reserva', 0, 0, 100);

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

--
-- Estrutura para tabela `leituraallang`
--

CREATE TABLE `leituraallang` (
  `idleituraAllang` int(10) UNSIGNED NOT NULL,
  `sensorAllang_idsensorAllang` int(10) UNSIGNED NOT NULL,
  `macAllang_idmacAllang` int(10) UNSIGNED NOT NULL,
  `coletorAllang_idcoletorAllang` 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 `leituraallang`
--

INSERT INTO `leituraallang` (`idleituraAllang`, `sensorAllang_idsensorAllang`, `macAllang_idmacAllang`, `coletorAllang_idcoletorAllang`, `dataleitura`, `horaleitura`, `valor`) VALUES
(1, 1, 1, 1, '2026-06-19', '14:39:00', 28),
(2, 1, 3, 1, '2026-06-19', '14:39:17', 25);

--
-- Acionadores `leituraallang`
--
DELIMITER $$
CREATE TRIGGER `trg_after_delete_leitura` AFTER DELETE ON `leituraallang` FOR EACH ROW BEGIN

    UPDATE macAllang
       SET contador = contador - 1
     WHERE idmacAllang = OLD.macAllang_idmacAllang;

    UPDATE sensorAllang
       SET contador = contador - 1
     WHERE idsensorAllang = OLD.sensorAllang_idsensorAllang;

    UPDATE coletorAllang
       SET contador = contador - 1
     WHERE idcoletorAllang = OLD.coletorAllang_idcoletorAllang;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_after_insert_leitura` AFTER INSERT ON `leituraallang` FOR EACH ROW BEGIN

    UPDATE macAllang
       SET contador = contador + 1
     WHERE idmacAllang = NEW.macAllang_idmacAllang;

    UPDATE sensorAllang
       SET contador = contador + 1
     WHERE idsensorAllang = NEW.sensorAllang_idsensorAllang;

    UPDATE coletorAllang
       SET contador = contador + 1
     WHERE idcoletorAllang = NEW.coletorAllang_idcoletorAllang;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_after_update_leitura` AFTER UPDATE ON `leituraallang` FOR EACH ROW BEGIN

    IF OLD.macAllang_idmacAllang <> NEW.macAllang_idmacAllang THEN

        UPDATE macAllang
           SET contador = contador - 1
         WHERE idmacAllang = OLD.macAllang_idmacAllang;

        UPDATE macAllang
           SET contador = contador + 1
         WHERE idmacAllang = NEW.macAllang_idmacAllang;

    END IF;

    IF OLD.sensorAllang_idsensorAllang <> NEW.sensorAllang_idsensorAllang THEN

        UPDATE sensorAllang
           SET contador = contador - 1
         WHERE idsensorAllang = OLD.sensorAllang_idsensorAllang;

        UPDATE sensorAllang
           SET contador = contador + 1
         WHERE idsensorAllang = NEW.sensorAllang_idsensorAllang;

    END IF;

    IF OLD.coletorAllang_idcoletorAllang <> NEW.coletorAllang_idcoletorAllang THEN

        UPDATE coletorAllang
           SET contador = contador - 1
         WHERE idcoletorAllang = OLD.coletorAllang_idcoletorAllang;

        UPDATE coletorAllang
           SET contador = contador + 1
         WHERE idcoletorAllang = NEW.coletorAllang_idcoletorAllang;

    END IF;

END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_before_insert_leitura` BEFORE INSERT ON `leituraallang` FOR EACH ROW BEGIN

    CALL validaLeituraAllang(
        NEW.macAllang_idmacAllang,
        NEW.sensorAllang_idsensorAllang,
        NEW.coletorAllang_idcoletorAllang
    );

END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `macallang`
--

CREATE TABLE `macallang` (
  `idmacAllang` 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 `macallang`
--

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

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

--
-- Estrutura para tabela `sensorallang`
--

CREATE TABLE `sensorallang` (
  `idsensorAllang` 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 `sensorallang`
--

INSERT INTO `sensorallang` (`idsensorAllang`, `nome`, `ativo`, `limite`, `contador`, `unidade`, `sigla`) VALUES
(1, 'Temperatura', 1, 80, 2, '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', 0, 2000, 0, 'hPa', 'hPa');

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `coletorallang`
--
ALTER TABLE `coletorallang`
  ADD PRIMARY KEY (`idcoletorAllang`);

--
-- Índices de tabela `leituraallang`
--
ALTER TABLE `leituraallang`
  ADD PRIMARY KEY (`idleituraAllang`),
  ADD KEY `leituraAllang_FKIndex1` (`coletorAllang_idcoletorAllang`),
  ADD KEY `leituraAllang_FKIndex2` (`macAllang_idmacAllang`),
  ADD KEY `leituraAllang_FKIndex3` (`sensorAllang_idsensorAllang`);

--
-- Índices de tabela `macallang`
--
ALTER TABLE `macallang`
  ADD PRIMARY KEY (`idmacAllang`);

--
-- Índices de tabela `sensorallang`
--
ALTER TABLE `sensorallang`
  ADD PRIMARY KEY (`idsensorAllang`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `coletorallang`
--
ALTER TABLE `coletorallang`
  MODIFY `idcoletorAllang` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=5;

--
-- AUTO_INCREMENT de tabela `leituraallang`
--
ALTER TABLE `leituraallang`
  MODIFY `idleituraAllang` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=3;

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

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

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

--
-- Restrições para tabelas `leituraallang`
--
ALTER TABLE `leituraallang`
  ADD CONSTRAINT `leituraallang_ibfk_1` FOREIGN KEY (`coletorAllang_idcoletorAllang`) REFERENCES `coletorallang` (`idcoletorAllang`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraallang_ibfk_2` FOREIGN KEY (`macAllang_idmacAllang`) REFERENCES `macallang` (`idmacAllang`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraallang_ibfk_3` FOREIGN KEY (`sensorAllang_idsensorAllang`) REFERENCES `sensorallang` (`idsensorAllang`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

