CREATE TABLE IF NOT EXISTS device_current_state ( device_id TEXT PRIMARY KEY, payload JSONB NOT NULL DEFAULT '{}'::jsonb, last_seen TIMESTAMPTZ NOT NULL, updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE IF NOT EXISTS devices ( camera_id TEXT PRIMARY KEY, name TEXT NOT NULL, location TEXT NOT NULL, model TEXT, notes TEXT, is_active BOOLEAN NOT NULL DEFAULT TRUE, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE IF NOT EXISTS device_status_snapshots ( id BIGSERIAL PRIMARY KEY, device_id TEXT NOT NULL, payload JSONB NOT NULL DEFAULT '{}'::jsonb, last_seen TIMESTAMPTZ NOT NULL, changed_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE IF NOT EXISTS camera_lending ( camera_id TEXT PRIMARY KEY, borrower TEXT NOT NULL, due_date TIMESTAMPTZ NOT NULL, purpose TEXT, lent_at TIMESTAMPTZ NOT NULL, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE TABLE IF NOT EXISTS camera_audit_logs ( id BIGSERIAL PRIMARY KEY, camera_id TEXT NOT NULL, action TEXT NOT NULL, actor TEXT NOT NULL, metadata JSONB NOT NULL DEFAULT '{}'::jsonb, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW() );