ALTER TABLE devices ADD COLUMN IF NOT EXISTS device_label TEXT, ADD COLUMN IF NOT EXISTS trust_status TEXT NOT NULL DEFAULT 'pending', ADD COLUMN IF NOT EXISTS revoked_at TIMESTAMPTZ, ADD COLUMN IF NOT EXISTS revoked_reason TEXT, ADD COLUMN IF NOT EXISTS updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(); CREATE UNIQUE INDEX IF NOT EXISTS idx_devices_user_fingerprint ON devices(user_id, device_fingerprint); CREATE TABLE IF NOT EXISTS auth_sessions ( id UUID PRIMARY KEY, user_id UUID NOT NULL REFERENCES users(id) ON DELETE CASCADE, device_id UUID NOT NULL REFERENCES devices(id) ON DELETE RESTRICT, refresh_token_hash TEXT NOT NULL, refresh_expires_at TIMESTAMPTZ NOT NULL, last_seen_at TIMESTAMPTZ, last_rotated_at TIMESTAMPTZ, revoked_at TIMESTAMPTZ, revoked_reason TEXT, created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(), updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW() ); CREATE INDEX IF NOT EXISTS idx_auth_sessions_user_id ON auth_sessions(user_id); CREATE INDEX IF NOT EXISTS idx_auth_sessions_device_id ON auth_sessions(device_id); CREATE INDEX IF NOT EXISTS idx_auth_sessions_revoked_at ON auth_sessions(revoked_at);