Skip to content

Commit

Permalink
Update DB migration
Browse files Browse the repository at this point in the history
  • Loading branch information
borichellow committed Sep 13, 2023
1 parent de790cf commit 7131f65
Showing 1 changed file with 93 additions and 2 deletions.
95 changes: 93 additions & 2 deletions persistence/src/commonMain/db_user/migrations/57.sqm
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,96 @@ import com.wire.kalium.persistence.dao.conversation.ConversationEntity;

ALTER TABLE Conversation ADD COLUMN verification_status TEXT AS ConversationEntity.VerificationStatus NOT NULL DEFAULT "NOT_VERIFIED" ;

UPDATE Conversation
SET verification_status = "NOT_VERIFIED";
DROP VIEW IF EXISTS ConversationDetails;

CREATE VIEW IF NOT EXISTS ConversationDetails AS
SELECT
Conversation.qualified_id AS qualifiedId,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.name
WHEN 'CONNECTION_PENDING' THEN connection_user.name
ELSE Conversation.name
END AS name,
Conversation.type,
Call.status AS callStatus,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.preview_asset_id
WHEN 'CONNECTION_PENDING' THEN connection_user.preview_asset_id
END AS previewAssetId,
Conversation.muted_status AS mutedStatus,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.team
ELSE Conversation.team_id
END AS teamId,
CASE (Conversation.type)
WHEN 'CONNECTION_PENDING' THEN Connection.last_update_date
ELSE Conversation.last_modified_date
END AS lastModifiedDate,
Conversation.last_read_date AS lastReadDate,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.user_availability_status
WHEN 'CONNECTION_PENDING' THEN connection_user.user_availability_status
END AS userAvailabilityStatus,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.user_type
WHEN 'CONNECTION_PENDING' THEN connection_user.user_type
END AS userType,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.bot_service
WHEN 'CONNECTION_PENDING' THEN connection_user.bot_service
END AS botService,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.deleted
WHEN 'CONNECTION_PENDING' THEN connection_user.deleted
END AS userDeleted,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.defederated
WHEN 'CONNECTION_PENDING' THEN connection_user.defederated
END AS userDefederated,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.connection_status
WHEN 'CONNECTION_PENDING' THEN connection_user.connection_status
END AS connectionStatus,
CASE (Conversation.type)
WHEN 'ONE_ON_ONE' THEN User.qualified_id
WHEN 'CONNECTION_PENDING' THEN connection_user.qualified_id
END AS otherUserId,
CASE
WHEN ((SELECT id FROM SelfUser LIMIT 1) LIKE (Conversation.creator_id || '@%')) THEN 1
ELSE 0
END AS isCreator,
Conversation.last_notified_date AS lastNotifiedMessageDate,
memberRole. role AS selfRole,
Conversation.protocol,
Conversation.mls_cipher_suite,
Conversation.mls_epoch,
Conversation.mls_group_id,
Conversation.mls_last_keying_material_update_date,
Conversation.mls_group_state,
Conversation.access_list,
Conversation.access_role_list,
Conversation.team_id,
Conversation.mls_proposal_timer,
Conversation.muted_time,
Conversation.creator_id,
Conversation.last_modified_date,
Conversation.receipt_mode,
Conversation.message_timer,
Conversation.user_message_timer,
Conversation.incomplete_metadata,
Conversation.verification_status
FROM Conversation
LEFT JOIN Member ON Conversation.qualified_id = Member.conversation
AND Conversation.type IS 'ONE_ON_ONE'
AND Member.user IS NOT (SELECT SelfUser.id FROM SelfUser LIMIT 1)
LEFT JOIN Member AS memberRole ON Conversation.qualified_id = memberRole.conversation
AND memberRole.user IS (SELECT SelfUser.id FROM SelfUser LIMIT 1)
LEFT JOIN User ON User.qualified_id = Member.user
LEFT JOIN Connection ON Connection.qualified_conversation = Conversation.qualified_id
AND (Connection.status = 'SENT'
OR Connection.status = 'PENDING'
OR Connection.status = 'NOT_CONNECTED'
AND Conversation.type IS 'CONNECTION_PENDING')
LEFT JOIN User AS connection_user ON Connection.qualified_to = connection_user.qualified_id
LEFT JOIN Call ON Call.id IS (SELECT id FROM Call WHERE Call.conversation_id = Conversation.qualified_id AND Call.status IS 'STILL_ONGOING' ORDER BY created_at DESC LIMIT 1);

0 comments on commit 7131f65

Please sign in to comment.