{-# LANGUAGE QuasiQuotes #-}

module Simplex.Chat.Store.SQLite.Migrations.M20250122_chat_items_include_in_history where

import Database.SQLite.Simple (Query)
import Database.SQLite.Simple.QQ (sql)

m20250122_chat_items_include_in_history :: Query
m20250122_chat_items_include_in_history :: Query
m20250122_chat_items_include_in_history =
  [sql|
ALTER TABLE chat_items ADD COLUMN include_in_history INTEGER NOT NULL DEFAULT 0;

CREATE INDEX idx_chat_items_groups_history ON chat_items(
  user_id,
  group_id,
  include_in_history,
  item_deleted,
  item_ts,
  chat_item_id
);

UPDATE chat_items
SET include_in_history = 1
WHERE group_id IS NOT NULL
  AND item_content_tag IN ('rcvMsgContent', 'sndMsgContent')
  AND msg_content_tag NOT IN ('report');

CREATE INDEX idx_group_snd_item_statuses_chat_item_id_group_member_id ON group_snd_item_statuses(chat_item_id, group_member_id);
|]

down_m20250122_chat_items_include_in_history :: Query
down_m20250122_chat_items_include_in_history :: Query
down_m20250122_chat_items_include_in_history =
  [sql|
DROP INDEX idx_group_snd_item_statuses_chat_item_id_group_member_id;

DROP INDEX idx_chat_items_groups_history;

ALTER TABLE chat_items DROP COLUMN include_in_history;
|]