-- +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)
);
-- +goose StatementEnd

-- +goose Down
-- +goose StatementBegin
DROP TABLE lock_log;
DROP TABLE lock_code_slots;
DROP TABLE locks;
-- +goose StatementEnd
