-- MySQL Workbench Forward Engineering

SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0;
SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';

-- -----------------------------------------------------
-- Schema aplicando_iot_covid
-- -----------------------------------------------------

-- -----------------------------------------------------
-- Schema aplicando_iot_covid
-- -----------------------------------------------------
CREATE SCHEMA IF NOT EXISTS `aplicando_iot_covid` DEFAULT CHARACTER SET utf8 ;
USE `aplicando_iot_covid` ;

-- -----------------------------------------------------
-- Table `aplicando_iot_covid`.`users`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `aplicando_iot_covid`.`users` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(50) NOT NULL COMMENT 'nome',
  `email` VARCHAR(50) NOT NULL COMMENT 'e-mail',
  `gender` VARCHAR(20) NOT NULL COMMENT 'gênero (masculino, feminino, outros)',
  `birth_date` VARCHAR(40) NOT NULL COMMENT 'data de nascimento',
  `cpf` VARCHAR(11) NOT NULL COMMENT 'cadastro de pessoa física',
  `password` VARCHAR(90) NOT NULL COMMENT 'senha',
  `type` INT NOT NULL DEFAULT 0 COMMENT 'Tipo de usuário (administrador, recenseador, usuário comun )',
  `email_verified_at` DATETIME NOT NULL COMMENT 'e-mail de verificação',
  `status` TINYINT NOT NULL DEFAULT 0 COMMENT 'usuário ativo/inativo',
  `created_at` DATETIME NOT NULL COMMENT 'data da criação do usuário',
  `updated_at` DATETIME NOT NULL COMMENT 'data da atualização dos dados do usuário',
  `deleted_at` DATETIME NOT NULL COMMENT 'data da exclusão da conta do usuário',
  PRIMARY KEY (`id`),
  UNIQUE INDEX `cpf_UNIQUE` (`cpf` ASC),
  UNIQUE INDEX `email_UNIQUE` (`email` ASC))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `aplicando_iot_covid`.`address`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `aplicando_iot_covid`.`address` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `city` VARCHAR(50) NOT NULL COMMENT 'cidade',
  `number` VARCHAR(20) NOT NULL COMMENT 'número da residência ',
  `district` VARCHAR(50) NOT NULL COMMENT 'distrito',
  `zipcode` VARCHAR(30) NOT NULL COMMENT 'código postal/CEP',
  `region` VARCHAR(50) NOT NULL COMMENT 'região',
  `latitude` VARCHAR(40) NOT NULL COMMENT 'latitude',
  `longitude` VARCHAR(40) NOT NULL COMMENT 'longitude',
  `zone` VARCHAR(45) NOT NULL COMMENT 'zona (urbana ou rural)',
  `created_at` DATETIME NOT NULL COMMENT 'data da criação do usuário',
  `updated_at` DATETIME NOT NULL COMMENT 'data da atualização dos dados do usuário',
  `deleted_at` DATETIME NOT NULL COMMENT 'data da exclusão da conta do usuário',
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `aplicando_iot_covid`.`users_has_address`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `aplicando_iot_covid`.`users_has_address` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `users_id` INT NOT NULL,
  `address_id` INT NOT NULL,
  PRIMARY KEY (`id`, `users_id`, `address_id`),
  INDEX `fk_users_has_address_users1_idx` (`users_id` ASC),
  INDEX `fk_users_has_address_address1_idx` (`address_id` ASC),
  CONSTRAINT `fk_users_has_address_users1`
    FOREIGN KEY (`users_id`)
    REFERENCES `aplicando_iot_covid`.`users` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_users_has_address_address1`
    FOREIGN KEY (`address_id`)
    REFERENCES `aplicando_iot_covid`.`address` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `aplicando_iot_covid`.`users_has_forms_responses`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `aplicando_iot_covid`.`users_has_forms_responses` (
  `id` INT NOT NULL AUTO_INCREMENT,
  `status` TINYINT NOT NULL COMMENT 'se já respondeu o formulário sim/não',
  `created_at` DATETIME NOT NULL COMMENT 'data da criação do usuário',
  `updated_at` DATETIME NULL COMMENT 'data da atualização dos dados do usuário',
  `deleted_at` DATETIME NULL COMMENT 'data da exclusão da conta do usuário',
  PRIMARY KEY (`id`))
ENGINE = InnoDB;


-- -----------------------------------------------------
-- Table `aplicando_iot_covid`.`forms_responses`
-- -----------------------------------------------------
CREATE TABLE IF NOT EXISTS `aplicando_iot_covid`.`forms_responses` (
  `id` VARCHAR(36) NOT NULL,
  `symptom_fever` TINYINT NULL DEFAULT 0 COMMENT 'febre',
  `symptom_difficulty_breathing` TINYINT NULL DEFAULT 0 COMMENT 'dificuldade respirar',
  `symptom_taste_loss` TINYINT NULL DEFAULT 0 COMMENT 'perda paladar',
  `symptom_smell_loss` TINYINT NULL DEFAULT 0 COMMENT 'perda olfato',
  `symptom_coryza` TINYINT NULL DEFAULT 0 COMMENT 'coriza',
  `symptom_sore_throat` TINYINT NULL DEFAULT 0 COMMENT 'dor de garganta',
  `symptom_headache` TINYINT NULL DEFAULT 0 COMMENT 'dor de cabeça',
  `symptom_diarrhea` TINYINT NULL DEFAULT 0 COMMENT 'diarreia',
  `symptom_vomit` TINYINT NULL DEFAULT 0 COMMENT 'vomito',
  `onset_of_symptoms` VARCHAR(20) NULL DEFAULT 'null' COMMENT 'início dos sintomas',
  `self_medication` TINYINT NULL DEFAULT 0 COMMENT 'auto medicação',
  `self_medication_notes` VARCHAR(100) NULL COMMENT 'anotações da auto medicação',
  `contact_with_covid` TINYINT NULL DEFAULT 0 COMMENT 'contato com a covid',
  `agglomerated` TINYINT NULL DEFAULT 0 COMMENT 'aglomerou',
  `agglomeration_places` VARCHAR(100) NULL COMMENT 'locais de aglomeração',
  `prevention_mask` TINYINT NULL DEFAULT 0 COMMENT 'máscara de prevenção',
  `prevention_alcohol` TINYINT NULL DEFAULT 0 COMMENT 'álcool de prevenção',
  `prevention_social_distancing` TINYINT NULL COMMENT 'distanciamento de prevenção',
  `prevention_wash_hands` TINYINT NULL COMMENT 'lavar mãos de prevenção',
  `result_symptom_level` VARCHAR(20) NULL COMMENT ' resultado níveis dos sintomas (\'NENHUM\', \'LEVE\', \'MÉDIO\', \'GRAVE\')',
  `vaccinated` TINYINT NULL DEFAULT 0 COMMENT 'tomou vacina',
  `reason_not_vaccinate` VARCHAR(100) NULL COMMENT 'porque não tomou vacina',
  `vaccine_doses` VARCHAR(100) NULL COMMENT ' doses de vacina (\'1 dose\', \'2 doses\', \'3 doses\', \'4 doses\', \'dose de reforço\')',
  `vaccine_type` VARCHAR(100) NULL COMMENT 'tipo da vacina (\'CORONAVAC\', \'ASTRAZENICA\', \'PFIZER E BIONTECH\', \'SPUTINIK V\', \'COVAZIN\')',
  `vaccinate_reaction` TINYINT NULL DEFAULT 0 COMMENT 'reação ao tomar vacina',
  `vaccinate_reaction_notes` VARCHAR(100) NULL COMMENT 'reação ao tomar vacina',
  `users_id` INT NOT NULL,
  `users_has_forms_responses_id` INT NOT NULL,
  PRIMARY KEY (`id`),
  INDEX `fk_forms_responses_users1_idx` (`users_id` ASC),
  INDEX `fk_forms_responses_users_has_forms_responses1_idx` (`users_has_forms_responses_id` ASC),
  CONSTRAINT `fk_forms_responses_users1`
    FOREIGN KEY (`users_id`)
    REFERENCES `aplicando_iot_covid`.`users` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION,
  CONSTRAINT `fk_forms_responses_users_has_forms_responses1`
    FOREIGN KEY (`users_has_forms_responses_id`)
    REFERENCES `aplicando_iot_covid`.`users_has_forms_responses` (`id`)
    ON DELETE NO ACTION
    ON UPDATE NO ACTION)
ENGINE = InnoDB;


SET SQL_MODE=@OLD_SQL_MODE;
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
