status-go/protocol/migrations/sqlite
Andrea Maria Piana 23f71c1125 Fix encryption id && rekey with a single message
This commit changes the format of the encryption id to be based off 3
things:

1) The group id
2) The timestamp
3) The actual key

Previously this was solely based on the timestamp and the group id, but
this might lead to conflicts. Moreover the format of the key was an
uint32 and so it would wrap periodically.

The migration is a bit tricky, so first we cleared the cache of keys,
that's easier than migrating, and second we set the new field hash_id to
the concatenation of group_id / key_id.
This might lead on some duplication in case keys are re-received, but it
should not have an impact on the correctness of the code.

I have added 2 tests covering compatibility between old/new clients, as
this should not be a breaking change.

It also adds a new message to rekey in a single go, instead of having to
send multiple messages
2023-10-24 20:48:54 +01:00
..
000001_init.down.db.sql Add Commands (#1731) 2020-01-10 19:59:01 +01:00
000001_init.up.db.sql Add Commands (#1731) 2020-01-10 19:59:01 +01:00
000002_add_last_ens_clock_value.up.sql Verify ENS in the background (#1824) 2020-02-05 11:09:33 +01:00
1586358095_add_replace.up.sql Add replies to messages 2020-04-16 15:51:28 +02:00
1588665364_add_image_data.up.sql Create different index for filtering 2020-06-08 10:02:31 +02:00
1589365189_add_pow_target.up.sql Create different index for filtering 2020-06-08 10:02:31 +02:00
1591277220_add_index_messages.up.sql Create different index for filtering 2020-06-08 10:02:31 +02:00
1593087212_add_mute_chat_and_raw_message_fields.up.sql Polish up and address review feedback 2020-07-27 08:51:28 +02:00
1595862781_add_audio_data.up.sql add audio duration 2020-07-27 17:15:10 +02:00
1595865249_create_emoji_reactions_table.up.sql Use local chat-id for matching messages 2020-07-30 20:20:59 +02:00
1596805115_create_group_chat_invitations_table.up.sql group chat invitation 2020-09-07 12:15:58 +02:00
1597322655_add_invitation_admin_chat_field.up.sql group chat invitation 2020-09-07 12:15:58 +02:00
1597757544_add_nickname.up.sql [#11046] Add local contact names 2020-09-07 11:34:06 +02:00
1598955122_add_mentions.up.sql Add parsing and storing of mentions 2020-09-09 21:22:07 +02:00
1599641390_add_emoji_reactions_index.up.sql Add index to emoji reactions 2020-09-09 15:02:54 +02:00
1599720851_add_seen_index_remove_long_messages.up.sql Force migration if dirty 2020-10-01 13:47:59 +02:00
1603198582_add_profile_chat_field.up.sql profile status updates 2020-10-27 14:56:35 +01:00
1603816533_add_links.up.sql Link previews support (#2059) 2020-10-27 19:35:28 +02:00
1603888149_create_chat_identity_last_published_table.up.sql remove photo path in favor of images in contact 2020-12-17 14:10:00 +01:00
1605075346_add_communities.up.sql Fix communities migration 2021-01-08 08:43:16 +01:00
1610117927_add_message_cache.up.sql Cache waku messages 2021-01-18 09:38:27 +01:00
1610959908_add_dont_wrap_to_raw_messages.up.sql Skip wrapping emojis in private group chats 2021-01-26 09:39:47 +01:00
1610960912_add_send_on_personal_topic.up.sql Use personal topic for push notification registration 2021-01-26 09:39:53 +01:00
1612870480_add_datasync_id.up.sql Listen for delivered messages (#2150) 2021-02-23 17:47:45 +02:00
1614152139_add_communities_request_to_join.up.sql Request/Decline access to communities 2021-02-26 15:35:43 +01:00
1615374373_add_confirmations.up.sql Expand confirmations to private group chat messages 2021-03-16 13:41:14 +01:00
1617694931_add_notification_center.up.sql Add activity center & messages from contacts only 2021-04-16 20:42:40 +02:00
1618923660_create_pin_messages.up.sql add PinMessage and PinnedMessage (#2180) 2021-05-14 23:22:50 +02:00
1619094007_add_joined_chat_field.up.sql feat: introduce new `joined` property in `Chat` struct 2021-05-18 11:29:03 +02:00
1619099821_add_last_synced_field.up.sql Add mailserver logic 2021-05-21 07:22:58 +02:00
1621933219_add_mentioned.up.sql Add mentioned field 2021-05-26 08:33:38 +02:00
1622010048_add_unviewed_mentions_count.up.sql Add unviewed mentions count 2021-05-28 13:05:23 +02:00
1622061278_add_message_activity_center_notification_field.up.sql Add mention notification to activity center (#2239) 2021-05-29 14:05:25 -03:00
1622464518_set_synced_to_from.up.sql Set synced_to/from to 24 hours ago 2021-06-01 12:59:52 +02:00
1622464519_add_chat_description.up.sql Fix order of migration 2021-06-02 14:16:29 +02:00
1622622253_add_pinned_by_to_pin_messages.up.sql add PinnedBy to PinnedMessage (#2250) 2021-06-08 17:23:32 +02:00
1623938329_add_author_activity_center_notification_field.up.sql feat: add author to notification in activity center (#2259) 2021-06-17 11:08:28 -04:00
1623938330_add_edit_messages.up.sql Handle edit first & then message 2021-06-29 13:15:15 +02:00
1624978434_add_muted_community.up.sql feat(community): add muted to community and function to set it (#2271) 2021-06-30 09:29:43 -04:00
1625018910_add_repply_message_activity_center_notification_field.up.sql Add reply message to activity center notification of type reply (#2272) 2021-07-15 17:21:44 -03:00
1625762506_add_deleted_messages.up.sql Delete messages (#2279) 2021-07-26 17:06:32 -04:00
1627388946_add_communities_synced_at.up.sql Sync Communities (#2253) 2021-08-06 16:40:23 +01:00
1628280060_create-usermessages-index.sql add index on user_messages to speed-up marking all messages as read (#2304) 2021-08-11 08:26:15 -04:00
1632303896_modify_contacts_table.up.sql Add HasAddedUs field 2021-10-04 12:19:15 +02:00
1633349838_add_emoji_column_in_chats.up.sql Storing emoji values for Custom Emoji Thumbnails for Community Channels (#2366) 2021-10-04 18:32:25 +05:30
1634831235_add_highlight_column_in_chats.up.sql Store Highlight field for identify new chats (#2384) 2021-10-21 22:34:56 +05:30
1634896007_add_last_updated_locally_and_removed.up.sql Backup removed & added by them contacts 2021-11-15 18:53:35 +00:00
1635840039_add_clock_read_at_column_in_chats.up.sql [pairing] Sync read messages 2021-11-02 10:02:27 +02:00
1637852321_add_received_invitation_admin_column_in_chats.up.sql Decline pending group invitations from user, when user is banned (#2437) 2021-11-25 20:51:42 +05:30
1645034601_display_name.up.sql feat: display name 2022-03-14 13:48:34 -04:00
1645034602_add_mutual_contact_request.up.sql Initial support for mutual contact requests 2022-05-31 09:12:36 +01:00
1650373957_add_contact_request_state.up.sql Initial support for mutual contact requests 2022-05-31 09:12:36 +01:00
1656958989_contact_verification.up.sql feat: contact verification request (#2586) 2022-07-05 15:49:44 -04:00
1658236268_add_discord_message_authors_table.up.sql feat: introduce `discord_message_authors` persistence APIs 2022-08-10 10:13:55 +02:00
1659619997_add_discord_messages_table.up.sql feat: add `discord_messages` table and persistence APIs 2022-08-11 10:49:23 +02:00
1660226788_create_chat_identity_social_links.up.sql feat: add social links 2022-08-16 14:29:00 +02:00
1660226789_add_walletconnectsessions_table.up.sql Implement wallet connect session CRUD API 2022-08-19 12:32:00 +01:00
1661242854_add_communities_requests_to_leave.up.sql feat: introduce and distribute RequestToLeave community 2022-08-26 11:25:33 +02:00
1662044232_add_chat_image.up.sql fix: change migration timestamp of group chat add image feature 2022-09-01 17:55:46 +02:00
1662106895_add_chat_first_message_timestamp.up.sql feat: add and distribute `chatIdentity.FirstMessageTimestamp` 2022-09-09 08:59:39 +02:00
1662723928_add_discord_author_image_fields.up.sql feat(message_persistence): add discord message author image payload fields 2022-09-19 13:47:16 +02:00
1664195977_add_deleted_for_mes.up.sql feat: delete for me (#2866) 2022-09-28 19:42:17 +08:00
1664367420_add_discord_attachments_table.up.sql feat: add `DiscordMessageAttachment` types and APIs 2022-09-29 11:38:29 +02:00
1665079662_add_spectated_column_in_communities.up.sql feat: add `SpectateCommunity` api 2022-10-06 21:21:37 +02:00
1665479047_add_community_id_in_notifications.up.sql feat(ActivityCenter): Add community membership AC notifications (#2886) 2022-10-26 02:06:20 +04:00
1665484435_add_encrypted_messages.up.sql Send all encryption keys 2022-10-20 12:19:44 +01:00
1665560200_add_contact_verification_individual.up.sql Handle identity verifications 2022-10-26 17:19:44 +01:00
1670921937_add_album_id.up.sql Images Album (#3021) 2022-12-14 16:25:45 +04:00
1673373000_add_replied.up.sql feat: make replies act as mentions 2023-01-10 13:39:57 -05:00
1673428910_add_image_width_height.up.sql Image width height (#3061) 2023-01-12 13:43:14 +04:00
1674210659_add_contact_request_local_clock.up.sql Fix broken migrations 2023-02-01 18:31:32 +00:00
1675212323_add_deleted_by.up.sql feat: add deleted by xxx support (#3077) 2023-02-01 08:57:35 +08:00
1675247084_add_activity_center_states.up.sql feat: Add seen/unseen activity center setting (#3148) 2023-02-17 14:08:08 +04:00
1675272329_fix_protocol_migration.up.sql Fix broken migrations 2023-02-01 18:31:32 +00:00
1676998418_fix_activity_center_migration.up.sql Add test for everyone tag & fix migration order 2023-02-24 10:18:26 +00:00
1677278861_add_deleted_column_to_activity_center_notifications_table.up.sql Support soft deletion for activity center notifications (#3201) 2023-02-24 20:47:04 -03:00
1677486338_add_community_tokens_table.up.sql feat(CommunityTokens): Keep community token details in database 2023-02-27 10:37:54 +01:00
1678292329_add_collapsed_categories.up.sql Add collapsed community categories 2023-03-14 17:13:21 +00:00
1678800760_add_index_to_raw_messages.up.sql Add index to raw messages 2023-03-16 13:40:20 +00:00
1678877478_add_communities_requests_to_join_revealed_addresses_table.up.sql feat: add verified wallet accounts to community requests 2023-03-22 13:50:25 +01:00
1679326850_add_community_token_owners.up.sql feat(MintTo): Add Airdrop functionality. 2023-03-27 17:17:51 +02:00
1680011500_add_album_images_count.up.sql Add album count key to messages (#3347) 2023-03-30 12:02:20 +02:00
1680114896_add_index_on_album_id.up.sql fix(unread_count): Skip extra count of new messages for album of images (#3345) 2023-03-31 12:15:06 +03:00
1681655289_add_mute_till.up.sql Add muted_till param for chats (#3258) 2023-04-16 17:06:00 +02:00
1681934966_add_index_response_to.up.sql Fix some issues with pinned messages 2023-04-25 16:02:48 +01:00
1682528339_add_index_user_messages_unseen.up.sql chore: add index idx_user_messages_unseen 2023-05-02 09:21:58 +02:00
1683707289_recreate_deleted_for_mes.up.sql Feat/sync local deleted message (#3476) 2023-05-12 16:31:34 +08:00
1683725607_mark_discord_messages_as_seen.up.sql fix: mark imported messages as seen 2023-05-10 18:51:48 +02:00
1684174617_add_url_previews_to_user_messages.up.sql URL unfurling (initial implementation) (#3471) 2023-05-18 15:43:06 -03:00
1684175608_add_token_balances.up.sql Allow setting up wallet with new config 2023-05-19 13:23:21 +01:00
1684979808_sync_activity_center_notifications.up.sql Feat/sync activity center notification (#3535) 2023-06-10 10:00:17 +08:00
1685383829_add_communities_mute_till.up.sql feat(communities): Adds muting interval to community (#3549) 2023-06-17 11:19:05 +03:00
1685964183_add_chainids_to_revealed_addresses.up.sql Add chainIds to revealed accounts in memberhsip requests 2023-06-12 10:49:29 +02:00
1687370421_add_communities_muted_till_new.up.sql fix(migration): Fixes mute_till migration (#3653) 2023-06-22 18:49:58 +03:00
1687416607_add_communities_check_channel_permission_responses_table.up.sql feat: store check channel permission responses 2023-06-27 12:13:59 +02:00
1687856939_add_community_tokens_decimals.up.sql feat(AssetsDeployment): Assets deployment 2023-06-29 16:10:05 +02:00
1687959987_modify_community_tokens_supply_as_string.up.sql Remove unsopported DROP statement 2023-07-14 08:23:38 +01:00
1689258900_add_airdrop_address_to_revealed_addresses.up.sql feat(communities): add airdropAddress param to SharedAccounts (#3756) 2023-07-14 13:33:47 -04:00
1689266326_create_communities_events_table.up.sql chore: community admin events (#3678) 2023-07-18 17:06:12 +02:00
1689931300_add_community_tokens_deployer_and_priv_level.up.sql feat(OwnerToken): Owner token and master token deployment 2023-08-14 20:57:00 +02:00
1693311881_add_unfurled_links_to_message_edits.up.sql Link previews not working on message edit (#3974) 2023-08-31 10:21:25 +03:00
1693311981_community_shard.up.sql waku2: static shards (#3944) 2023-10-12 15:21:49 -04:00
1695331492_add_status_link_previews.up.sql feature: Unfurl status links (#4033) 2023-10-13 13:25:34 +01:00
1695918296_add_validated_at.up.sql Add queue for processing community description & configurable control node 2023-10-17 21:00:24 +01:00
1697699419_community_control_node_sync.up.sql feat: ensure unique control node across devices 2023-10-22 21:50:41 +02:00
1698137561_add_profile_showcase_tables.up.sql feat: Profile showcase backend (#4005) 2023-10-24 14:43:18 +04:00
1698137562_fix_encryption_key_id.up.sql Fix encryption id && rekey with a single message 2023-10-24 20:48:54 +01:00
README.md Fix communities migration 2021-01-08 08:43:16 +01:00
doc.go Add replies to messages 2020-04-16 15:51:28 +02:00

README.md

How to write migrations?

We only write up migrations, down migrations are not always possible in sqlite or too complex/too expensive. For example to remove a column you would have to duplicate the table, copy over the data, delete and recreated. This can be very expensive for some tables (user_messages for example), so should not be attempted.

Notes

One issue we faced multiple times is that updates to user_messages can be very expensive, leading to slow upgrade times and interrupted migrations. So avoid writes if not necessary.