// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/spanner/v1/mutation.proto

package com.google.spanner.v1;

public interface MutationOrBuilder extends
    // @@protoc_insertion_point(interface_extends:google.spanner.v1.Mutation)
    com.google.protobuf.MessageOrBuilder {

  /**
   * <pre>
   * Insert new rows in a table. If any of the rows already exist,
   * the write or transaction fails with error `ALREADY_EXISTS`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write insert = 1;</code>
   */
  boolean hasInsert();
  /**
   * <pre>
   * Insert new rows in a table. If any of the rows already exist,
   * the write or transaction fails with error `ALREADY_EXISTS`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write insert = 1;</code>
   */
  com.google.spanner.v1.Mutation.Write getInsert();
  /**
   * <pre>
   * Insert new rows in a table. If any of the rows already exist,
   * the write or transaction fails with error `ALREADY_EXISTS`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write insert = 1;</code>
   */
  com.google.spanner.v1.Mutation.WriteOrBuilder getInsertOrBuilder();

  /**
   * <pre>
   * Update existing rows in a table. If any of the rows does not
   * already exist, the transaction fails with error `NOT_FOUND`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write update = 2;</code>
   */
  boolean hasUpdate();
  /**
   * <pre>
   * Update existing rows in a table. If any of the rows does not
   * already exist, the transaction fails with error `NOT_FOUND`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write update = 2;</code>
   */
  com.google.spanner.v1.Mutation.Write getUpdate();
  /**
   * <pre>
   * Update existing rows in a table. If any of the rows does not
   * already exist, the transaction fails with error `NOT_FOUND`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write update = 2;</code>
   */
  com.google.spanner.v1.Mutation.WriteOrBuilder getUpdateOrBuilder();

  /**
   * <pre>
   * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
   * its column values are overwritten with the ones provided. Any
   * column values not explicitly written are preserved.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write insert_or_update = 3;</code>
   */
  boolean hasInsertOrUpdate();
  /**
   * <pre>
   * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
   * its column values are overwritten with the ones provided. Any
   * column values not explicitly written are preserved.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write insert_or_update = 3;</code>
   */
  com.google.spanner.v1.Mutation.Write getInsertOrUpdate();
  /**
   * <pre>
   * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, then
   * its column values are overwritten with the ones provided. Any
   * column values not explicitly written are preserved.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write insert_or_update = 3;</code>
   */
  com.google.spanner.v1.Mutation.WriteOrBuilder getInsertOrUpdateOrBuilder();

  /**
   * <pre>
   * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, it is
   * deleted, and the column values provided are inserted
   * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
   * explicitly written become `NULL`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write replace = 4;</code>
   */
  boolean hasReplace();
  /**
   * <pre>
   * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, it is
   * deleted, and the column values provided are inserted
   * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
   * explicitly written become `NULL`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write replace = 4;</code>
   */
  com.google.spanner.v1.Mutation.Write getReplace();
  /**
   * <pre>
   * Like [insert][google.spanner.v1.Mutation.insert], except that if the row already exists, it is
   * deleted, and the column values provided are inserted
   * instead. Unlike [insert_or_update][google.spanner.v1.Mutation.insert_or_update], this means any values not
   * explicitly written become `NULL`.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Write replace = 4;</code>
   */
  com.google.spanner.v1.Mutation.WriteOrBuilder getReplaceOrBuilder();

  /**
   * <pre>
   * Delete rows from a table. Succeeds whether or not the named
   * rows were present.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Delete delete = 5;</code>
   */
  boolean hasDelete();
  /**
   * <pre>
   * Delete rows from a table. Succeeds whether or not the named
   * rows were present.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Delete delete = 5;</code>
   */
  com.google.spanner.v1.Mutation.Delete getDelete();
  /**
   * <pre>
   * Delete rows from a table. Succeeds whether or not the named
   * rows were present.
   * </pre>
   *
   * <code>.google.spanner.v1.Mutation.Delete delete = 5;</code>
   */
  com.google.spanner.v1.Mutation.DeleteOrBuilder getDeleteOrBuilder();

  public com.google.spanner.v1.Mutation.OperationCase getOperationCase();
}
