-- phpMyAdmin SQL Dump
-- version 5.2.1
-- https://www.phpmyadmin.net/
--
-- Host: 127.0.0.1
-- Tempo de geração: 19/06/2026 às 19:54
-- Versão do servidor: 10.4.32-MariaDB
-- Versão do PHP: 8.2.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Banco de dados: `provafinalgabi`
--

DELIMITER $$
--
-- Procedimentos
--
CREATE DEFINER=`root`@`localhost` PROCEDURE `validaativo` (IN `$idmac` VARCHAR(17), IN `$idsensor` INT, IN `$idcoletor` INT, OUT `$ativomac` INT, OUT `$ativosensor` INT, OUT `$ativocoletor` INT)   BEGIN

    SELECT ativo
    INTO $ativomac
    FROM macgabi
    WHERE idmacgabi = $idmac;

    SELECT ativo
    INTO $ativosensor
    FROM sensorgabi
    WHERE idsensorgabi = $idsensor;

    SELECT ativo
    INTO $ativocoletor
    FROM coletorgabi
    WHERE idcoletorgabi = $idcoletor;


END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitecoletorgabi` (IN `$idcoletor` INT, OUT `$contador` INT, OUT `$limite` INT)   BEGIN

SELECT contador, limite
INTO $contador, $limite
FROM coletorgabi
WHERE idcoletorgabi = $idcoletora;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitemacgabi` (IN `$idmacgabi` INT, OUT `$contador` INT, OUT `$limite` INT)   BEGIN

    SELECT contador, limite
    INTO $contador, $limite
    FROM macgabi
    WHERE idmacgabi = $idmacgabi;

END$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `verificalimitesensorgabi` (IN `$idsensorgabi` INT, OUT `$contador` INT, OUT `$limite` INT)   BEGIN

    SELECT contador, limite
    INTO $contador, $limite
    FROM sensorgabi
    WHERE idsensorgabi = $idsensorgabi;

END$$

DELIMITER ;

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

--
-- Estrutura para tabela `coletorgabi`
--

CREATE TABLE `coletorgabi` (
  `idcoletorgabi` 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;

--
-- Despejando dados para a tabela `coletorgabi`
--

INSERT INTO `coletorgabi` (`idcoletorgabi`, `nome`, `contador`, `ativo`, `limite`) VALUES
(1, 'agua', 0, 1, 100);

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

--
-- Estrutura para tabela `leituragabi`
--

CREATE TABLE `leituragabi` (
  `idleituragabi` int(10) UNSIGNED NOT NULL,
  `sensorgabi_idsensorgabi` int(10) UNSIGNED NOT NULL,
  `macgabi_idmacgabi` varchar(17) NOT NULL,
  `coletorgabi_idcoletorgabi` 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 `leituragabi`
--
DELIMITER $$
CREATE TRIGGER `tgdeleteleituragabi` AFTER DELETE ON `leituragabi` FOR EACH ROW BEGIN
UPDATE macgabi
SET contador = contador - 1
WHERE idmacgabi = OLD.macgabi_idmacgabi;

UPDATE coletorgabi
SET contador = contador - 1
WHERE idcoletorgabi =OLD.coletorgabi_idcoletorgabi;

UPDATE sensorgabi
SET contador = contador - 1
WHERE idsensorgabi = OLD.sensorgabi_idsensorgabi;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tginsertleituragabi` AFTER INSERT ON `leituragabi` FOR EACH ROW BEGIN
UPDATE macgabi
SET contador=contador+1
WHERE idmacgabi=new.macgabi_idmacgabi;

UPDATE coletorgabi
SET contador = contador + 1
WHERE idcoletorgabi = NEW.coletorgabi_idcoletorgabi;
    
UPDATE sensorgabi
SET contador = contador + 1
WHERE idsensorgabi = NEW.sensorgabi_idsensorgabi;
END
$$
DELIMITER ;
DELIMITER $$
CREATE TRIGGER `tgverificaativogabi` BEFORE INSERT ON `leituragabi` FOR EACH ROW BEGIN

CALL validaativo(
    NEW.macgabi_idmacgabi,
    NEW.sensorgabi_idsensorgabi,
    NEW.coletorgabi_idcoletorgabi,
    @ativomac,
    @ativosensor,
    @ativocoletor
);

IF @ativomac = 0 THEN
    SIGNAL SQLSTATE '45000'
    SET MESSAGE_TEXT = 'Mac inativo';
END IF;

IF @ativosensor = 0 THEN
    SIGNAL SQLSTATE '45000'
    SET MESSAGE_TEXT = 'Sensor inativo';
END IF;

IF @ativocoletor = 0 THEN
    SIGNAL SQLSTATE '45000'
    SET MESSAGE_TEXT = 'Coletor inativo';
END IF;

END
$$
DELIMITER ;

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

--
-- Estrutura para tabela `macgabi`
--

CREATE TABLE `macgabi` (
  `idmacgabi` 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;

--
-- Despejando dados para a tabela `macgabi`
--

INSERT INTO `macgabi` (`idmacgabi`, `nome`, `contador`, `ativo`, `limite`) VALUES
('1', 'gabi', 0, 1, 100);

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

--
-- Estrutura para tabela `sensorgabi`
--

CREATE TABLE `sensorgabi` (
  `idsensorgabi` 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;

--
-- Despejando dados para a tabela `sensorgabi`
--

INSERT INTO `sensorgabi` (`idsensorgabi`, `nome`, `ativo`, `limite`, `contador`, `unidade`, `sigla`) VALUES
(1, 'gabi', 1, 100, 0, '1', 'G');

--
-- Índices para tabelas despejadas
--

--
-- Índices de tabela `coletorgabi`
--
ALTER TABLE `coletorgabi`
  ADD PRIMARY KEY (`idcoletorgabi`);

--
-- Índices de tabela `leituragabi`
--
ALTER TABLE `leituragabi`
  ADD PRIMARY KEY (`idleituragabi`),
  ADD KEY `leitura_FKIndex1` (`macgabi_idmacgabi`),
  ADD KEY `leitura_FKIndex2` (`sensorgabi_idsensorgabi`),
  ADD KEY `leitura_FKIndex3` (`coletorgabi_idcoletorgabi`);

--
-- Índices de tabela `macgabi`
--
ALTER TABLE `macgabi`
  ADD PRIMARY KEY (`idmacgabi`);

--
-- Índices de tabela `sensorgabi`
--
ALTER TABLE `sensorgabi`
  ADD PRIMARY KEY (`idsensorgabi`);

--
-- AUTO_INCREMENT para tabelas despejadas
--

--
-- AUTO_INCREMENT de tabela `coletorgabi`
--
ALTER TABLE `coletorgabi`
  MODIFY `idcoletorgabi` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=355;

--
-- AUTO_INCREMENT de tabela `leituragabi`
--
ALTER TABLE `leituragabi`
  MODIFY `idleituragabi` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=2;

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

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

--
-- Restrições para tabelas `leituragabi`
--
ALTER TABLE `leituragabi`
  ADD CONSTRAINT `leituragabi_ibfk_1` FOREIGN KEY (`macgabi_idmacgabi`) REFERENCES `macgabi` (`idmacgabi`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituragabi_ibfk_2` FOREIGN KEY (`sensorgabi_idsensorgabi`) REFERENCES `sensorgabi` (`idsensorgabi`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  ADD CONSTRAINT `leituragabi_ibfk_3` FOREIGN KEY (`coletorgabi_idcoletorgabi`) REFERENCES `coletorgabi` (`idcoletorgabi`) ON DELETE NO ACTION ON UPDATE NO ACTION;
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
