private static async ValueTask <bool?> RemoveParticipantSafe(IKeyValueDatabaseActions database,
                                                                     string participantId, string connectionId)
        {
            var participantToConferenceKey  = GetParticipantToConferenceKey(participantId);
            var conferenceToParticipantsKey = GetConferenceToParticipantsKey("*");

            var result = await database.ExecuteScriptAsync(
                RedisScript.JoinedParticipantsRepository_RemoveParticipantSafe, participantId,
                participantToConferenceKey, conferenceToParticipantsKey, connectionId);

            if (result.IsNull)
            {
                return(null);
            }
            return((bool)result);
        }
        private static async ValueTask <PreviousParticipantState?> RemoveParticipant(IKeyValueDatabaseActions database,
                                                                                     string participantId)
        {
            var participantToConferenceKey  = GetParticipantToConferenceKey(participantId);
            var conferenceToParticipantsKey = GetConferenceToParticipantsKey("*");

            var result = await database.ExecuteScriptAsync(RedisScript.JoinedParticipantsRepository_RemoveParticipant,
                                                           participantId, participantToConferenceKey, conferenceToParticipantsKey);

            if (result.IsNull)
            {
                return(null);
            }

            var arr = (string[])result;

            return(new PreviousParticipantState(arr[0], arr[1]));
        }