CREATE TABLE utenti (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(50) UNIQUE NOT NULL,
    password VARCHAR(255) NOT NULL
);

CREATE TABLE alveari (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    titolare VARCHAR(100) NOT NULL,
    posizione VARCHAR(100) NOT NULL,
    colore_regina VARCHAR(50) DEFAULT NULL,
    eta_regina INT DEFAULT NULL,
    popolazione INT DEFAULT NULL CHECK (popolazione >= 1 AND popolazione <= 5),
    scorte INT DEFAULT NULL CHECK (scorte >= 1 AND scorte <= 5),
    numero_telai_nido INT DEFAULT NULL CHECK (numero_telai_nido >= 1 AND numero_telai_nido <= 10),
	numero_melari int(11) DEFAULT NULL CHECK (numero_melari >= 1 AND numero_melari <= 5),
    colore varchar(7) DEFAULT NULL,
	nutritore TINYINT(1) NOT NULL DEFAULT '0'
);

CREATE TABLE eventi (
    id INT AUTO_INCREMENT PRIMARY KEY,
    alveare_id INT NOT NULL,
    data_evento DATETIME NOT NULL,
    tipo_evento VARCHAR(50) NOT NULL,
    nutriente VARCHAR(100) DEFAULT NULL,
    quantita DOUBLE DEFAULT NULL,
    da VARCHAR(100) DEFAULT NULL,
    a VARCHAR(100) DEFAULT NULL,
    tipo_trattamento VARCHAR(100) DEFAULT NULL,
    tempo_trattamento VARCHAR(100) DEFAULT NULL,
    fioritura VARCHAR(100) DEFAULT NULL,
    numero INT DEFAULT NULL,
    tipo VARCHAR(50) DEFAULT NULL,
    note TEXT DEFAULT NULL,
	foto TEXT DEFAULT NULL,
	popolazione INT DEFAULT NULL CHECK (popolazione >= 1 AND popolazione <= 5),
    scorte INT DEFAULT NULL CHECK (scorte >= 1 AND scorte <= 5),
    numero_telai_nido INT DEFAULT NULL CHECK (numero_telai_nido >= 1 AND numero_telai_nido <= 10),
	percentuale_melario INT DEFAULT NULL CHECK (percentuale_melario >= 0 AND percentuale_melario <= 100)
    FOREIGN KEY (alveare_id) REFERENCES alveari(id) ON DELETE CASCADE
);

CREATE TABLE alveari_storico (
    id INT AUTO_INCREMENT PRIMARY KEY,
    nome VARCHAR(100) NOT NULL,
    titolare VARCHAR(100) NOT NULL,
    posizione VARCHAR(100) NOT NULL,
    colore_regina VARCHAR(50) DEFAULT NULL,
    eta_regina INT DEFAULT NULL,
    popolazione INT DEFAULT NULL CHECK (popolazione >= 1 AND popolazione <= 5),
    scorte INT DEFAULT NULL CHECK (scorte >= 1 AND scorte <= 5),
    numero_telai_nido INT DEFAULT NULL CHECK (numero_telai_nido >= 1 AND numero_telai_nido <= 10),
	numero_melari int(11) DEFAULT NULL CHECK (numero_melari >= 1 AND numero_melari <= 5),
    colore varchar(7) DEFAULT NULL,
	nutritore TINYINT(1) NOT NULL DEFAULT '0',
	data_stor DATETIME NOT NULL,
	id_alveare INT NOT NULL
);

CREATE TABLE raccolta (
  id INT AUTO_INCREMENT PRIMARY KEY,
  data datetime NOT NULL,
  tipo varchar(50) NOT NULL,
  fioritura varchar(100) DEFAULT NULL,
  grammi DOUBLE DEFAULT NULL,
  note text DEFAULT NULL
);

CREATE TABLE trattamenti (
    id INT AUTO_INCREMENT PRIMARY KEY,
    data DATETIME NOT NULL,
    tipo_prodotto VARCHAR(100) NOT NULL,
    nome_prodotto VARCHAR(200) NOT NULL,
    quantita DECIMAL(10,2) NOT NULL,
    unita_misura VARCHAR(50) NOT NULL,
    note TEXT,
    documento VARCHAR(255),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);