75 lines
2.7 KiB
SQL
75 lines
2.7 KiB
SQL
-- 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); |