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); }
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() }); } } }