Skip to content

Commit

Permalink
Adding /searchcommits?q=my search term
Browse files Browse the repository at this point in the history
  • Loading branch information
dalager committed Feb 16, 2024
1 parent e49e425 commit ff36c3b
Showing 1 changed file with 57 additions and 0 deletions.
57 changes: 57 additions & 0 deletions src/Function/SearchCommits.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
using System.Net;
using System.Text.Json;
using CommitStore.Functions;
using Microsoft.Azure.Cosmos;
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Http;
using Microsoft.Extensions.Logging;

namespace Function
{
public class SearchCommits
{
private readonly ILogger _logger;

public SearchCommits(ILoggerFactory loggerFactory)
{
_logger = loggerFactory.CreateLogger<SearchCommits>();
}

[Function("SearchCommits")]
public async Task<HttpResponseData> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post")] HttpRequestData req
)
{
_logger.LogInformation("C# HTTP trigger function processed a request.");

var response = req.CreateResponse(HttpStatusCode.OK);

// get search param querystring 'q'
var queryString = req.Url.Query;
var searchParam = System.Web.HttpUtility.ParseQueryString(queryString).Get("q") ?? "";
_logger.LogInformation($"Search param: {searchParam}");

// get cosmosdbconnectionstring
var cosmosDbConnectionString = Environment.GetEnvironmentVariable("CosmosDBConnection");
var client = new CosmosClient(cosmosDbConnectionString);
var database = client.GetDatabase("commitstore-db");
var container = database.GetContainer("commits");

QueryDefinition qdef = new QueryDefinition(
$"SELECT * FROM c where CONTAINS(c.message, @searchParam,true) or CONTAINS(c.branch, @searchParam,true) order by c.timestamp desc"
).WithParameter("@searchParam", searchParam);

var feedIterator = container.GetItemQueryIterator<CommitData>(qdef);
// var feedIterator = queryable.ToFeedIterator();
var commits = new List<CommitData>();
while (feedIterator.HasMoreResults)
{
var commitResponses = await feedIterator.ReadNextAsync();
commits.AddRange(commitResponses);
}
response.WriteString(JsonSerializer.Serialize(commits));

return response;
}
}
}

0 comments on commit ff36c3b

Please sign in to comment.