-- +goose Up -- +goose StatementBegin PRAGMA foreign_keys = ON; CREATE TABLE locks ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, zwave_device_id INTEGER NOT NULL UNIQUE ); CREATE TABLE lock_code_slots ( id INTEGER PRIMARY KEY, lock INTEGER NOT NULL REFERENCES locks(id), code TEXT NOT NULL, slot INTEGER NOT NULL, name TEXT NOT NULL, enabled BOOLEAN NOT NULL DEFAULT 0, UNIQUE (lock, slot) ); CREATE TABLE lock_log ( lock INTEGER NOT NULL REFERENCES locks(id), timestamp DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, state TEXT NOT NULL, code INTEGER REFERENCES lock_code_slots(id), issued_code INTEGER REFERENCES issued_codes(id) ); CREATE TABLE issued_codes ( id INTEGER PRIMARY KEY, name TEXT, code TEXT UNIQUE NOT NULL, start DATETIME, end DATETIME ); CREATE TABLE issued_code_slots ( issued_code REFERENCES issued_codes(id), lock REFERENCES locks(id), slot REFERENCES lock_code_slots(id), UNIQUE (issued_code, lock) ); -- +goose StatementEnd -- +goose Down -- +goose StatementBegin DROP TABLE issued_code_slots; DROP TABLE issued_codes; DROP TABLE lock_log; DROP TABLE lock_code_slots; DROP TABLE locks; -- +goose StatementEnd