{-# LANGUAGE QuasiQuotes #-}

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

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

m20260122_has_link :: Query
m20260122_has_link :: Query
m20260122_has_link =
  [sql|
UPDATE chat_items SET msg_content_tag = 'text' WHERE msg_content_tag = 'liveText';

UPDATE chat_items SET msg_content_tag = CAST(msg_content_tag as TEXT) WHERE typeof(msg_content_tag) = 'blob';
  
ALTER TABLE chat_items ADD COLUMN has_link INTEGER NOT NULL DEFAULT 0;

UPDATE chat_items SET has_link = 1
WHERE msg_content_tag = 'link' OR item_text LIKE '%https://%';

CREATE INDEX idx_chat_items_groups_has_link_item_ts ON chat_items(user_id, group_id, has_link, item_ts);
CREATE INDEX idx_chat_items_contacts_has_link_created_at ON chat_items(user_id, contact_id, has_link, created_at);
CREATE INDEX idx_chat_items_note_folder_has_link_created_at ON chat_items(user_id, note_folder_id, has_link, created_at);
|]

down_m20260122_has_link :: Query
down_m20260122_has_link :: Query
down_m20260122_has_link =
  [sql|
DROP INDEX idx_chat_items_note_folder_has_link_created_at;
DROP INDEX idx_chat_items_contacts_has_link_created_at;
DROP INDEX idx_chat_items_groups_has_link_item_ts;

ALTER TABLE chat_items DROP COLUMN has_link;
|]