async Task LoadChatStateAsync()

in src/WebJobs.Extensions.OpenAI/Assistants/AssistantService.cs [466:498]


    async Task<InternalChatState?> LoadChatStateAsync(string id, TableClient tableClient, CancellationToken cancellationToken)
    {
        // Check to see if any entity exists with partition id
        AsyncPageable<TableEntity> itemsWithPartitionKey = tableClient.QueryAsync<TableEntity>(
            filter: $"PartitionKey eq '{id}'",
            cancellationToken: cancellationToken);

        // Deserialize the chat messages
        List<ChatMessageTableEntity> chatMessageList = new();
        AssistantStateEntity? assistantStateEntity = null;

        await foreach (TableEntity entity in itemsWithPartitionKey)
        {
            // Add chat message to list
            if (entity.RowKey.StartsWith(ChatMessageTableEntity.RowKeyPrefix))
            {
                chatMessageList.Add(new ChatMessageTableEntity(entity));
            }

            // Get assistant state
            if (entity.RowKey == AssistantStateEntity.FixedRowKeyValue)
            {
                assistantStateEntity = new AssistantStateEntity(entity);
            }
        }

        if (assistantStateEntity is null)
        {
            return null;
        }

        return new InternalChatState(id, assistantStateEntity, chatMessageList);
    }