220_clear_non_grok_video_generation_config.sql 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. -- Videos are Grok/xAI-only. Clear stale video pricing from non-Grok groups.
  2. -- Columns match migrations 170/217 (video_price_* / video_model_prices), not a
  3. -- separate allow_video_generation flag which was never applied on this branch.
  4. -- Snapshot before clearing. The UPDATE below is irreversible, and an operator
  5. -- who deliberately priced video on a non-Grok group would otherwise lose that
  6. -- configuration with no way to recover it. CREATE TABLE IF NOT EXISTS ... AS
  7. -- SELECT is a no-op on re-run, so this stays idempotent.
  8. CREATE TABLE IF NOT EXISTS groups_video_price_backup_220 AS
  9. SELECT id AS group_id,
  10. platform,
  11. video_price_480p,
  12. video_price_720p,
  13. video_price_1080p,
  14. video_model_prices,
  15. now() AS backed_up_at
  16. FROM groups
  17. WHERE platform IS DISTINCT FROM 'grok'
  18. AND platform IS DISTINCT FROM 'composite'
  19. AND (
  20. video_price_480p IS NOT NULL
  21. OR video_price_720p IS NOT NULL
  22. OR video_price_1080p IS NOT NULL
  23. OR video_model_prices IS NOT NULL
  24. );
  25. COMMENT ON TABLE groups_video_price_backup_220 IS
  26. '迁移 220 清空非 Grok/非 composite 分组视频价前的快照。composite 可能路由到 Grok 账号,予以保留。确认无需回滚后可安全 DROP;回滚方式:UPDATE groups g SET video_price_480p = b.video_price_480p, ... FROM groups_video_price_backup_220 b WHERE g.id = b.group_id';
  27. UPDATE groups
  28. SET video_price_480p = NULL,
  29. video_price_720p = NULL,
  30. video_price_1080p = NULL,
  31. video_model_prices = NULL
  32. WHERE platform IS DISTINCT FROM 'grok'
  33. AND platform IS DISTINCT FROM 'composite'
  34. AND (
  35. video_price_480p IS NOT NULL
  36. OR video_price_720p IS NOT NULL
  37. OR video_price_1080p IS NOT NULL
  38. OR video_model_prices IS NOT NULL
  39. );