Files
GameTime/server/migrations/0002_share_packs.sql
Blomios 917777e18b chore(wip): consolidation intermédiaire multi-tickets (sprints Statistiques, UI, Bug resolution, Serveur-client)
Regroupe l'état de travail en cours réalisé dans un même worktree sur
plusieurs tickets/sprints (#85, #136, #145, #155-160, #162-164),
mélangeant des tickets QA et inProgress. Ne constitue pas une feature
terminée : commit de sauvegarde avant triage/split par ticket en
branches feature/* dédiées. Exclut les dossiers d'environnement de
build locaux et le heap dump parasite (.gitignore mis à jour).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-28 16:48:54 +02:00

43 lines
1.1 KiB
SQL

ALTER TABLE shares
ADD COLUMN IF NOT EXISTS share_kind text NOT NULL DEFAULT 'single';
ALTER TABLE shares
ADD COLUMN IF NOT EXISTS pack_name text;
ALTER TABLE shares
ALTER COLUMN resource_type DROP NOT NULL;
ALTER TABLE shares
DROP CONSTRAINT IF EXISTS shares_resource_type_check;
ALTER TABLE shares
DROP CONSTRAINT IF EXISTS shares_kind_check;
ALTER TABLE shares
DROP CONSTRAINT IF EXISTS shares_shape_check;
ALTER TABLE shares
ADD CONSTRAINT shares_resource_type_check CHECK (
resource_type IS NULL OR resource_type IN ('program', 'workoutTemplate')
);
ALTER TABLE shares
ADD CONSTRAINT shares_kind_check CHECK (share_kind IN ('single', 'pack'));
ALTER TABLE shares
ADD CONSTRAINT shares_shape_check CHECK (
(
share_kind = 'single'
AND resource_type IN ('program', 'workoutTemplate')
AND pack_name IS NULL
)
OR
(
share_kind = 'pack'
AND resource_type IS NULL
AND length(trim(pack_name)) > 0
AND COALESCE(jsonb_typeof(payload_json -> 'items') = 'array', false)
AND jsonb_array_length(payload_json -> 'items') > 0
)
);