ALTER TABLE public.decisions
  ADD COLUMN IF NOT EXISTS score integer,
  ADD COLUMN IF NOT EXISTS action text,
  ADD COLUMN IF NOT EXISTS components jsonb NOT NULL DEFAULT '[]'::jsonb,
  ADD COLUMN IF NOT EXISTS scenarios jsonb NOT NULL DEFAULT '[]'::jsonb,
  ADD COLUMN IF NOT EXISTS assumptions text[] NOT NULL DEFAULT '{}'::text[],
  ADD COLUMN IF NOT EXISTS predicted_impact jsonb NOT NULL DEFAULT '{}'::jsonb,
  ADD COLUMN IF NOT EXISTS chosen_option text,
  ADD COLUMN IF NOT EXISTS status text NOT NULL DEFAULT 'open',
  ADD COLUMN IF NOT EXISTS actual_outcome text,
  ADD COLUMN IF NOT EXISTS reviewed_at timestamptz;

CREATE TABLE IF NOT EXISTS public.memory (
  id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
  user_id uuid NOT NULL REFERENCES auth.users(id) ON DELETE CASCADE,
  key text NOT NULL,
  label text NOT NULL,
  value text,
  notes text,
  created_at timestamptz NOT NULL DEFAULT now(),
  updated_at timestamptz NOT NULL DEFAULT now(),
  UNIQUE (user_id, key)
);

GRANT SELECT, INSERT, UPDATE, DELETE ON public.memory TO authenticated;
GRANT ALL ON public.memory TO service_role;

ALTER TABLE public.memory ENABLE ROW LEVEL SECURITY;

CREATE POLICY "own memory" ON public.memory FOR ALL USING (auth.uid() = user_id) WITH CHECK (auth.uid() = user_id);

CREATE TRIGGER trg_memory_updated BEFORE UPDATE ON public.memory
FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();