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

START TRANSACTION;



--
-- Banco de dados: `bancoluiz`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_atualiza_coletorluiz` (IN `p_id` INT, IN `p_nome` VARCHAR(45), IN `p_ativo` BOOLEAN, IN `p_limite` INT)   BEGIN
    UPDATE coletorluiz
    SET nome = p_nome,
        ativo = p_ativo,
        limite = p_limite
    WHERE idcoletorluiz = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_atualiza_leituraluiz` (IN `p_id` INT, IN `p_mac` VARCHAR(17), IN `p_sensor` INT, IN `p_coletor` INT, IN `p_data` DATE, IN `p_hora` TIME, IN `p_valor` INT)   BEGIN
    UPDATE leituraluiz
    SET macluiz_idmacluiz = p_mac,
        sensorluiz_idsensorluiz = p_sensor,
        coletorluiz_idcoletorluiz = p_coletor,
        dataleitura = p_data,
        horaleitura = p_hora,
        valor = p_valor
    WHERE idleituraluiz = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_atualiza_macluiz` (IN `p_idmacluiz` VARCHAR(17), IN `p_nome` VARCHAR(45), IN `p_ativo` BOOLEAN, IN `p_limite` INT)   BEGIN
    UPDATE macluiz
    SET nome = p_nome,
        ativo = p_ativo,
        limite = p_limite
    WHERE idmacluiz = p_idmacluiz;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_atualiza_sensorluiz` (IN `p_id` INT, IN `p_nome` VARCHAR(45), IN `p_ativo` BOOLEAN, IN `p_limite` INT, IN `p_unidade` VARCHAR(10), IN `p_sigla` VARCHAR(3))   BEGIN
    UPDATE sensorluiz
    SET nome = p_nome,
        ativo = p_ativo,
        limite = p_limite,
        unidade = p_unidade,
        sigla = p_sigla
    WHERE idsensorluiz = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_exclui_coletorluiz` (IN `p_id` INT)   BEGIN
    DELETE FROM coletorluiz
    WHERE idcoletorluiz = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_exclui_leituraluiz` (IN `p_id` INT)   BEGIN
    DELETE FROM leituraluiz
    WHERE idleituraluiz = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_exclui_macluiz` (IN `p_idmacluiz` VARCHAR(17))   BEGIN
    DELETE FROM macluiz
    WHERE idmacluiz = p_idmacluiz;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_exclui_sensorluiz` (IN `p_id` INT)   BEGIN
    DELETE FROM sensorluiz
    WHERE idsensorluiz = p_id;
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insere_coletorluiz` (IN `p_nome` VARCHAR(45))   BEGIN
    INSERT INTO coletorluiz(nome)
    VALUES(p_nome);
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insere_leituraluiz` (IN `p_mac` VARCHAR(17), IN `p_sensor` INT, IN `p_coletor` INT, IN `p_data` DATE, IN `p_hora` TIME, IN `p_valor` INT)   BEGIN
    INSERT INTO leituraluiz(
        macluiz_idmacluiz,
        sensorluiz_idsensorluiz,
        coletorluiz_idcoletorluiz,
        dataleitura,
        horaleitura,
        valor
    )
    VALUES(
        p_mac,
        p_sensor,
        p_coletor,
        p_data,
        p_hora,
        p_valor
    );
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insere_macluiz` (IN `p_idmacluiz` VARCHAR(17), IN `p_nome` VARCHAR(45))   BEGIN
    INSERT INTO macluiz(idmacluiz,nome)
    VALUES(p_idmacluiz,p_nome);
END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `sp_insere_sensorluiz` (IN `p_nome` VARCHAR(45), IN `p_unidade` VARCHAR(10), IN `p_sigla` VARCHAR(3))   BEGIN
    INSERT INTO sensorluiz(nome,unidade,sigla)
    VALUES(p_nome,p_unidade,p_sigla);
END$$

DELIMITER ;

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

--
-- Estrutura para tabela `coletorluiz`
--

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

--
-- Acionadores `coletorluiz`
--
DELIMITER $$
CREATE TRIGGER `trg_coletorluiz_bd` BEFORE DELETE ON `coletorluiz` FOR EACH ROW BEGIN
    -- Aqui você pode registrar logs ou validações
    -- Exemplo vazio
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_coletorluiz_bi` BEFORE INSERT ON `coletorluiz` FOR EACH ROW BEGIN
    IF NEW.contador >= NEW.limite THEN
        SET NEW.ativo = 0;
    ELSE
        SET NEW.ativo = 1;
    END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_coletorluiz_bu` BEFORE UPDATE ON `coletorluiz` FOR EACH ROW BEGIN
    IF NEW.contador >= NEW.limite THEN
        SET NEW.ativo = 0;
    ELSE
        SET NEW.ativo = 1;
    END IF;
END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `leituraluiz`
--

CREATE TABLE `leituraluiz` (
  `idleituraluiz` int(10) UNSIGNED NOT NULL,
  `macluiz_idmacluiz` varchar(17) NOT NULL,
  `sensorluiz_idsensorluiz` int(10) UNSIGNED NOT NULL,
  `coletorluiz_idcoletorluiz` 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;

--
-- Acionadores `leituraluiz`
--
DELIMITER $$
CREATE TRIGGER `trg_leituraluiz_ad` AFTER DELETE ON `leituraluiz` FOR EACH ROW BEGIN
    UPDATE macluiz
    SET contador = contador - 1
    WHERE idmacluiz = OLD.macluiz_idmacluiz;

    UPDATE sensorluiz
    SET contador = contador - 1
    WHERE idsensorluiz = OLD.sensorluiz_idsensorluiz;

    UPDATE coletorluiz
    SET contador = contador - 1
    WHERE idcoletorluiz = OLD.coletorluiz_idcoletorluiz;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_leituraluiz_ai` AFTER INSERT ON `leituraluiz` FOR EACH ROW BEGIN
    UPDATE macluiz
    SET contador = contador + 1
    WHERE idmacluiz = NEW.macluiz_idmacluiz;

    UPDATE sensorluiz
    SET contador = contador + 1
    WHERE idsensorluiz = NEW.sensorluiz_idsensorluiz;

    UPDATE coletorluiz
    SET contador = contador + 1
    WHERE idcoletorluiz = NEW.coletorluiz_idcoletorluiz;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_leituraluiz_au` AFTER UPDATE ON `leituraluiz` FOR EACH ROW BEGIN

    -- MAC
    IF OLD.macluiz_idmacluiz <> NEW.macluiz_idmacluiz THEN

        UPDATE macluiz
        SET contador = contador - 1
        WHERE idmacluiz = OLD.macluiz_idmacluiz;

        UPDATE macluiz
        SET contador = contador + 1
        WHERE idmacluiz = NEW.macluiz_idmacluiz;

    END IF;

    -- SENSOR
    IF OLD.sensorluiz_idsensorluiz <> NEW.sensorluiz_idsensorluiz THEN

        UPDATE sensorluiz
        SET contador = contador - 1
        WHERE idsensorluiz = OLD.sensorluiz_idsensorluiz;

        UPDATE sensorluiz
        SET contador = contador + 1
        WHERE idsensorluiz = NEW.sensorluiz_idsensorluiz;

    END IF;

    -- COLETOR
    IF OLD.coletorluiz_idcoletorluiz <> NEW.coletorluiz_idcoletorluiz THEN

        UPDATE coletorluiz
        SET contador = contador - 1
        WHERE idcoletorluiz = OLD.coletorluiz_idcoletorluiz;

        UPDATE coletorluiz
        SET contador = contador + 1
        WHERE idcoletorluiz = NEW.coletorluiz_idcoletorluiz;

    END IF;

END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `macluiz`
--

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

--
-- Acionadores `macluiz`
--
DELIMITER $$
CREATE TRIGGER `trg_macluiz_bd` BEFORE DELETE ON `macluiz` FOR EACH ROW BEGIN
    -- Aqui você pode registrar logs ou validações
    -- Exemplo vazio
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_macluiz_bi` BEFORE INSERT ON `macluiz` FOR EACH ROW BEGIN
    IF NEW.contador >= NEW.limite THEN
        SET NEW.ativo = 0;
    ELSE
        SET NEW.ativo = 1;
    END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_macluiz_bu` BEFORE UPDATE ON `macluiz` FOR EACH ROW BEGIN
    IF NEW.contador >= NEW.limite THEN
        SET NEW.ativo = 0;
    ELSE
        SET NEW.ativo = 1;
    END IF;
END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `sensorluiz`
--

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

--
-- Acionadores `sensorluiz`
--
DELIMITER $$
CREATE TRIGGER `trg_sensorluiz_bd` BEFORE DELETE ON `sensorluiz` FOR EACH ROW BEGIN
    -- Aqui você pode registrar logs ou validações
    -- Exemplo vazio
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_sensorluiz_bi` BEFORE INSERT ON `sensorluiz` FOR EACH ROW BEGIN
    IF NEW.contador >= NEW.limite THEN
        SET NEW.ativo = 0;
    ELSE
        SET NEW.ativo = 1;
    END IF;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `trg_sensorluiz_bu` BEFORE UPDATE ON `sensorluiz` FOR EACH ROW BEGIN
    IF NEW.contador >= NEW.limite THEN
        SET NEW.ativo = 0;
    ELSE
        SET NEW.ativo = 1;
    END IF;
END
$$
DELIMITER ;

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `coletorluiz`
--
ALTER TABLE `coletorluiz`
  ADD PRIMARY KEY (`idcoletorluiz`);

--
-- Índices de tabela `leituraluiz`
--
ALTER TABLE `leituraluiz`
  ADD PRIMARY KEY (`idleituraluiz`),
  ADD KEY `leitura_FKIndex1` (`macluiz_idmacluiz`),
  ADD KEY `leitura_FKIndex2` (`sensorluiz_idsensorluiz`),
  ADD KEY `leitura_FKIndex3` (`coletorluiz_idcoletorluiz`);

--
-- Índices de tabela `macluiz`
--
ALTER TABLE `macluiz`
  ADD PRIMARY KEY (`idmacluiz`);

--
-- Índices de tabela `sensorluiz`
--
ALTER TABLE `sensorluiz`
  ADD PRIMARY KEY (`idsensorluiz`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `coletorluiz`
--
ALTER TABLE `coletorluiz`
  MODIFY `idcoletorluiz` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de tabela `leituraluiz`
--
ALTER TABLE `leituraluiz`
  MODIFY `idleituraluiz` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

--
-- AUTO_INCREMENT de tabela `sensorluiz`
--
ALTER TABLE `sensorluiz`
  MODIFY `idsensorluiz` int(10) UNSIGNED NOT NULL AUTO_INCREMENT;

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

--
-- Restrições para tabelas `leituraluiz`
--
ALTER TABLE `leituraluiz`
  ADD CONSTRAINT `leituraluiz_ibfk_1` FOREIGN KEY (`macluiz_idmacluiz`) REFERENCES `macluiz` (`idmacluiz`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraluiz_ibfk_2` FOREIGN KEY (`sensorluiz_idsensorluiz`) REFERENCES `sensorluiz` (`idsensorluiz`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituraluiz_ibfk_3` FOREIGN KEY (`coletorluiz_idcoletorluiz`) REFERENCES `coletorluiz` (`idcoletorluiz`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

