syntax = "proto3";
package nexus.models.proto;

import "nexus/models/proto/typed_document.proto";


message CrossReferenceOperation {
  string source = 1;
  string target = 2;
  uint32 last_retry_unixtime = 3;
  uint32 retry_count = 4;
}

message DocumentOperation {
  oneof operation {
    Vote vote = 1;
    UpdateDocument update_document = 3;
  };
}

message Vote {
  int64 document_id = 1;
  int32 value = 2;
  int64 voter_id = 3;
}

message UpdateDocument {
  repeated string fields = 1;
  bool should_fill_from_external_source = 2;
  bool commit = 3;
  bool reindex = 4;
  TypedDocument typed_document = 5;
}