CREATE TABLE controllers ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, uid BLOB NOT NULL UNIQUE, name VARCHAR(128) NOT NULL, relay_count INTEGER NOT NULL, active BOOLEAN NOT NULL DEFAULT false ); CREATE TABLE relays ( id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, name VARCHAR(128) NOT NULL, 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 BLOB NOT NULL ); 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) NOT NULL ); 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 NOT NULL REFERENCES relays (id) ON DELETE CASCADE, schedule_id INTEGER NOT NULL REFERENCES schedules (id) ON DELETE CASCADE, weekday SMALLINT NOT NULL );