2020-08-10 17:15:02 -04:00
|
|
|
// Copyright (c) HashiCorp, Inc.
|
2020-06-10 06:56:46 -04:00
|
|
|
// SPDX-License-Identifier: BUSL-1.1
|
2023-02-02 17:15:17 -08:00
|
|
|
|
2020-04-08 14:55:40 -04:00
|
|
|
syntax = "proto3";
|
|
|
|
|
|
2020-04-28 11:20:37 -07:00
|
|
|
package controller.storage.oplog.v1;
|
2022-05-04 11:10:21 -04:00
|
|
|
|
2020-04-08 14:55:40 -04:00
|
|
|
import "google/protobuf/field_mask.proto";
|
2022-01-05 14:38:38 -05:00
|
|
|
import "google/protobuf/struct.proto";
|
|
|
|
|
import "google/protobuf/wrappers.proto";
|
2020-04-08 14:55:40 -04:00
|
|
|
|
2020-08-10 17:15:02 -04:00
|
|
|
option go_package = "github.com/hashicorp/boundary/internal/oplog;oplog";
|
2020-04-08 14:55:40 -04:00
|
|
|
|
2020-06-10 06:56:46 -04:00
|
|
|
// OpType provides the type of database operation the Any message represents
|
|
|
|
|
// (create, update, delete)
|
2020-04-08 14:55:40 -04:00
|
|
|
enum OpType {
|
2020-06-10 06:56:46 -04:00
|
|
|
// OP_TYPE_UNSPECIFIED defines an unspecified operation.
|
2020-04-28 11:20:37 -07:00
|
|
|
OP_TYPE_UNSPECIFIED = 0;
|
2020-06-10 06:56:46 -04:00
|
|
|
|
|
|
|
|
// OP_TYPE_CREATE defines a create operation.
|
2020-04-28 11:20:37 -07:00
|
|
|
OP_TYPE_CREATE = 1;
|
2020-06-10 06:56:46 -04:00
|
|
|
|
|
|
|
|
// OP_TYPE_UPDATE defines an update operation.
|
2020-04-28 11:20:37 -07:00
|
|
|
OP_TYPE_UPDATE = 2;
|
2020-06-10 06:56:46 -04:00
|
|
|
|
|
|
|
|
// OP_TYPE_DELETE defines a delete operation.
|
2020-04-28 11:20:37 -07:00
|
|
|
OP_TYPE_DELETE = 3;
|
2022-01-05 14:38:38 -05:00
|
|
|
|
|
|
|
|
// OP_TYPE_CREATE_ITEMS defines a create operation for multiple items.
|
|
|
|
|
OP_TYPE_CREATE_ITEMS = 4;
|
|
|
|
|
|
|
|
|
|
// OP_TYPE_DELETE_ITEMS defines a delete operation for multiple items.
|
|
|
|
|
OP_TYPE_DELETE_ITEMS = 5;
|
2020-04-08 14:55:40 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// AnyOperation provides a message for anything and the type of operation it
|
|
|
|
|
// represents.
|
|
|
|
|
message AnyOperation {
|
2020-06-10 06:56:46 -04:00
|
|
|
// type_name defines type of operation.
|
2020-04-08 14:55:40 -04:00
|
|
|
string type_name = 1;
|
2020-06-10 06:56:46 -04:00
|
|
|
|
2021-05-14 16:26:02 -04:00
|
|
|
// value are the bytes of a marshaled proto buff.
|
2020-04-08 14:55:40 -04:00
|
|
|
bytes value = 2;
|
2020-06-10 06:56:46 -04:00
|
|
|
|
|
|
|
|
// operation_type defines the type of database operation.
|
2020-04-08 14:55:40 -04:00
|
|
|
OpType operation_type = 3;
|
2020-06-10 06:56:46 -04:00
|
|
|
|
|
|
|
|
// field_mask is the mask of fields to update.
|
2020-04-08 14:55:40 -04:00
|
|
|
google.protobuf.FieldMask field_mask = 4;
|
2020-06-10 06:56:46 -04:00
|
|
|
|
|
|
|
|
// null_mask is the mask of fields to set to null.
|
|
|
|
|
google.protobuf.FieldMask null_mask = 5;
|
2022-01-05 14:38:38 -05:00
|
|
|
|
|
|
|
|
// Options for the operations (see dbw package for definition/documentation of
|
|
|
|
|
// options)
|
|
|
|
|
OperationOptions options = 6;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// OperationOptions represent operations options which can/will affect the oplog write
|
|
|
|
|
// operation. These options are a subset of the dbw.Options. We will not try to
|
|
|
|
|
// keep the docs in-sync from the dbw package, so if you need more information
|
|
|
|
|
// on what the option does please see the dbw package docs.
|
|
|
|
|
message OperationOptions {
|
|
|
|
|
// with_version (see dbw package for docs)
|
|
|
|
|
google.protobuf.UInt32Value with_version = 1;
|
|
|
|
|
|
|
|
|
|
// with_skip_vet_for_write (see dbw package for docs)
|
|
|
|
|
bool with_skip_vet_for_write = 2;
|
|
|
|
|
|
|
|
|
|
// with_where_clause (see dbw package for docs)
|
|
|
|
|
string with_where_clause = 3;
|
|
|
|
|
|
|
|
|
|
// with_where_clause_args (see dbw package for docs)
|
|
|
|
|
repeated google.protobuf.Value with_where_clause_args = 4;
|
|
|
|
|
|
|
|
|
|
// with_on_conflict (see dbw package for docs)
|
|
|
|
|
WithOnConflict with_on_conflict = 5;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// WithOnConflict defines the parameters needed for an sql "on conflict clause"
|
|
|
|
|
message WithOnConflict {
|
|
|
|
|
// target defines the on conflict target
|
|
|
|
|
oneof target {
|
|
|
|
|
// constraint is the on conflict constraint
|
|
|
|
|
string constraint = 10;
|
|
|
|
|
|
|
|
|
|
// columns are the on conflict columns
|
|
|
|
|
Columns columns = 11;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// action defines the on conflict action
|
|
|
|
|
oneof action {
|
|
|
|
|
// do_nothing defines an on conflict action of do nothing
|
|
|
|
|
bool do_nothing = 50;
|
|
|
|
|
|
|
|
|
|
// update_all defines an on conflict action of updating all the columns
|
|
|
|
|
bool update_all = 51;
|
|
|
|
|
|
|
|
|
|
// column_values defines on conflict action with the columns to update
|
|
|
|
|
ColumnValues column_values = 52;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Columns defines a set of column properties
|
|
|
|
|
message Columns {
|
|
|
|
|
// name of the columns
|
|
|
|
|
repeated string names = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ColumnValue defines a column value
|
|
|
|
|
message ColumnValue {
|
|
|
|
|
// name of the column
|
|
|
|
|
string name = 1;
|
|
|
|
|
|
|
|
|
|
// value of the column
|
|
|
|
|
oneof value {
|
|
|
|
|
google.protobuf.Value raw = 2;
|
|
|
|
|
ExprValue expr_value = 3;
|
|
|
|
|
Column column = 4;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ColumnValues defines a set of column value properies
|
|
|
|
|
message ColumnValues {
|
|
|
|
|
// values are the values of the columns
|
|
|
|
|
repeated ColumnValue values = 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// ExprValue defines an expr value that can be used as a column value
|
|
|
|
|
message ExprValue {
|
|
|
|
|
// sql is the sql clause of the expr
|
|
|
|
|
string sql = 1;
|
|
|
|
|
|
|
|
|
|
// args are the sql args of the expr
|
|
|
|
|
repeated google.protobuf.Value args = 2;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// Column represents a table Column
|
|
|
|
|
message Column {
|
|
|
|
|
// name of the column
|
|
|
|
|
string name = 1;
|
|
|
|
|
// table name of the column
|
|
|
|
|
string table = 2;
|
2020-04-08 14:55:40 -04:00
|
|
|
}
|