From a6e9ab289cd1f99bce21babd82d591c422bfdc19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Enol=20=C3=81lvarez?= Date: Tue, 30 Jul 2024 12:07:37 +0200 Subject: [PATCH] Update Protobuf --- docs/tutorial/buf.gen.yaml | 12 ++ ...{block_meta.proto => eth_block_meta.proto} | 2 +- docs/tutorial/src/lib.rs | 2 +- docs/tutorial/src/pb/eth.block_meta.v1.rs | 49 ------ docs/tutorial/src/pb/eth_block_meta.v1.rs | 14 ++ docs/tutorial/src/pb/mod.rs | 38 +++- .../src/pb/sf.substreams.sink.database.v1.rs | 82 +++++++++ .../src/pb/sf.substreams.sink.kv.v1.rs | 162 ++++++++++++++++++ .../src/pb/sf.substreams.sink.types.v1.rs | 22 +++ docs/tutorial/substreams.yaml | 2 +- 10 files changed, 330 insertions(+), 55 deletions(-) create mode 100644 docs/tutorial/buf.gen.yaml rename docs/tutorial/proto/{block_meta.proto => eth_block_meta.proto} (87%) delete mode 100644 docs/tutorial/src/pb/eth.block_meta.v1.rs create mode 100644 docs/tutorial/src/pb/eth_block_meta.v1.rs create mode 100644 docs/tutorial/src/pb/sf.substreams.sink.database.v1.rs create mode 100644 docs/tutorial/src/pb/sf.substreams.sink.kv.v1.rs create mode 100644 docs/tutorial/src/pb/sf.substreams.sink.types.v1.rs diff --git a/docs/tutorial/buf.gen.yaml b/docs/tutorial/buf.gen.yaml new file mode 100644 index 0000000..d2e6544 --- /dev/null +++ b/docs/tutorial/buf.gen.yaml @@ -0,0 +1,12 @@ + +version: v1 +plugins: +- plugin: buf.build/community/neoeinstein-prost:v0.2.2 + out: src/pb + opt: + - file_descriptor_set=false + +- plugin: buf.build/community/neoeinstein-prost-crate:v0.3.1 + out: src/pb + opt: + - no_features diff --git a/docs/tutorial/proto/block_meta.proto b/docs/tutorial/proto/eth_block_meta.proto similarity index 87% rename from docs/tutorial/proto/block_meta.proto rename to docs/tutorial/proto/eth_block_meta.proto index d17799f..a161bc5 100644 --- a/docs/tutorial/proto/block_meta.proto +++ b/docs/tutorial/proto/eth_block_meta.proto @@ -1,6 +1,6 @@ syntax = "proto3"; -package eth.block_meta.v1; +package eth_block_meta.v1; import "google/protobuf/timestamp.proto"; diff --git a/docs/tutorial/src/lib.rs b/docs/tutorial/src/lib.rs index e0133a1..cf8f9e0 100644 --- a/docs/tutorial/src/lib.rs +++ b/docs/tutorial/src/lib.rs @@ -2,7 +2,7 @@ mod block_timestamp; mod pb; use self::block_timestamp::BlockTimestamp; -use pb::block_meta::BlockMeta; +use pb::eth_block_meta::v1::BlockMeta; use substreams::store::{ self, DeltaProto, StoreNew, StoreSetIfNotExists, StoreSetIfNotExistsProto, }; diff --git a/docs/tutorial/src/pb/eth.block_meta.v1.rs b/docs/tutorial/src/pb/eth.block_meta.v1.rs deleted file mode 100644 index 094340f..0000000 --- a/docs/tutorial/src/pb/eth.block_meta.v1.rs +++ /dev/null @@ -1,49 +0,0 @@ -// @generated -#[derive(Clone, PartialEq, ::prost::Message)] -pub struct BlockMeta { - #[prost(uint64, tag="1")] - pub number: u64, - #[prost(bytes="vec", tag="2")] - pub hash: ::prost::alloc::vec::Vec, - #[prost(bytes="vec", tag="3")] - pub parent_hash: ::prost::alloc::vec::Vec, - #[prost(message, optional, tag="4")] - pub timestamp: ::core::option::Option<::prost_types::Timestamp>, -} -/// Encoded file descriptor set for the `eth.block_meta.v1` package -pub const FILE_DESCRIPTOR_SET: &[u8] = &[ - 0x0a, 0x81, 0x04, 0x0a, 0x10, 0x62, 0x6c, 0x6f, 0x63, 0x6b, 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x65, 0x74, 0x68, 0x2e, 0x62, 0x6c, 0x6f, 0x63, 0x6b, - 0x5f, 0x6d, 0x65, 0x74, 0x61, 0x2e, 0x76, 0x31, 0x1a, 0x1f, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2f, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x92, 0x01, 0x0a, 0x09, 0x42, 0x6c, - 0x6f, 0x63, 0x6b, 0x4d, 0x65, 0x74, 0x61, 0x12, 0x16, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, - 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x6e, 0x75, 0x6d, 0x62, 0x65, 0x72, 0x12, - 0x12, 0x0a, 0x04, 0x68, 0x61, 0x73, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x68, - 0x61, 0x73, 0x68, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x5f, 0x68, 0x61, - 0x73, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, - 0x48, 0x61, 0x73, 0x68, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, - 0x70, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x67, 0x6f, 0x6f, 0x67, 0x6c, 0x65, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x62, 0x75, 0x66, 0x2e, 0x54, 0x69, 0x6d, 0x65, 0x73, 0x74, - 0x61, 0x6d, 0x70, 0x52, 0x09, 0x74, 0x69, 0x6d, 0x65, 0x73, 0x74, 0x61, 0x6d, 0x70, 0x4a, 0x9b, - 0x02, 0x0a, 0x06, 0x12, 0x04, 0x00, 0x00, 0x0b, 0x01, 0x0a, 0x08, 0x0a, 0x01, 0x0c, 0x12, 0x03, - 0x00, 0x00, 0x12, 0x0a, 0x08, 0x0a, 0x01, 0x02, 0x12, 0x03, 0x02, 0x00, 0x1a, 0x0a, 0x09, 0x0a, - 0x02, 0x03, 0x00, 0x12, 0x03, 0x04, 0x00, 0x29, 0x0a, 0x0a, 0x0a, 0x02, 0x04, 0x00, 0x12, 0x04, - 0x06, 0x00, 0x0b, 0x01, 0x0a, 0x0a, 0x0a, 0x03, 0x04, 0x00, 0x01, 0x12, 0x03, 0x06, 0x08, 0x11, - 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x00, 0x12, 0x03, 0x07, 0x02, 0x14, 0x0a, 0x0c, 0x0a, - 0x05, 0x04, 0x00, 0x02, 0x00, 0x05, 0x12, 0x03, 0x07, 0x02, 0x08, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x00, 0x01, 0x12, 0x03, 0x07, 0x09, 0x0f, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x00, 0x03, 0x12, 0x03, 0x07, 0x12, 0x13, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x01, 0x12, - 0x03, 0x08, 0x02, 0x11, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x05, 0x12, 0x03, 0x08, - 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x01, 0x12, 0x03, 0x08, 0x08, 0x0c, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x01, 0x03, 0x12, 0x03, 0x08, 0x0f, 0x10, 0x0a, 0x0b, - 0x0a, 0x04, 0x04, 0x00, 0x02, 0x02, 0x12, 0x03, 0x09, 0x02, 0x18, 0x0a, 0x0c, 0x0a, 0x05, 0x04, - 0x00, 0x02, 0x02, 0x05, 0x12, 0x03, 0x09, 0x02, 0x07, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, - 0x02, 0x01, 0x12, 0x03, 0x09, 0x08, 0x13, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x02, 0x03, - 0x12, 0x03, 0x09, 0x16, 0x17, 0x0a, 0x0b, 0x0a, 0x04, 0x04, 0x00, 0x02, 0x03, 0x12, 0x03, 0x0a, - 0x02, 0x2a, 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x06, 0x12, 0x03, 0x0a, 0x02, 0x1b, - 0x0a, 0x0c, 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x01, 0x12, 0x03, 0x0a, 0x1c, 0x25, 0x0a, 0x0c, - 0x0a, 0x05, 0x04, 0x00, 0x02, 0x03, 0x03, 0x12, 0x03, 0x0a, 0x28, 0x29, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -]; -// @@protoc_insertion_point(module) \ No newline at end of file diff --git a/docs/tutorial/src/pb/eth_block_meta.v1.rs b/docs/tutorial/src/pb/eth_block_meta.v1.rs new file mode 100644 index 0000000..050658d --- /dev/null +++ b/docs/tutorial/src/pb/eth_block_meta.v1.rs @@ -0,0 +1,14 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct BlockMeta { + #[prost(uint64, tag="1")] + pub number: u64, + #[prost(bytes="vec", tag="2")] + pub hash: ::prost::alloc::vec::Vec, + #[prost(bytes="vec", tag="3")] + pub parent_hash: ::prost::alloc::vec::Vec, + #[prost(message, optional, tag="4")] + pub timestamp: ::core::option::Option<::prost_types::Timestamp>, +} +// @@protoc_insertion_point(module) diff --git a/docs/tutorial/src/pb/mod.rs b/docs/tutorial/src/pb/mod.rs index 7a5185d..b333235 100644 --- a/docs/tutorial/src/pb/mod.rs +++ b/docs/tutorial/src/pb/mod.rs @@ -1,3 +1,35 @@ -#[path = "eth.block_meta.v1.rs"] -#[allow(dead_code)] -pub mod block_meta; \ No newline at end of file +// @generated +pub mod eth_block_meta { + // @@protoc_insertion_point(attribute:eth_block_meta.v1) + pub mod v1 { + include!("eth_block_meta.v1.rs"); + // @@protoc_insertion_point(eth_block_meta.v1) + } +} +pub mod sf { + pub mod substreams { + pub mod sink { + pub mod database { + // @@protoc_insertion_point(attribute:sf.substreams.sink.database.v1) + pub mod v1 { + include!("sf.substreams.sink.database.v1.rs"); + // @@protoc_insertion_point(sf.substreams.sink.database.v1) + } + } + pub mod kv { + // @@protoc_insertion_point(attribute:sf.substreams.sink.kv.v1) + pub mod v1 { + include!("sf.substreams.sink.kv.v1.rs"); + // @@protoc_insertion_point(sf.substreams.sink.kv.v1) + } + } + pub mod types { + // @@protoc_insertion_point(attribute:sf.substreams.sink.types.v1) + pub mod v1 { + include!("sf.substreams.sink.types.v1.rs"); + // @@protoc_insertion_point(sf.substreams.sink.types.v1) + } + } + } + } +} diff --git a/docs/tutorial/src/pb/sf.substreams.sink.database.v1.rs b/docs/tutorial/src/pb/sf.substreams.sink.database.v1.rs new file mode 100644 index 0000000..45ffc9a --- /dev/null +++ b/docs/tutorial/src/pb/sf.substreams.sink.database.v1.rs @@ -0,0 +1,82 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct DatabaseChanges { + #[prost(message, repeated, tag="1")] + pub table_changes: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct TableChange { + #[prost(string, tag="1")] + pub table: ::prost::alloc::string::String, + #[prost(uint64, tag="3")] + pub ordinal: u64, + #[prost(enumeration="table_change::Operation", tag="4")] + pub operation: i32, + #[prost(message, repeated, tag="5")] + pub fields: ::prost::alloc::vec::Vec, + #[prost(oneof="table_change::PrimaryKey", tags="2, 6")] + pub primary_key: ::core::option::Option, +} +/// Nested message and enum types in `TableChange`. +pub mod table_change { + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum Operation { + /// Protobuf default should not be used, this is used so that the consume can ensure that the value was actually specified + Unspecified = 0, + Create = 1, + Update = 2, + Delete = 3, + } + impl Operation { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Operation::Unspecified => "OPERATION_UNSPECIFIED", + Operation::Create => "OPERATION_CREATE", + Operation::Update => "OPERATION_UPDATE", + Operation::Delete => "OPERATION_DELETE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OPERATION_UNSPECIFIED" => Some(Self::Unspecified), + "OPERATION_CREATE" => Some(Self::Create), + "OPERATION_UPDATE" => Some(Self::Update), + "OPERATION_DELETE" => Some(Self::Delete), + _ => None, + } + } + } + #[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Oneof)] + pub enum PrimaryKey { + #[prost(string, tag="2")] + Pk(::prost::alloc::string::String), + #[prost(message, tag="6")] + CompositePk(super::CompositePrimaryKey), + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct CompositePrimaryKey { + #[prost(map="string, string", tag="1")] + pub keys: ::std::collections::HashMap<::prost::alloc::string::String, ::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Field { + #[prost(string, tag="1")] + pub name: ::prost::alloc::string::String, + #[prost(string, tag="2")] + pub new_value: ::prost::alloc::string::String, + #[prost(string, tag="3")] + pub old_value: ::prost::alloc::string::String, +} +// @@protoc_insertion_point(module) diff --git a/docs/tutorial/src/pb/sf.substreams.sink.kv.v1.rs b/docs/tutorial/src/pb/sf.substreams.sink.kv.v1.rs new file mode 100644 index 0000000..70b5bf8 --- /dev/null +++ b/docs/tutorial/src/pb/sf.substreams.sink.kv.v1.rs @@ -0,0 +1,162 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KvOperations { + #[prost(message, repeated, tag="1")] + pub operations: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KvOperation { + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, + #[prost(bytes="vec", tag="2")] + pub value: ::prost::alloc::vec::Vec, + #[prost(uint64, tag="3")] + pub ordinal: u64, + #[prost(enumeration="kv_operation::Type", tag="4")] + pub r#type: i32, +} +/// Nested message and enum types in `KVOperation`. +pub mod kv_operation { + #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] + #[repr(i32)] + pub enum Type { + /// Protobuf default should not be used, this is used so that the consume can ensure that the value was actually specified + Unset = 0, + Set = 1, + Delete = 2, + } + impl Type { + /// String value of the enum field names used in the ProtoBuf definition. + /// + /// The values are not transformed in any way and thus are considered stable + /// (if the ProtoBuf definition does not change) and safe for programmatic use. + pub fn as_str_name(&self) -> &'static str { + match self { + Type::Unset => "UNSET", + Type::Set => "SET", + Type::Delete => "DELETE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UNSET" => Some(Self::Unset), + "SET" => Some(Self::Set), + "DELETE" => Some(Self::Delete), + _ => None, + } + } + } +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetRequest { + /// Key to fetch + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetManyRequest { + /// Keys to fetch + #[prost(string, repeated, tag="1")] + pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetByPrefixRequest { + /// server may impose a hard limit, trying to go above it would return grpc_error: INVALID_ARGUMENT + #[prost(uint64, tag="1")] + pub limit: u64, + /// requested prefix + #[prost(string, tag="2")] + pub prefix: ::prost::alloc::string::String, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ScanRequest { + /// server may impose a hard limit, trying to go above it would return grpc_error: INVALID_ARGUMENT + #[prost(uint64, tag="1")] + pub limit: u64, + /// scanning will start at this point, lexicographically + #[prost(string, tag="2")] + pub begin: ::prost::alloc::string::String, + /// If set, scanning will stop when it reaches this point or above, excluding this exact key + #[prost(string, optional, tag="3")] + pub exclusive_end: ::core::option::Option<::prost::alloc::string::String>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetResponse { + /// Value that was found for the requested key + #[prost(bytes="vec", tag="1")] + pub value: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetManyResponse { + /// Values that were found for the requested keys + #[prost(bytes="vec", repeated, tag="1")] + pub values: ::prost::alloc::vec::Vec<::prost::alloc::vec::Vec>, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GetByPrefixResponse { + /// KV are the key/value pairs that were found with the given prefix + #[prost(message, repeated, tag="1")] + pub key_values: ::prost::alloc::vec::Vec, + /// limit_reached is true if there is at least ONE MORE result than the requested limit + #[prost(bool, tag="2")] + pub limit_reached: bool, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct ScanResponse { + /// KV are the key/value pairs that were found during scan + #[prost(message, repeated, tag="1")] + pub key_values: ::prost::alloc::vec::Vec, + /// limit_reached is true if there is at least ONE MORE result than the requested limit + #[prost(bool, tag="2")] + pub limit_reached: bool, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Kv { + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, + #[prost(bytes="vec", tag="2")] + pub value: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct Config { + #[prost(int64, tag="1")] + pub start_block: i64, + #[prost(string, tag="2")] + pub input_module: ::prost::alloc::string::String, +} +/// This defines a KV Sink to be queried with a generic key access interface (Get, GetMany, Scan, Prefix calls). +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct GenericService { + #[prost(message, optional, tag="1")] + pub sink_config: ::core::option::Option, +} +/// This defines configuration to run a WASM query service on top of the KV store being sync'd. +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct WasmQueryService { + #[prost(message, optional, tag="1")] + pub sink_config: ::core::option::Option, + /// wasm exports: "kv_get_batch", "kv_get", "kv_scan", "kv_prefix" + #[prost(bytes="vec", tag="5")] + pub wasm_query_module: ::prost::alloc::vec::Vec, + /// Fully qualified Protobuf Service definition name + /// + /// sf.mycustom.v1.MyService + #[prost(string, tag="2")] + pub grpc_service: ::prost::alloc::string::String, +} +// @@protoc_insertion_point(module) diff --git a/docs/tutorial/src/pb/sf.substreams.sink.types.v1.rs b/docs/tutorial/src/pb/sf.substreams.sink.types.v1.rs new file mode 100644 index 0000000..ca2db27 --- /dev/null +++ b/docs/tutorial/src/pb/sf.substreams.sink.types.v1.rs @@ -0,0 +1,22 @@ +// @generated +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KvPairs { + #[prost(message, repeated, tag="2")] + pub pairs: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KvPair { + #[prost(string, tag="1")] + pub key: ::prost::alloc::string::String, + #[prost(bytes="vec", tag="2")] + pub value: ::prost::alloc::vec::Vec, +} +#[allow(clippy::derive_partial_eq_without_eq)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct KvKeys { + #[prost(string, repeated, tag="1")] + pub keys: ::prost::alloc::vec::Vec<::prost::alloc::string::String>, +} +// @@protoc_insertion_point(module) diff --git a/docs/tutorial/substreams.yaml b/docs/tutorial/substreams.yaml index 22e5df3..23d37df 100644 --- a/docs/tutorial/substreams.yaml +++ b/docs/tutorial/substreams.yaml @@ -5,7 +5,7 @@ package: protobuf: files: - - block_meta.proto + - eth_block_meta.proto importPaths: - ./proto