-- Disclaimer: Example SQL schema for a research supplement.
-- Review and adapt (database name, sizes, indexes) before production use.

-- 1) Create database (optional)
-- TODO: Replace YOUR_DATABASE_NAME_HERE with your actual DB name.
CREATE DATABASE IF NOT EXISTS YOUR_DATABASE_NAME_HERE
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

USE YOUR_DATABASE_NAME_HERE;

-- 2) Users table --------------------------------------------------------
-- Used for authentication (login.php, auth.php, create_admin.php, create_team_user.php)

CREATE TABLE users (
  id            INT UNSIGNED NOT NULL AUTO_INCREMENT,
  email         VARCHAR(190) NOT NULL,
  password_hash VARCHAR(255) NOT NULL,
  role          ENUM('user','admin') NOT NULL DEFAULT 'user',
  created_at    TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY uniq_email (email)
) ENGINE=InnoDB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_unicode_ci;

-- 3) Sites table --------------------------------------------------------
-- Logical sites/locations for dashboards (index.php, site.php, admin/site_edit.php)

CREATE TABLE sites (
  id              INT UNSIGNED NOT NULL AUTO_INCREMENT,
  name            VARCHAR(190) NOT NULL,
  slug            VARCHAR(190) NOT NULL,
  background_path VARCHAR(255) DEFAULT NULL,
  created_at      TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  UNIQUE KEY uniq_slug (slug)
) ENGINE=InnoDB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_unicode_ci;

-- 4) Nodes table --------------------------------------------------------
-- Individual devices (EVE-NODE) belonging to a site (site.php, api/data.php, download.php, admin/site_edit.php)

CREATE TABLE nodes (
  id          INT UNSIGNED NOT NULL AUTO_INCREMENT,
  site_id     INT UNSIGNED NOT NULL,
  name        VARCHAR(190) NOT NULL,
  device_id   VARCHAR(64) NOT NULL,
  device_type VARCHAR(64) DEFAULT NULL,
  created_at  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (id),
  KEY idx_site_id (site_id),
  UNIQUE KEY uniq_device_id (device_id),
  CONSTRAINT fk_nodes_site
    FOREIGN KEY (site_id) REFERENCES sites(id)
    ON DELETE CASCADE
    ON UPDATE CASCADE
) ENGINE=InnoDB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_unicode_ci;

-- 5) Sensor data table --------------------------------------------------
-- Time series from EVE-NODE (esp32_data.php, api/data.php, download.php, dashboard.php)

CREATE TABLE sensor_data (
  id         BIGINT UNSIGNED NOT NULL AUTO_INCREMENT,
  timestamp  TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
  device_id  VARCHAR(64) NOT NULL,
  sht_temp   DOUBLE DEFAULT NULL,
  humidity   DOUBLE DEFAULT NULL,
  bmp_temp   DOUBLE DEFAULT NULL,
  pressure   DOUBLE DEFAULT NULL,
  par        DOUBLE DEFAULT NULL,
  battery    DOUBLE DEFAULT NULL,
  PRIMARY KEY (id),
  KEY idx_device_time (device_id, timestamp),
  KEY idx_time (timestamp)
) ENGINE=InnoDB
  DEFAULT CHARSET = utf8mb4
  COLLATE = utf8mb4_unicode_ci;

-- Notes:
-- - CO2 and methane columns are intentionally omitted to match the cleaned PHP code.
-- - Only EVE-NODE devices are assumed; device_type is kept generic for future extensions.
-- - The esp32_data.php ingestion script relies on timestamp having a DEFAULT CURRENT_TIMESTAMP.
