···11+ALTER TABLE users ALTER COLUMN password_hash DROP NOT NULL;
22+ALTER TABLE users ADD COLUMN password_required BOOLEAN NOT NULL DEFAULT TRUE;
33+ALTER TABLE users ADD COLUMN recovery_token TEXT;
44+ALTER TABLE users ADD COLUMN recovery_token_expires_at TIMESTAMPTZ;
55+CREATE INDEX IF NOT EXISTS idx_users_recovery_token ON users(recovery_token) WHERE recovery_token IS NOT NULL;
+4
migrations/20251226_trusted_devices.sql
···11+ALTER TABLE oauth_device ADD COLUMN trusted_at TIMESTAMPTZ;
22+ALTER TABLE oauth_device ADD COLUMN trusted_until TIMESTAMPTZ;
33+ALTER TABLE oauth_device ADD COLUMN friendly_name TEXT;
44+CREATE INDEX IF NOT EXISTS idx_oauth_device_trusted ON oauth_device(trusted_until) WHERE trusted_until IS NOT NULL;