diff --git a/ai-improved.sql b/ai-improved.sql new file mode 100644 index 0000000..fd0bfb7 --- /dev/null +++ b/ai-improved.sql @@ -0,0 +1,75 @@ +-- Devices +CREATE TABLE devices ( + id BINARY(16) NOT NULL PRIMARY KEY, + name VARCHAR(255) NOT NULL, + description TEXT NOT NULL, + location VARCHAR(255) NOT NULL, + status_id SMALLINT UNSIGNED NOT NULL, + created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), + updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4; + +CREATE TABLE device_statuses ( + id SMALLINT UNSIGNED PRIMARY KEY, + name VARCHAR(20) NOT NULL UNIQUE +); + +INSERT INTO device_statuses (id, name) VALUES +(1,'ok'),(2,'pending'),(3,'lost'),(4,'disabled'); + +CREATE TABLE data_types ( + id SMALLINT UNSIGNED PRIMARY KEY, + name VARCHAR(20) NOT NULL UNIQUE +); +INSERT INTO data_types (id, name) VALUES (1,'bool'),(2,'float'); + +-- Sensors +CREATE TABLE sensors ( + id BINARY(16) NOT NULL PRIMARY KEY, + device_id BINARY(16) NOT NULL, + name VARCHAR(255) NOT NULL, + type VARCHAR(255) NOT NULL, + data_type_id SMALLINT UNSIGNED NOT NULL, + created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), + updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE, + FOREIGN KEY (data_type_id) REFERENCES data_types(id) +); + + +-- Sensor readings +CREATE TABLE sensor_readings ( + id BIGINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, + sensor_id BINARY(16) NOT NULL, + value DOUBLE NOT NULL, + value_at DATETIME(6) NOT NULL, + INDEX idx_sensor_time (sensor_id, value_at), + FOREIGN KEY (sensor_id) REFERENCES sensors(id) ON DELETE CASCADE +) ENGINE=InnoDB; + +-- Actors (actuators) +CREATE TABLE actors ( + id BINARY(16) NOT NULL PRIMARY KEY, + device_id BINARY(16) NOT NULL, + name VARCHAR(255) NOT NULL, + type VARCHAR(255) NOT NULL, + data_type_id SMALLINT UNSIGNED NOT NULL, + created_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6), + updated_at DATETIME(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6) ON UPDATE CURRENT_TIMESTAMP(6), + FOREIGN KEY (device_id) REFERENCES devices(id) ON DELETE CASCADE, + FOREIGN KEY (data_type_id) REFERENCES data_types(id) +); + +-- Insert test device +INSERT INTO devices (id, name, description, location, status_id) +VALUES (UUID_TO_BIN(UUID()), 'TestDevice', 'Test device for development', 'Lab', 1); + +SET @device_id = (SELECT id FROM devices WHERE name = 'TestDevice' LIMIT 1); + +-- Insert bool sensor +INSERT INTO sensors (id, device_id, name, type, data_type_id) +VALUES (UUID_TO_BIN(UUID()), @device_id, 'TestSensor', 'bool_sensor', 1); + +-- Insert bool actor +INSERT INTO actors (id, device_id, name, type, data_type_id) +VALUES (UUID_TO_BIN(UUID()), @device_id, 'TestActor', 'bool_actor', 1); \ No newline at end of file