Beispiel #1
0
        public async Task Load()
        {
            var response = await container.ReadItemStreamAsync(TransactionEntityId, partitionKey);

            if (response.IsSuccessStatusCode)
            {
                value = FromStream(response.Content);
                etag  = value.Etag;
            }
            else
            {
                response = await container.CreateItemStreamAsync(ToStream(new TransactionRecord
                {
                    Id = TransactionEntityId,
                    PartitionId = partitionId
                }), partitionKey);

                if (!response.IsSuccessStatusCode)
                {
                    throw new Exception($"Failed to create transaction record for partition {partitionKey}");
                }
                value = FromStream(response.Content);
                etag  = value.Etag;
            }
        }
Beispiel #2
0
        async Task Update()
        {
            var options = new ItemRequestOptions
            {
                IfMatchEtag = etag
            };
            var response = await container.ReplaceItemStreamAsync(ToStream(value), TransactionEntityId, partitionKey, options);

            value = FromStream(response.Content);
            etag  = value.Etag;
        }
Beispiel #3
0
        Stream ToStream(TransactionRecord input)
        {
            var streamPayload = new MemoryStream();

            using (var streamWriter = new StreamWriter(streamPayload, DefaultEncoding, 1024, true))
            {
                using (JsonWriter writer = new JsonTextWriter(streamWriter))
                {
                    writer.Formatting = Formatting.None;
                    serializer.Serialize(writer, input);
                    writer.Flush();
                    streamWriter.Flush();
                }
            }

            streamPayload.Position = 0;
            return(streamPayload);
        }