modbus-logger/migrations/001-init.sql
2023-10-26 23:03:09 +03:00

71 lines
2.5 KiB
SQL

--------------------------------------------------------------------------------
-- Up
--------------------------------------------------------------------------------
CREATE TABLE IF NOT EXISTS "app_config" (
"id" INTEGER,
"mb_connection_type" VARCHAR(3) NOT NULL DEFAULT "RTU" CHECK(mb_connection_type IN ('TCP','RTU')),
"mb_tcp_ip" VARCHAR(15) NOT NULL DEFAULT "127.0.0.1",
"mb_tcp_port" INTEGER NOT NULL DEFAULT 502,
"mb_rtu_path" VARCHAR(10) NOT NULL DEFAULT "",
"mb_rtu_baud" INTEGER NOT NULL DEFAULT 9600,
"mb_rtu_parity" VARCHAR(5) NOT NULL DEFAULT "none" CHECK(mb_rtu_parity IN ("even", "odd", "none")),
"mb_rtu_data_bits" INTEGER NOT NULL DEFAULT 8,
"mb_rtu_stop_bits" INTEGER NOT NULL DEFAULT 1,
"log_interval_ms" INTEGER DEFAULT 1000 NOT NULL,
CONSTRAINT "id_unique" CHECK(id=0),
CONSTRAINT "min_interval_check" CHECK(log_interval_ms >= 1000)
PRIMARY KEY("id")
);
CREATE TABLE IF NOT EXISTS "modbus_slaves" (
"id" INTEGER CHECK (id >= 1 AND id <= 255),
"name" VARCHAR(256) NOT NULL,
-- Holding register
"g_display_reg_addr" INTEGER CHECK(g_display_reg_addr >= 0 AND g_display_reg_addr <= 65534),
-- Use 1 or 2 bytes
"g_display_reg_format" INTEGER CHECK(g_display_reg_format IN(16, 32)),
"g_y_label" VARCHAR(40),
"is_logging" BOOLEAN NOT NULL,
PRIMARY KEY("id")
);
CREATE TABLE IF NOT EXISTS "display_values" (
"id" INTEGER,
"name" VARCHAR(32),
"slave_id" INTEGER NOT NULL,
"reg_addr" INTEGER DEFAULT 0 NOT NULL CHECK(reg_addr >= 0 AND reg_addr <= 65534),
PRIMARY KEY("id"),
FOREIGN KEY("slave_id") REFERENCES modbus_slaves("id") ON DELETE CASCADE
);
-- CREATE TABLE IF NOT EXISTS "modbus_log" (
-- "id" INTEGER,
-- "date" DATE NOT NULL,
-- "slave_id" INTEGER NOT NULL,
-- -- JSON Format:
-- -- {
-- -- graph: [{ reg_addr: 1 value: 4 }],
-- -- display_values: [{ reg_addr: 1, name: "CV1" }]
-- -- }
-- "data" TEXT NOT NULL,
-- PRIMARY KEY("id"),
-- FOREIGN KEY("slave_id") REFERENCES modbus_slaves("id") ON DELETE CASCADE
-- )
INSERT INTO "modbus_slaves" (
"id", "name", "g_display_reg_addr", "g_display_reg_format", "g_y_label", "is_logging"
) VALUES
(1, "Device #1", 1, 16, "Label 1", 1),
(2, "Device #2", 2, 32, "Label 2", 1),
(3, "Device #3", 8, 16, "Label 3", 0),
(4, "Device #4", NULL, NULL, "Label 4", 0);
--------------------------------------------------------------------------------
-- Down
--------------------------------------------------------------------------------
DROP TABLE app_config;
DROP TABLE modbus_slaves;
DROP TABLE display_values;