public async Task WriteMutations()
        {
            string connectionString = $"Data Source=projects/p1/instances/i1/databases/d1;Host={_fixture.Host};Port={_fixture.Port}";

            using (var connection = new SpannerConnection(connectionString, ChannelCredentials.Insecure))
            {
                SpannerCommand cmd = connection.CreateInsertOrUpdateCommand("Singers", new SpannerParameterCollection {
                    { "SingerId", SpannerDbType.Int64, 1 },
                    { "FirstName", SpannerDbType.String, "FirstName1" },
                    { "LastName", SpannerDbType.String, "LastName1" },
                });
                await cmd.ExecuteNonQueryAsync();
            }
            IEnumerable <IMessage> requests = _fixture.SpannerMock.Requests;
            CommitRequest          commit   = (CommitRequest)requests.Last();

            Assert.Equal(Mutation.OperationOneofCase.InsertOrUpdate, commit.Mutations.First().OperationCase);
            Assert.Equal("Singers", commit.Mutations.First().InsertOrUpdate.Table);
        }
Esempio n. 2
0
        private async Task WriteSampleRowsAsync(SpannerConnection connection)
        {
            if (string.IsNullOrEmpty(_key))
            {
                _key = Guid.NewGuid().ToString();
                SpannerCommand insupdate;
                // 1st update
                await connection.OpenAsync();

                using (var tx = await connection.BeginTransactionAsync())
                {
                    insupdate = connection.CreateInsertOrUpdateCommand(
                        "TX",
                        new SpannerParameterCollection
                    {
                        { "K", SpannerDbType.String, _key },
                        { "StringValue", SpannerDbType.String, Guid.NewGuid().ToString() }
                    });
                    insupdate.Transaction = tx;
                    await insupdate.ExecuteNonQueryAsync();

                    var timestamp = await tx.CommitAsync();

                    _history.Add(
                        new HistoryEntry
                    {
                        Value     = insupdate.Parameters[1].Value.ToString(),
                        Timestamp = timestamp.GetValueOrDefault()
                    });
                }

                await Task.Delay(250);

                // 2nd update
                using (var tx = await connection.BeginTransactionAsync())
                {
                    insupdate.Transaction         = tx;
                    insupdate.CommandText         = "UPDATE TX";
                    insupdate.Parameters[1].Value = Guid.NewGuid().ToString();
                    await insupdate.ExecuteNonQueryAsync();

                    var timestamp = await tx.CommitAsync();

                    _history.Add(
                        new HistoryEntry
                    {
                        Value     = insupdate.Parameters[1].Value.ToString(),
                        Timestamp = timestamp.GetValueOrDefault()
                    });
                }

                await Task.Delay(250);

                // 3rd update
                using (var tx = await connection.BeginTransactionAsync())
                {
                    insupdate.Transaction         = tx;
                    insupdate.Parameters[1].Value = Guid.NewGuid().ToString();
                    await insupdate.ExecuteNonQueryAsync();

                    var timestamp = await tx.CommitAsync();

                    _history.Add(
                        new HistoryEntry
                    {
                        Value     = insupdate.Parameters[1].Value.ToString(),
                        Timestamp = timestamp.GetValueOrDefault()
                    });
                }
            }
        }