Files
Enterprise-Knowledge-Base/migrations/versioned/000049_user_preferences.up.sql
T
wizardchen 68ac7fb973 feat(user-preferences): implement user preferences management with backend support
Added functionality for managing user preferences, including the ability to update preferences via a new API endpoint. The preferences are now stored server-side, allowing for synchronization across devices. Updated relevant components to handle user preferences, including the UserMenu and settings views. Enhanced internationalization support for error messages related to preference updates.
2026-05-18 17:28:58 +08:00

25 lines
1.2 KiB
SQL

-- Migration: 000049_user_preferences
-- Adds a user-scoped JSON preferences blob so per-user UI toggles
-- (memory feature, future preferences) can be persisted server-side and
-- sync across devices/browsers. Previously the only carrier for such
-- toggles was the browser's localStorage, which intentionally does NOT
-- cross devices — switching machines silently reset every preference.
--
-- A single jsonb column keeps the schema flat: new keys can be added by
-- writing through the existing PUT /auth/me/preferences endpoint, no DDL
-- per knob. Server reads/writes are partial updates (key-merge), so an
-- old client that only knows about a subset of keys can't accidentally
-- wipe newer ones it doesn't understand.
--
-- Defaults to '{}' (NOT NULL) so existing rows behave as "no preference
-- set yet" without forcing every read path to handle NULL.
DO $$ BEGIN RAISE NOTICE '[Migration 000049] Adding users.preferences column...'; END $$;
ALTER TABLE users
ADD COLUMN IF NOT EXISTS preferences JSONB NOT NULL DEFAULT '{}'::jsonb;
COMMENT ON COLUMN users.preferences IS 'Per-user JSON preferences (memory toggle, future UI knobs)';
DO $$ BEGIN RAISE NOTICE '[Migration 000049] Done.'; END $$;