//public LogChange getLogChange(Document loadedDocument) //{ // LogChange retValue = new LogChange(); // byte[] allBytesbefore = loadedDocument.GetPropertyValue<byte[]>("ZippedLog"); // retValue.ZippedLog = allBytesbefore; // retValue.Id = loadedDocument.GetPropertyValue<string>("Id"); // retValue.UserId = loadedDocument.GetPropertyValue<string>("UserId"); // retValue.TypeOfEvent = loadedDocument.GetPropertyValue<string>("TypeOfEvent"); // retValue.TimeOfCreation = loadedDocument.GetPropertyValue<DateTimeOffset>("TimeOfCreation"); // retValue.JsTimeOfCreation = loadedDocument.GetPropertyValue<ulong>("JsTimeOfCreation"); // this.loadedDocument = retValue; // return retValue; //} public async Task <LogChange> getLogChange(string userId, string documentId) { LogChange retValue = await loadDocument(userId, documentId).ConfigureAwait(false); return(retValue); //Document loadedDocument = await loadDocument(userId, documentId).ConfigureAwait(false); //return getLogChange(loadedDocument); }
public async Task AddLogDocument(LogChange log) { string cosmosDBName = dbName; string containerName = collectionName; var database = Client.GetDatabase(cosmosDBName); Container container = database.GetContainer(containerName); ItemResponse <LogChange> response = await container.CreateItemAsync(log, new PartitionKey(log.UserId)).ConfigureAwait(false); //await Client.CreateDocumentAsync(UriFactory.CreateDocumentCollectionUri(dbName, collectionName), log).ConfigureAwait(false); }
public async Task <IEnumerable <LogChange> > getLogChangesByType(string userId, TimeLine timeLineArg = null, ActivityType typeOfDocument = ActivityType.None, int count = 100) { var options = new QueryRequestOptions { PartitionKey = new PartitionKey(userId) }; var collectionParams = new List <Tuple <string, object> >(); string sqlQuery = @"SELECT * FROM c"; bool isWhereAlready = false; TimeLine timeline = timeLineArg.StartToEnd; if (userId.isNot_NullEmptyOrWhiteSpace()) { if (!isWhereAlready) { sqlQuery += @" WHERE "; isWhereAlready = true; } else { sqlQuery += " AND "; } var sqlParam = new Tuple <string, object> ("@UserId", userId); collectionParams.Add(sqlParam); sqlQuery += @" c.UserId = @UserId "; } if (typeOfDocument != ActivityType.None && typeOfDocument.ToString().isNot_NullEmptyOrWhiteSpace()) { if (!isWhereAlready) { sqlQuery += " WHERE "; isWhereAlready = true; } else { sqlQuery += " AND "; } var sqlParam = new Tuple <string, object>("@TypeOfEvent", typeOfDocument.ToString()); collectionParams.Add(sqlParam); sqlQuery += " c.TypeOfEvent = @TypeOfEvent "; } if (timeline != null) { if (!isWhereAlready) { sqlQuery += " WHERE "; isWhereAlready = true; } else { sqlQuery += " AND "; } var sqlParamStart = new Tuple <string, object>("@JsTimeOfCreationStart", timeline.Start.ToUnixTimeMilliseconds()); collectionParams.Add(sqlParamStart); var sqlParamEnd = new Tuple <string, object>("@JsTimeOfCreationEnd", timeline.End.ToUnixTimeMilliseconds()); collectionParams.Add(sqlParamEnd); sqlQuery += " c.JsTimeOfCreation >= @JsTimeOfCreationStart and c.JsTimeOfCreation < @JsTimeOfCreationEnd "; } sqlQuery += @" order by c.JsTimeOfCreation desc "; sqlQuery += @" offset 0 limit " + count + " "; QueryDefinition queryDefinition = new QueryDefinition(sqlQuery); collectionParams.ForEach((param) => { queryDefinition = queryDefinition.WithParameter(param.Item1, param.Item2); }); var database = Client.GetDatabase(dbName); Container container = database.GetContainer(collectionName); List <LogChange> retValue = new List <LogChange>(); using (FeedIterator <LogChange> resultSet = container.GetItemQueryIterator <LogChange>( queryDefinition, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey("Account1"), MaxItemCount = 1 })) { while (resultSet.HasMoreResults) { FeedResponse <LogChange> response = await resultSet.ReadNextAsync(); LogChange logChange = response.First(); Console.WriteLine($"\n Log change UserId is : {logChange.UserId}; Id: {logChange.Id};"); retValue.AddRange(response); } } //var querySpec = new SqlQuerySpec //{ // QueryText = sqlQuery, // Parameters = new SqlParameterCollection( // collectionParams // ) //}; //var documentCollectionUri = UriFactory.CreateDocumentCollectionUri(dbName, collectionName); //var query = Client.CreateDocumentQuery<Document>(documentCollectionUri, querySpec, options).AsDocumentQuery(); //List<LogChange> retValue = new List<LogChange>(); //while (query.HasMoreResults) //{ // var documents = await query.ExecuteNextAsync<Document>().ConfigureAwait(false); // foreach (var loadedDocument in documents) // { // LogChange logChange = new LogChange(); // byte[] allBytesbefore = loadedDocument.GetPropertyValue<byte[]>("ZippedLog"); // logChange.ZippedLog = allBytesbefore; // logChange.Id = loadedDocument.GetPropertyValue<string>("Id"); // logChange.UserId = loadedDocument.GetPropertyValue<string>("UserId"); // logChange.TypeOfEvent = loadedDocument.GetPropertyValue<string>("TypeOfEvent"); // logChange.TimeOfCreation = loadedDocument.GetPropertyValue<DateTimeOffset>("TimeOfCreation"); // logChange.JsTimeOfCreation = loadedDocument.GetPropertyValue<ulong>("JsTimeOfCreation"); // retValue.Add(logChange); // } //} return(retValue); }