CREATE TABLE controllers ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, uid VARCHAR(36) NOT NULL UNIQUE, name VARCHAR(128), ip VARCHAR(16), port INTEGER, relay_count INTEGER, active BOOLEAN NOT NULL ); CREATE TABLE relays ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(128), number INTEGER NOT NULL, controller_id INTEGER NOT NULL REFERENCES controllers (id) ON DELETE CASCADE ); CREATE TABLE schedules ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, uid BLOB NOT NULL UNIQUE, name VARCHAR(128) NOT NULL, periods TEXT NOT NULL ); --INSERT INTO schedules (uid, name, periods) VALUES (x'6f666600000000000000000000000000', 'off', x'00'); --INSERT INTO schedules (uid, name, periods) VALUES (x'6f6e0000000000000000000000000000', 'on', x'010000009F05'); INSERT INTO schedules (uid, name, periods) VALUES (x'00', 'off', '00'); INSERT INTO schedules (uid, name, periods) VALUES (x'01', 'on', '010000009F05'); CREATE TABLE tags ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, tag VARCHAR(128) NOT NULL UNIQUE ); CREATE TABLE junction_tag ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, tag_id INTEGER NOT NULL REFERENCES tags (id) ON DELETE CASCADE, relay_id INTEGER REFERENCES relays (id) ON DELETE CASCADE, schedule_id INTEGER REFERENCES schedules (id) ON DELETE CASCADE ); CREATE TABLE junction_relay_schedule ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, weekday SMALLINT NOT NULL, relay_id INTEGER REFERENCES relays (id) ON DELETE CASCADE, schedule_id INTEGER DEFAULT 1 REFERENCES schedules (id) ON DELETE SET DEFAULT ); CREATE TABLE macros ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, uid VARCHAR(36) NOT NULL UNIQUE, name VARCHAR(128) ); CREATE TABLE macro_actions ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, macro_id INTEGER NOT NULL REFERENCES macros (id) ON DELETE CASCADE, relay_id INTEGER REFERENCES relays (id) ON DELETE CASCADE, schedule_id INTEGER REFERENCES schedules (id) ON DELETE CASCADE, weekday SMALLINT NOT NULL );