Beispiel #1
0
        //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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }