diff --git a/.github/workflows/linter.yaml b/.github/workflows/linter.yaml index 425f703d..8d98ab90 100644 --- a/.github/workflows/linter.yaml +++ b/.github/workflows/linter.yaml @@ -9,7 +9,7 @@ on: env: CARGO_TERM_COLOR: always CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse - RUST_VERSION_NEW: "1.88.0" + RUST_VERSION_NEW: "stable" jobs: check-code-style: @@ -21,16 +21,29 @@ jobs: runs-on: ubuntu-24.04 steps: - - name: Install rust + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Install nightly rust + if: matrix.rust_version == 'RUST_VERSION_NEW' + uses: dtolnay/rust-toolchain@nightly + with: + components: clippy, rustfmt + + - name: Install stable rust uses: dtolnay/rust-toolchain@v1 with: toolchain: ${{ env[matrix.rust_version] }} components: clippy, rustfmt - - name: Checkout - uses: actions/checkout@v4 - with: - submodules: true + - name: Rust cache + uses: Swatinem/rust-cache@v2 + + - name: Cargo install + if: matrix.rust_version == 'RUST_VERSION_NEW' + run: cargo install --locked cargo-sort cargo-udeps - name: Rust version id: rust_version_step @@ -40,12 +53,17 @@ jobs: echo "CARGO_INCREMENTAL=$CARGO_INCREMENTAL" echo "::set-output name=version::$(rustc --version | cut -d ' ' -f 2)" - - name: Rust cache - uses: Swatinem/rust-cache@v2 - - name: Rustfmt check run: cargo fmt --check - name: Linter run: | cargo clippy --workspace --all-targets --no-deps --exclude=ydb-grpc -- -D warnings + + - name: Cargo sort check + if: matrix.rust_version == 'RUST_VERSION_NEW' + run: cargo sort --workspace --check + + - name: Unused dependencies check + if: matrix.rust_version == 'RUST_VERSION_NEW' + run: cargo +nightly udeps --all-targets \ No newline at end of file diff --git a/.github/workflows/rust-tests.yml b/.github/workflows/rust-tests.yml index f5e2a688..f39a78d0 100644 --- a/.github/workflows/rust-tests.yml +++ b/.github/workflows/rust-tests.yml @@ -11,8 +11,8 @@ on: env: CARGO_TERM_COLOR: always CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse - RUST_VERSION_OLD: "1.68.0" - RUST_VERSION_NEW: "1.88.0" + RUST_VERSION_OLD: "1.82" # aka MSRV + RUST_VERSION_NEW: "stable" jobs: tests: @@ -37,18 +37,30 @@ jobs: runs-on: ubuntu-24.04 steps: - - name: Show YDB server version - run: docker ps; docker exec ydb /ydbd -V + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Install nightly rust + if: matrix.rust_version == 'RUST_VERSION_NEW' + uses: dtolnay/rust-toolchain@nightly + with: + components: clippy, rustfmt - - name: Install rust - uses: dtolnay/rust-toolchain@v1 + - name: Install stable rust + uses: dtolnay/rust-toolchain@master # as described in https://github.com/dtolnay/rust-toolchain/blob/master/README.md?plain=1#L45 with: toolchain: ${{ env[matrix.rust_version] }} + components: clippy, rustfmt - - name: Checkout - uses: actions/checkout@v4 + - name: Rust cache + uses: Swatinem/rust-cache@v2 with: - submodules: true + key: ${{ env[matrix.rust_version] }} + + - name: Show YDB server version + run: docker ps; docker exec ydb /ydbd -V - name: Rust version id: rust_version_step @@ -56,10 +68,7 @@ jobs: rustc --version cargo --version echo "CARGO_INCREMENTAL=$CARGO_INCREMENTAL" - echo "::set-output name=version::$(rustc --version | cut -d ' ' -f 2)" - - - name: Rust cache - uses: Swatinem/rust-cache@v2 + echo "name=version::$(rustc --version | cut -d ' ' -f 2)" >> $GITHUB_OUTPUT - name: Run tests env: diff --git a/.github/workflows/security.yml b/.github/workflows/security.yml new file mode 100644 index 00000000..5a672e97 --- /dev/null +++ b/.github/workflows/security.yml @@ -0,0 +1,65 @@ +name: Security + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +env: + CARGO_TERM_COLOR: always + CARGO_REGISTRIES_CRATES_IO_PROTOCOL: sparse + RUST_VERSION_NEW: "stable" + +jobs: + tests: + strategy: + fail-fast: false + matrix: + rust_version: ["RUST_VERSION_NEW" ] + runs-on: ubuntu-24.04 + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + submodules: true + + - name: Install nightly rust + if: matrix.rust_version == 'RUST_VERSION_NEW' + uses: dtolnay/rust-toolchain@nightly + with: + components: clippy, rustfmt + + - name: Install stable rust + uses: dtolnay/rust-toolchain@master # as described in https://github.com/dtolnay/rust-toolchain/blob/master/README.md?plain=1#L45 + with: + toolchain: ${{ env[matrix.rust_version] }} + components: clippy, rustfmt + + - name: Rust cache + uses: Swatinem/rust-cache@v2 + with: + key: ${{ env[matrix.rust_version] }} + + - name: Rust version + id: rust_version_step + run: | + rustc --version + cargo --version + echo "CARGO_INCREMENTAL=$CARGO_INCREMENTAL" + echo "name=version::$(rustc --version | cut -d ' ' -f 2)" >> $GITHUB_OUTPUT + + - name: Cargo install + if: matrix.rust_version == 'RUST_VERSION_NEW' + run: cargo install --locked cargo-audit cargo-pants + + - name: Cargo audit + if: matrix.rust_version == 'RUST_VERSION_NEW' + run: | + cargo audit + + - name: Cargi pants + if: matrix.rust_version == 'RUST_VERSION_NEW' + run: | + cargo pants \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index 15fb581e..8d8330d4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -13,15 +13,15 @@ dependencies = [ [[package]] name = "adler2" -version = "2.0.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" [[package]] name = "ahash" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" +checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" dependencies = [ "cfg-if", "once_cell", @@ -31,9 +31,9 @@ dependencies = [ [[package]] name = "aho-corasick" -version = "0.7.18" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" +checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" dependencies = [ "memchr", ] @@ -45,12 +45,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" [[package]] -name = "ansi_term" -version = "0.12.1" +name = "android-tzdata" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" + +[[package]] +name = "android_system_properties" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" dependencies = [ - "winapi", + "libc", ] [[package]] @@ -70,24 +76,24 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.10" +version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" +checksum = "862ed96ca487e809f1c8e5a8447f6ee2cf102f846893800b20cebdf541fc6bbd" [[package]] name = "anstyle-parse" -version = "0.2.6" +version = "0.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" +checksum = "4e7644824f0aa2c7b9384579234ef10eb7efb6a0deb83f9630a49594dd9c15c2" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.1.2" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" +checksum = "6c8bdeb6047d8983be085bab0ba1472e6dc604e7041dbf6fcd5e71523014fae9" dependencies = [ "windows-sys 0.59.0", ] @@ -104,40 +110,19 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.53" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94a45b455c14666b85fc40a019e8ab9eb75e3a124e05494f5397122bc9eb06e0" - -[[package]] -name = "async-stream" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "171374e7e3b2504e0e5236e3b59260560f9fe94bfe9ac39ba5e4e929c5590625" -dependencies = [ - "async-stream-impl", - "futures-core", -] - -[[package]] -name = "async-stream-impl" -version = "0.3.2" +version = "1.0.98" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "648ed8c8d2ce5409ccd57453d9d1b214b342a0d69376a6feda1fd6cae3299308" -dependencies = [ - "proc-macro2", - "quote", - "syn 1.0.109", -] +checksum = "e16d2d3311acee920a9eb8d33b8cbc1787ce4a264e85f964c2404b969bdcd487" [[package]] name = "async-trait" -version = "0.1.52" +version = "0.1.88" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "061a7acccaa286c011ddc30970520b98fa40e00c9d644633fb26b5fc63a265e3" +checksum = "e539d3fca749fcee5236ab05e93a52867dd549cc157c8cb7f99595f3cedffdb5" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] @@ -146,62 +131,68 @@ version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2ce4f10ea3abcd6617873bae9f91d1c5332b4a778bd9ce34d0cd517474c1de82" +[[package]] +name = "atomic-waker" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" + [[package]] name = "autocfg" -version = "1.1.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" [[package]] name = "axum" -version = "0.5.17" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acee9fd5073ab6b045a275b3e709c163dd36c90685219cb21804a147b58dba43" +checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" dependencies = [ - "async-trait", "axum-core", - "bitflags", "bytes", "futures-util", - "http", - "http-body", - "hyper", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", "itoa", "matchit", "memchr", "mime", "percent-encoding", "pin-project-lite", + "rustversion", "serde", "sync_wrapper", - "tokio", "tower", - "tower-http", "tower-layer", "tower-service", ] [[package]] name = "axum-core" -version = "0.2.9" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37e5939e02c56fecd5c017c37df4238c0a839fa76b7f97acdd7efb804fd181cc" +checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" dependencies = [ - "async-trait", "bytes", - "futures-util", - "http", - "http-body", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", "mime", + "pin-project-lite", + "rustversion", + "sync_wrapper", "tower-layer", "tower-service", ] [[package]] name = "backtrace" -version = "0.3.74" +version = "0.3.75" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" +checksum = "6806a6321ec58106fea15becdad98371e28d92ccbc7c8f1b3b6dd724fe8f1002" dependencies = [ "addr2line", "cfg-if", @@ -214,15 +205,9 @@ dependencies = [ [[package]] name = "base64" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" - -[[package]] -name = "base64" -version = "0.13.0" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "base64" @@ -237,66 +222,70 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] -name = "block-buffer" -version = "0.10.2" +name = "bitflags" +version = "2.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bf7fe51849ea569fd452f37822f606a5cabb684dc918707a0193fd4664ff324" -dependencies = [ - "generic-array", -] +checksum = "1b8e56985ec62d17e9c1001dc89c88ecd7dc08e47eba5ec7c29c7b5eeecde967" [[package]] -name = "buf_redux" -version = "0.8.4" +name = "block-buffer" +version = "0.10.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b953a6887648bb07a535631f2bc00fbdb2a2216f135552cb3f534ed136b9c07f" +checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" dependencies = [ - "memchr", - "safemem", + "generic-array", ] [[package]] name = "bumpalo" -version = "3.12.0" +version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d261e256854913907f67ed06efbc3338dfe6179796deefc1ff763fc1aee5535" +checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" [[package]] name = "byteorder" -version = "1.4.3" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" +checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.1.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" +checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.0.90" +version = "1.2.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cd6604a82acf3039f1144f54b8eb34e91ffba622051189e71b781822d5ee1f5" +checksum = "4ad45f4f74e4e20eaa392913b7b33a7091c87e59628f4dd27888205ad888843c" +dependencies = [ + "shlex", +] [[package]] name = "cfg-if" -version = "1.0.0" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9555578bc9e57714c812a1f84e4fc5b4d21fcb063490c624de019f7464c91268" + +[[package]] +name = "cfg_aliases" +version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" [[package]] name = "chrono" -version = "0.4.19" +version = "0.4.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" +checksum = "c469d952047f47f91b68d1cba3f10d63c11d73e4636f24f08daf0278abf01c4d" dependencies = [ - "libc", - "num-integer", + "android-tzdata", + "iana-time-zone", "num-traits", "serde", - "time 0.1.45", - "winapi", + "windows-link", ] [[package]] @@ -318,9 +307,9 @@ checksum = "914c8c79fb560f238ef6429439a30023c862f7a28e688c58f7203f12b29970bd" dependencies = [ "anstream", "anstyle", - "bitflags", + "bitflags 1.3.2", "clap_lex", - "strsim", + "strsim 0.10.0", ] [[package]] @@ -329,10 +318,10 @@ version = "4.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9644cd56d6b87dbe899ef8b053e331c0637664e9e21a33dfcdc36093f5c5c4" dependencies = [ - "heck 0.4.0", + "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.104", ] [[package]] @@ -348,21 +337,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "129026dd5a8a9592d96916258f3a5379589e513ea5e86aeb0bd2530286e44e9e" dependencies = [ "libc", - "time 0.3.37", + "time", "winapi", ] [[package]] name = "colorchoice" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" +checksum = "b05b61dc5112cbb17e4b6cd61790d9845d13888356391624cbe7e41efeac1e75" [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "b2a6cd9ae233e7f62ba4e9353e81a88df7fc8a5987b8d445b4d90c879bd156f6" dependencies = [ "core-foundation-sys", "libc", @@ -370,24 +359,24 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.1" +version = "0.2.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95059428f66df56b63431fdb4e1947ed2190586af5c5a8a8b71122bdf5a7f469" +checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" dependencies = [ "libc", ] [[package]] name = "crypto-common" -version = "0.1.3" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57952ca27b5e3606ff4dd79b0020231aaf9d6aa76dc05fd30137538c50bd3ce8" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" dependencies = [ "generic-array", "typenum", @@ -395,9 +384,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.14.3" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0808e1bd8671fb44a113a14e13497557533369847788fa2ae912b6ebfce9fa8" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -405,29 +394,35 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.14.3" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "001d80444f28e193f30c2f293455da62dcf9a6b29918a4253152ae2b1de592cb" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", "proc-macro2", "quote", - "strsim", - "syn 1.0.109", + "strsim 0.11.1", + "syn 2.0.104", ] [[package]] name = "darling_macro" -version = "0.14.3" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b36230598a2d5de7ec1c6f51f72d8a99a9208daff41de2084d06e3fd3ea56685" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn 1.0.109", + "syn 2.0.104", ] +[[package]] +name = "data-encoding" +version = "2.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" + [[package]] name = "decimal-rs" version = "0.1.43" @@ -440,9 +435,9 @@ dependencies = [ [[package]] name = "deranged" -version = "0.3.11" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" +checksum = "9c9e6a11ca8224451684bc0d7d5a7adbf8f2fd6887261a1cfc3c0432f9d4068e" dependencies = [ "powerfmt", ] @@ -460,95 +455,104 @@ dependencies = [ [[package]] name = "derive_builder" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8d67778784b508018359cbc8696edb3db78160bab2c2a28ba7f56ef6932997f8" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" dependencies = [ "derive_builder_macro", ] [[package]] name = "derive_builder_core" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c11bdc11a0c47bc7d37d582b5285da6849c96681023680b906673c5707af7b0f" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" dependencies = [ "darling", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] name = "derive_builder_macro" -version = "0.12.0" +version = "0.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebcda35c7a396850a55ffeac740804b40ffec779b98fffbb1738f4033f0ee79e" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 1.0.109", + "syn 2.0.104", ] -[[package]] -name = "difference" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" - [[package]] name = "digest" -version = "0.10.3" +version = "0.10.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2fb860ca6fafa5552fb6d0e816a69c8e49f0908bf524e30a90d97c85892d506" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" dependencies = [ "block-buffer", "crypto-common", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + [[package]] name = "downcast" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4bb454f0228b18c7f4c3b0ebbee346ed9c52e7443b0999cd543ff3571205701d" +checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" [[package]] name = "either" -version = "1.6.1" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" +checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] [[package]] -name = "fastrand" -version = "1.7.0" +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + +[[package]] +name = "errno" +version = "0.3.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3fcf0cee53519c866c09b5de1f6c56ff9d647101f81c1964fa632e148896cdf" +checksum = "778e2ac28f6c47af28e4907f13ffd1e1ddbd400980a9abd7c8df189bf578a5ad" dependencies = [ - "instant", + "libc", + "windows-sys 0.60.2", ] [[package]] -name = "fixedbitset" -version = "0.4.1" +name = "fastrand" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "279fb028e20b3c4c320317955b77c5e0c9701f05a1d309905d6fc702cdc5053e" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" [[package]] -name = "float-cmp" -version = "0.8.0" +name = "fixedbitset" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1267f4ac4f343772758f7b1bdcbe767c218bbab93bb432acbf5162bbf85a6c4" -dependencies = [ - "num-traits", -] +checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" [[package]] name = "fnv" @@ -558,25 +562,24 @@ checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" [[package]] name = "form_urlencoded" -version = "1.0.1" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ - "matches", "percent-encoding", ] [[package]] name = "fragile" -version = "1.1.0" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8da1b8f89c5b5a5b7e59405cfcf0bb9588e5ed19f0b57a4cd542bbba3f164a6d" +checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" [[package]] name = "futures-channel" -version = "0.3.21" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -584,44 +587,44 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.21" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-io" -version = "0.3.21" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc4045962a5a5e935ee2fdedaa4e08284547402885ab326734432bed5d12966b" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-macro" -version = "0.3.21" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33c1e13800337f4d4d7a316bf45a567dbcb6ffe087f16424852d97e97a91f512" +checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] name = "futures-sink" -version = "0.3.21" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.21" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.21" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", "futures-io", @@ -645,9 +648,9 @@ dependencies = [ [[package]] name = "generic-array" -version = "0.14.5" +version = "0.14.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" dependencies = [ "typenum", "version_check", @@ -655,13 +658,29 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.12" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" +dependencies = [ + "cfg-if", + "js-sys", + "libc", + "wasi 0.11.1+wasi-snapshot-preview1", + "wasm-bindgen", +] + +[[package]] +name = "getrandom" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "190092ea657667030ac6a35e305e62fc4dd69fd98ac98631e5d3a2b1575a12b5" +checksum = "26145e563e54f2cadc477553f1ec5ee650b00862f0a58bcd12cbdc5f0ea2d2f4" dependencies = [ "cfg-if", + "js-sys", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "r-efi", + "wasi 0.14.2+wasi-0.2.4", + "wasm-bindgen", ] [[package]] @@ -672,28 +691,41 @@ checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" [[package]] name = "h2" -version = "0.3.11" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9f1f717ddc7b2ba36df7e871fd88db79326551d3d6f1fc406fbfd28b582ff8e" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", "futures-core", "futures-sink", "futures-util", - "http", + "http 0.2.12", "indexmap", "slab", "tokio", - "tokio-util 0.6.9", + "tokio-util", "tracing", ] [[package]] -name = "hashbrown" -version = "0.11.2" +name = "h2" +version = "0.4.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab5ef0d4909ef3724cc8cce6ccc8572c5c817592e9285f5464f8e86f8bd3726e" +checksum = "17da50a276f1e01e0ba6c029e47b7100754904ee8a278f886546e98575380785" +dependencies = [ + "atomic-waker", + "bytes", + "fnv", + "futures-core", + "futures-sink", + "http 1.3.1", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] [[package]] name = "hashbrown" @@ -705,6 +737,12 @@ dependencies = [ "allocator-api2", ] +[[package]] +name = "hashbrown" +version = "0.15.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5971ac85611da7067dbfcabef3c70ebb5606018acd9e2a3903a0da507521e0d5" + [[package]] name = "hashers" version = "1.0.1" @@ -716,18 +754,17 @@ dependencies = [ [[package]] name = "headers" -version = "0.3.7" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4cff78e5788be1e0ab65b04d306b2ed5092c815ec97ec70f4ebd5aee158aa55d" +checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270" dependencies = [ - "base64 0.13.0", - "bitflags", + "base64 0.21.7", "bytes", "headers-core", - "http", + "http 0.2.12", "httpdate", "mime", - "sha-1", + "sha1", ] [[package]] @@ -736,44 +773,43 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7f66481bfee273957b1f20485a4ff3362987f85b2c236580d81b4eb7a326429" dependencies = [ - "http", + "http 0.2.12", ] [[package]] name = "heck" -version = "0.3.3" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c" -dependencies = [ - "unicode-segmentation", -] +checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" [[package]] name = "heck" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" -version = "0.1.19" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] +checksum = "fc0fef456e4baa96da950455cd02c081ca953b141298e41db3fc7e36b1da849c" [[package]] -name = "hermit-abi" -version = "0.4.0" +name = "http" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" +dependencies = [ + "bytes", + "fnv", + "itoa", +] [[package]] name = "http" -version = "0.2.8" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" dependencies = [ "bytes", "fnv", @@ -782,166 +818,365 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", - "http", + "http 0.2.12", "pin-project-lite", ] [[package]] -name = "http-range-header" -version = "0.3.0" +name = "http-body" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1efedce1fb8e6913f23e0c92de8e62cd5b772a67e7b3946df930a62566c93184" +dependencies = [ + "bytes", + "http 1.3.1", +] + +[[package]] +name = "http-body-util" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0bfe8eed0a9285ef776bb792479ea3834e8b94e13d615c2f66d03dd50a435a29" +checksum = "b021d93e26becf5dc7e1b75b1bed1fd93124b374ceb73f43d4d4eafec896a64a" +dependencies = [ + "bytes", + "futures-core", + "http 1.3.1", + "http-body 1.0.1", + "pin-project-lite", +] [[package]] name = "httparse" -version = "1.8.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" +checksum = "6dbf3de79e51f3d586ab4cb9d5c3e2c14aa28ed23d180cf89b4df0454a69cc87" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.17" +version = "0.14.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "043f0e083e9901b6cc658a77d1eb86f4fc650bbb977a4337dd63192826aa85dd" +checksum = "41dfc780fdec9373c01bae43289ea34c972e40ee3c9f6b3c8801a35f35586ce7" dependencies = [ "bytes", "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", + "h2 0.3.26", + "http 0.2.12", + "http-body 0.4.6", "httparse", "httpdate", "itoa", "pin-project-lite", - "socket2 0.4.4", + "socket2", "tokio", "tower-service", "tracing", "want", ] +[[package]] +name = "hyper" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +dependencies = [ + "bytes", + "futures-channel", + "futures-util", + "h2 0.4.11", + "http 1.3.1", + "http-body 1.0.1", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "smallvec", + "tokio", + "want", +] + [[package]] name = "hyper-rustls" -version = "0.23.2" +version = "0.27.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1788965e61b367cd03a62950836d5cd41560c3577d90e40e0819373194d1661c" +checksum = "e3c93eb611681b207e1fe55d5a71ecf91572ec8a6705cdb6857f7d8d5242cf58" dependencies = [ - "http", - "hyper", + "http 1.3.1", + "hyper 1.6.0", + "hyper-util", "rustls", + "rustls-pki-types", "tokio", "tokio-rustls", + "tower-service", + "webpki-roots 1.0.1", ] [[package]] name = "hyper-timeout" -version = "0.4.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbb958482e8c7be4bc3cf272a766a2b0bf1a6755e7a6ae777f017a31d11b13b1" +checksum = "2b90d566bffbce6a75bd8b09a05aa8c2cb1fabb6cb348f8840c9e4c90a0d83b0" dependencies = [ - "hyper", + "hyper 1.6.0", + "hyper-util", "pin-project-lite", "tokio", - "tokio-io-timeout", + "tower-service", ] [[package]] -name = "ident_case" -version = "1.0.1" +name = "hyper-util" +version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" +checksum = "dc2fdfdbff08affe55bb779f33b053aa1fe5dd5b54c257343c17edfa55711bdb" +dependencies = [ + "base64 0.22.1", + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "http 1.3.1", + "http-body 1.0.1", + "hyper 1.6.0", + "ipnet", + "libc", + "percent-encoding", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", +] [[package]] -name = "idna" -version = "0.2.3" +name = "iana-time-zone" +version = "0.1.63" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +checksum = "b0c919e5debc312ad217002b8048a17b7d83f80703865bbfcfebb0458b0b27d8" dependencies = [ - "matches", - "unicode-bidi", - "unicode-normalization", + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "log", + "wasm-bindgen", + "windows-core", ] [[package]] -name = "indexmap" -version = "1.8.0" +name = "iana-time-zone-haiku" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "282a6247722caba404c065016bbfa522806e51714c34f5dfc3e4a3a46fcb4223" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" dependencies = [ - "autocfg", - "hashbrown 0.11.2", + "cc", ] [[package]] -name = "instant" -version = "0.1.12" +name = "icu_collections" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" dependencies = [ - "cfg-if", + "displaydoc", + "potential_utf", + "yoke", + "zerofrom", + "zerovec", ] [[package]] -name = "ipnet" -version = "2.3.1" +name = "icu_locale_core" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68f2d64f2edebec4ce84ad108148e67e1064789bee435edc5b60ad398714a3a9" +checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] [[package]] -name = "is-terminal" -version = "0.4.15" +name = "icu_normalizer" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e19b23d53f35ce9f56aebc7d1bb4e6ac1e9c0db7ac85c8d1760c04379edced37" +checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" dependencies = [ - "hermit-abi 0.4.0", - "libc", - "windows-sys 0.59.0", + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "zerovec", ] [[package]] -name = "itertools" -version = "0.10.3" +name = "icu_normalizer_data" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" + +[[package]] +name = "icu_properties" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" +checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" dependencies = [ - "either", + "displaydoc", + "icu_collections", + "icu_locale_core", + "icu_properties_data", + "icu_provider", + "potential_utf", + "zerotrie", + "zerovec", ] [[package]] -name = "itoa" -version = "1.0.1" +name = "icu_properties_data" +version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" +checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" [[package]] -name = "js-sys" -version = "0.3.56" +name = "icu_provider" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a38fc24e30fd564ce974c02bf1d337caddff65be6cc4735a1f7eab22a7440f04" +checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" dependencies = [ - "wasm-bindgen", + "displaydoc", + "icu_locale_core", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerotrie", + "zerovec", ] [[package]] -name = "jsonwebtoken" -version = "7.2.0" +name = "ident_case" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" + +[[package]] +name = "idna" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" +dependencies = [ + "idna_adapter", + "smallvec", + "utf8_iter", +] + +[[package]] +name = "idna_adapter" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" +dependencies = [ + "icu_normalizer", + "icu_properties", +] + +[[package]] +name = "indexmap" +version = "2.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe4cd85333e22411419a0bcae1297d25e58c9443848b11dc6a86fefe8c78a661" +dependencies = [ + "equivalent", + "hashbrown 0.15.4", +] + +[[package]] +name = "ipnet" +version = "2.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" + +[[package]] +name = "iri-string" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +dependencies = [ + "memchr", + "serde", +] + +[[package]] +name = "is-terminal" +version = "0.4.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e04d7f318608d35d4b61ddd75cbdaee86b023ebe2bd5a66ee0915f0bf93095a9" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys 0.59.0", +] + +[[package]] +name = "itertools" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" +dependencies = [ + "either", +] + +[[package]] +name = "itertools" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "1.0.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" + +[[package]] +name = "js-sys" +version = "0.3.77" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +dependencies = [ + "once_cell", + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "9.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "afabcc15e437a6484fc4f12d0fd63068fe457bf93f1c148d3d9649c60b103f32" +checksum = "5a87cc7a48537badeae96744432de36f4be2b4a34a05a5ef32e9dd8a1c169dde" dependencies = [ - "base64 0.12.3", + "base64 0.22.1", + "js-sys", "pem", "ring", "serde", @@ -951,33 +1186,49 @@ dependencies = [ [[package]] name = "lazy_static" -version = "1.4.0" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" +checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" [[package]] name = "libc" -version = "0.2.169" +version = "0.2.174" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" + +[[package]] +name = "linux-raw-sys" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5aba8db14291edd000dfcc4d620c7ebfb122c613afb886ca8803fa4e128a20a" +checksum = "cd945864f07fe9f5371a27ad7b52a172b4b499999f1d97574c9fa68373937e12" + +[[package]] +name = "litemap" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" [[package]] name = "lock_api" -version = "0.4.6" +version = "0.4.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" dependencies = [ + "autocfg", "scopeguard", ] [[package]] name = "log" -version = "0.4.14" +version = "0.4.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] +checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" + +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" [[package]] name = "matchers" @@ -985,38 +1236,32 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8263075bb86c5a1b1427b5ae862e8889656f126e9f77c484496e8b47cf5c5558" dependencies = [ - "regex-automata", + "regex-automata 0.1.10", ] -[[package]] -name = "matches" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" - [[package]] name = "matchit" -version = "0.5.0" +version = "0.8.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73cbba799671b762df5a175adf59ce145165747bb891505c43d09aefbbf38beb" +checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" [[package]] name = "memchr" -version = "2.4.1" +version = "2.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" +checksum = "32a282da65faaf38286cf3be983213fcf1d2e2a58700e808f83f4ea9a4804bc0" [[package]] name = "mime" -version = "0.3.16" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "mime_guess" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4192263c238a5f0d0c6bfd21f336a313a4ce1c450542449ca191bb657b4642ef" +checksum = "f7c44f8e672c00fe5308fa235f821cb4198414e1c77935c1ab6948d3fd78550e" dependencies = [ "mime", "unicase", @@ -1024,9 +1269,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" dependencies = [ "adler2", ] @@ -1038,20 +1283,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi 0.11.1+wasi-snapshot-preview1", "windows-sys 0.48.0", ] [[package]] name = "mockall" -version = "0.10.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ab571328afa78ae322493cacca3efac6a0f2e0a67305b4df31fd439ef129ac0" +checksum = "39a6bfcc6c8c7eed5ee98b9c3e33adc726054389233e201c95dab2d41a3839d2" dependencies = [ "cfg-if", "downcast", "fragile", - "lazy_static", "mockall_derive", "predicates", "predicates-tree", @@ -1059,68 +1303,55 @@ dependencies = [ [[package]] name = "mockall_derive" -version = "0.10.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7e25b214433f669161f414959594216d8e6ba83b6679d3db96899c0b4639033" +checksum = "25ca3004c2efe9011bd4e461bd8256445052b9615405b4f7ea43fc8ca5c20898" dependencies = [ "cfg-if", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] -name = "multimap" -version = "0.8.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5ce46fe64a9d73be07dcbe690a38ce1b293be448fd8ce1e6c1b8062c9f72c6a" - -[[package]] -name = "multipart" -version = "0.18.0" +name = "multer" +version = "2.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00dec633863867f29cb39df64a397cdf4a6354708ddd7759f70c7fb51c5f9182" +checksum = "01acbdc23469fd8fe07ab135923371d5f5a422fbf9c522158677c8eb15bc51c2" dependencies = [ - "buf_redux", + "bytes", + "encoding_rs", + "futures-util", + "http 0.2.12", "httparse", "log", + "memchr", "mime", - "mime_guess", - "quick-error", - "rand", - "safemem", - "tempfile", - "twoway", + "spin", + "version_check", ] [[package]] -name = "normalize-line-endings" -version = "0.3.0" +name = "multimap" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61807f77802ff30975e01f4f071c8ba10c022052f98b3294119f3e615d13e5be" +checksum = "1d87ecb2933e8aeadb3e3a02b828fed80a7528047e68b4f424523a0981a3a084" [[package]] name = "ntest" -version = "0.7.3" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "984caf6c8aa869418ef88062fc685d07d50c04308e63f7eaff6a395b1f5aff33" +checksum = "fb183f0a1da7a937f672e5ee7b7edb727bf52b8a52d531374ba8ebb9345c0330" dependencies = [ - "ntest_proc_macro_helper", "ntest_test_cases", "ntest_timeout", ] -[[package]] -name = "ntest_proc_macro_helper" -version = "0.7.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "115562228962147ca51748d19446a4261535a7b6a7b5ff02681e527dcefc22f7" - [[package]] name = "ntest_test_cases" -version = "0.7.3" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c03e3201148714c580c5cf1ef68b1ed4039203068193197834a43503164b8237" +checksum = "16d0d3f2a488592e5368ebbe996e7f1d44aa13156efad201f5b4d84e150eaa93" dependencies = [ "proc-macro2", "quote", @@ -1129,11 +1360,10 @@ dependencies = [ [[package]] name = "ntest_timeout" -version = "0.7.3" +version = "0.9.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a870300c30d4224cb16022a4660fd8084d6cb4d29618563c3016b50cc757d1e7" +checksum = "fcc7c92f190c97f79b4a332f5e81dcf68c8420af2045c936c9be0bc9de6f63b5" dependencies = [ - "ntest_proc_macro_helper", "proc-macro-crate", "proc-macro2", "quote", @@ -1141,46 +1371,44 @@ dependencies = [ ] [[package]] -name = "num" -version = "0.4.0" +name = "nu-ansi-term" +version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43db66d1170d347f9a065114077f7dccb00c1b9478c89384490a3425279a4606" +checksum = "77a8165726e8236064dbb45459242600304b42a5ea24ee2948e18e023bf7ba84" dependencies = [ - "num-bigint 0.4.3", - "num-complex", - "num-integer", - "num-iter", - "num-rational", - "num-traits", + "overload", + "winapi", ] [[package]] -name = "num-bigint" -version = "0.2.6" +name = "num" +version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "090c7f9998ee0ff65aa5b723e4009f7b217707f1fb5ea551329cc4d6231fb304" +checksum = "35bd024e8b2ff75562e5f34e7f4905839deb4b22955ef5e73d2fea1b9813cb23" dependencies = [ - "autocfg", + "num-bigint", + "num-complex", "num-integer", + "num-iter", + "num-rational", "num-traits", ] [[package]] name = "num-bigint" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ - "autocfg", "num-integer", "num-traits", ] [[package]] name = "num-complex" -version = "0.4.0" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26873667bbbb7c5182d4a37c1add32cdf09f841af72da53318fdb81543c15085" +checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" dependencies = [ "num-traits", ] @@ -1193,19 +1421,18 @@ checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" [[package]] name = "num-integer" -version = "0.1.44" +version = "0.1.46" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" +checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" dependencies = [ - "autocfg", "num-traits", ] [[package]] name = "num-iter" -version = "0.1.42" +version = "0.1.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b2021c8337a54d21aca0d59a92577a029af9431cb59b909b03252b9c164fad59" +checksum = "1429034a0490724d0075ebb2bc9e875d6503c3cf69e235a8941aa757d83ef5bf" dependencies = [ "autocfg", "num-integer", @@ -1214,32 +1441,31 @@ dependencies = [ [[package]] name = "num-rational" -version = "0.4.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d41702bd167c2df5520b384281bc111a4b5efcf7fbc4c9c222c815b07e0a6a6a" +checksum = "f83d14da390562dca69fc84082e73e548e1ad308d24accdedd2720017cb37824" dependencies = [ - "autocfg", - "num-bigint 0.4.3", + "num-bigint", "num-integer", "num-traits", ] [[package]] name = "num-traits" -version = "0.2.14" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" +checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" dependencies = [ "autocfg", ] [[package]] name = "num_cpus" -version = "1.13.1" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +checksum = "91df4bbde75afed763b708b7eee1e8e7651e02d97f6d5dd763e89367e957b23b" dependencies = [ - "hermit-abi 0.1.19", + "hermit-abi", "libc", ] @@ -1254,21 +1480,27 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.2" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "openssl-probe" -version = "0.1.5" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + +[[package]] +name = "overload" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" [[package]] name = "parking_lot" -version = "0.12.3" +version = "0.12.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27" +checksum = "70d58bf43669b5795d1576d0641cfb6fbb2057bf629506267a92807158584a13" dependencies = [ "lock_api", "parking_lot_core", @@ -1276,44 +1508,44 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.1" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "28141e0cc4143da2443301914478dc976a61ffdb3f043058310c70df2fed8954" +checksum = "bc838d2a56b5b1a6c25f55575dfc605fabb63bb2365f6c2353ef9159aa69e4a5" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys 0.32.0", + "windows-targets 0.52.6", ] [[package]] name = "pbjson" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "048f9ac93c1eab514f9470c4bc8d97ca2a0a236b84f45cc19d69a59fc11467f6" +checksum = "c7e6349fa080353f4a597daffd05cb81572a9c031a6d4fff7e504947496fcc68" dependencies = [ - "base64 0.13.0", + "base64 0.21.7", "serde", ] [[package]] name = "pbjson-build" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bdbb7b706f2afc610f3853550cdbbf6372fd324824a087806bd4480ea4996e24" +checksum = "6eea3058763d6e656105d1403cb04e0a41b7bbac6362d413e7c33be0c32279c9" dependencies = [ - "heck 0.4.0", - "itertools", + "heck 0.5.0", + "itertools 0.13.0", "prost", "prost-types", ] [[package]] name = "pbjson-types" -version = "0.5.1" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a88c8d87f99a4ac14325e7a4c24af190fca261956e3b82dd7ed67e77e6c7043" +checksum = "e54e5e7bfb1652f95bc361d76f3c780d8e526b134b85417e774166ee941f0887" dependencies = [ "bytes", "chrono", @@ -1326,26 +1558,25 @@ dependencies = [ [[package]] name = "pem" -version = "0.8.3" +version = "3.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd56cbd21fea48d0c440b41cd69c589faacade08c992d9a54e471b79d0fd13eb" +checksum = "38af38e8470ac9dee3ce1bae1af9c1671fffc44ddfd8bd1d0a3445bf349a8ef3" dependencies = [ - "base64 0.13.0", - "once_cell", - "regex", + "base64 0.22.1", + "serde", ] [[package]] name = "percent-encoding" -version = "2.1.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "petgraph" -version = "0.6.0" +version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a13a2fa9d0b63e5f22328828741e523766fff0ee9e779316902290dff3f824f" +checksum = "3672b37090dbd86368a4145bc067582552b29c27377cad4e0a306c97f9bd7772" dependencies = [ "fixedbitset", "indexmap", @@ -1353,29 +1584,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.10" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58ad3879ad3baf4e44784bc6a718a8698867bb991f8ce24d1bcbe2cfb4c3a75e" +checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.10" +version = "1.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "744b6f092ba29c3650faf274db506afd39944f48420f6c86b17cfe0ee1cb36bb" +checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" [[package]] name = "pin-utils" @@ -1383,6 +1614,15 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" +[[package]] +name = "potential_utf" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5a7c30837279ca13e7c867e9e40053bc68740f988cb07f7ca6df43cc734b585" +dependencies = [ + "zerovec", +] + [[package]] name = "powerfmt" version = "0.2.0" @@ -1391,34 +1631,34 @@ checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] name = "ppv-lite86" -version = "0.2.16" +version = "0.2.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" +checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +dependencies = [ + "zerocopy", +] [[package]] name = "predicates" -version = "1.0.8" +version = "3.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f49cfaf7fdaa3bfacc6fa3e7054e65148878354a5cfddcf661df4c851f8021df" +checksum = "a5d19ee57562043d37e82899fade9a22ebab7be9cef5026b07fda9cdd4293573" dependencies = [ - "difference", - "float-cmp", - "normalize-line-endings", + "anstyle", "predicates-core", - "regex", ] [[package]] name = "predicates-core" -version = "1.0.3" +version = "1.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da1c2388b1513e1b605fcec39a95e0a9e8ef088f71443ef37099fa9ae6673fcb" +checksum = "727e462b119fe9c93fd0eb1429a5f7647394014cf3c04ab2c0350eeb09095ffa" [[package]] name = "predicates-tree" -version = "1.0.5" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4d86de6de25020a36c6d3643a86d9a6a9f552107c0559c60ea03551b5e16c032" +checksum = "72dd2d6d381dfb73a193c7fca536518d7caee39fc8503f74e7dc0be0531b425c" dependencies = [ "predicates-core", "termtree", @@ -1426,37 +1666,37 @@ dependencies = [ [[package]] name = "prettyplease" -version = "0.1.9" +version = "0.2.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b83ec2d0af5c5c556257ff52c9f98934e243b9fd39604bfb2a9b75ec2e97f18" +checksum = "061c1221631e079b26479d25bbf2275bfe5917ae8419cd7e34f13bfc2aa7539a" dependencies = [ "proc-macro2", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] name = "proc-macro-crate" -version = "0.1.5" +version = "3.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" +checksum = "edce586971a4dfaa28950c6f18ed55e0406c1ab88bbce2c6f6293a7aaba73d35" dependencies = [ - "toml", + "toml_edit", ] [[package]] name = "proc-macro2" -version = "1.0.68" +version = "1.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b1106fec09662ec6dd98ccac0f81cef56984d0b49f75c92d8cbad76e20c005c" +checksum = "02b3e5e68a3a1a02aad3ec490a98007cbc13c37cbe84a3cd7b8e406d76e7f778" dependencies = [ "unicode-ident", ] [[package]] name = "prost" -version = "0.11.2" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a0841812012b2d4a6145fae9a6af1534873c32aa67fff26bd09f8fa42c83f95a" +checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", "prost-derive", @@ -1464,64 +1704,116 @@ dependencies = [ [[package]] name = "prost-build" -version = "0.11.2" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d8b442418ea0822409d9e7d047cbf1e7e9e1760b172bf9982cf29d517c93511" +checksum = "be769465445e8c1474e9c5dac2018218498557af32d9ed057325ec9a41ae81bf" dependencies = [ - "bytes", - "heck 0.4.0", - "itertools", - "lazy_static", + "heck 0.5.0", + "itertools 0.14.0", "log", "multimap", + "once_cell", "petgraph", "prettyplease", "prost", "prost-types", "regex", - "syn 1.0.109", + "syn 2.0.104", "tempfile", - "which", ] [[package]] name = "prost-derive" -version = "0.11.0" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7345d5f0e08c0536d7ac7229952590239e77abf0a0100a1b1d890add6ea96364" +checksum = "8a56d757972c98b346a9b766e3f02746cde6dd1cd1d1d563472929fdd74bec4d" dependencies = [ "anyhow", - "itertools", + "itertools 0.14.0", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] name = "prost-types" -version = "0.11.2" +version = "0.13.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "747761bc3dc48f9a34553bf65605cf6cb6288ba219f3450b4275dbd81539551a" +checksum = "52c2c1bf36ddb1a1c396b3601a3cec27c2462e45f07c386894ec3ccf5332bd16" dependencies = [ - "bytes", "prost", ] [[package]] -name = "quick-error" -version = "1.2.3" +name = "quinn" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.12", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1d01941d82fa2ab50be1e79e6714289dd7cde78eba4c074bc5a4374f650dfe0" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +dependencies = [ + "bytes", + "getrandom 0.3.3", + "lru-slab", + "rand 0.9.1", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.12", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fcebb1209ee276352ef14ff8732e24cc2b02bbac986cd74a4c81bcb2f9881970" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] [[package]] name = "quote" -version = "1.0.33" +version = "1.0.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "1885c039570dc00dcb4ff087a89e185fd56bae234ddc7f056a945bf36467248d" dependencies = [ "proc-macro2", ] +[[package]] +name = "r-efi" +version = "5.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" + [[package]] name = "rand" version = "0.8.5" @@ -1529,8 +1821,18 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha", - "rand_core", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fbfd9d094a40bf3ae768db9361049ace4c0e04a4fd6b359518bd7b73a73dd97" +dependencies = [ + "rand_chacha 0.9.0", + "rand_core 0.9.3", ] [[package]] @@ -1540,7 +1842,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "rand_core", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +dependencies = [ + "ppv-lite86", + "rand_core 0.9.3", ] [[package]] @@ -1549,7 +1861,16 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom", + "getrandom 0.2.16", +] + +[[package]] +name = "rand_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" +dependencies = [ + "getrandom 0.3.3", ] [[package]] @@ -1560,27 +1881,28 @@ checksum = "36ea961700fd7260e7fa3701c8287d901b2172c51f9c1421fa0f21d7f7e184b7" dependencies = [ "clocksource", "parking_lot", - "thiserror", + "thiserror 1.0.69", ] [[package]] name = "redox_syscall" -version = "0.2.10" +version = "0.5.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8383f39639269cde97d255a32bdb68c047337295414940c68bdd30c2e13203ff" +checksum = "0d04b7d0ee6b4a0207a0a7adb104d23ecb0b47d6beae7152d0fa34b692b29fd6" dependencies = [ - "bitflags", + "bitflags 2.9.1", ] [[package]] name = "regex" -version = "1.5.5" +version = "1.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" +checksum = "b544ef1b4eac5dc2db33ea63606ae9ffcfac26c1416a2806ae0bf5f56b201191" dependencies = [ "aho-corasick", "memchr", - "regex-syntax", + "regex-automata 0.4.9", + "regex-syntax 0.8.5", ] [[package]] @@ -1589,136 +1911,170 @@ version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6c230d73fb8d8c1b9c0b3135c5142a8acee3a0558fb8db5cf1cb65f8d7862132" dependencies = [ - "regex-syntax", + "regex-syntax 0.6.29", +] + +[[package]] +name = "regex-automata" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "809e8dc61f6de73b46c85f4c96486310fe304c434cfa43669d7b40f711150908" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax 0.8.5", ] [[package]] name = "regex-syntax" -version = "0.6.25" +version = "0.6.29" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" +checksum = "f162c6dd7b008981e4d40210aca20b4bd0f9b60ca9271061b07f78537722f2e1" [[package]] -name = "remove_dir_all" -version = "0.5.3" +name = "regex-syntax" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] +checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" [[package]] name = "reqwest" -version = "0.11.9" +version = "0.12.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87f242f1488a539a79bac6dbe7c8609ae43b7914b7736210f239a37cccb32525" +checksum = "cbc931937e6ca3a06e3b6c0aa7841849b160a90351d6ab467a8b9b9959767531" dependencies = [ - "base64 0.13.0", + "base64 0.22.1", "bytes", - "encoding_rs", + "futures-channel", "futures-core", "futures-util", - "h2", - "http", - "http-body", - "hyper", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", "hyper-rustls", - "ipnet", + "hyper-util", "js-sys", - "lazy_static", "log", - "mime", "percent-encoding", "pin-project-lite", + "quinn", "rustls", - "rustls-pemfile 0.2.1", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", "tokio", "tokio-rustls", + "tower", + "tower-http", + "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", - "webpki-roots", - "winreg", + "webpki-roots 1.0.1", ] [[package]] name = "ring" -version = "0.16.20" +version = "0.17.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +checksum = "a4689e6c2294d81e88dc6261c768b63bc4fcdb852be6d1352498b114f61383b7" dependencies = [ "cc", + "cfg-if", + "getrandom 0.2.16", "libc", - "once_cell", - "spin", "untrusted", - "web-sys", - "winapi", + "windows-sys 0.52.0", ] [[package]] name = "rustc-demangle" -version = "0.1.24" +version = "0.1.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" +checksum = "989e6739f80c4ad5b13e0fd7fe89531180375b18520cc8c82080e4dc4035b84f" + +[[package]] +name = "rustc-hash" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" + +[[package]] +name = "rustix" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c71e83d6afe7ff64890ec6b71d6a69bb8a610ab78ce364b3352876bb4c801266" +dependencies = [ + "bitflags 2.9.1", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.59.0", +] [[package]] name = "rustls" -version = "0.20.4" +version = "0.23.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fbfeb8d0ddb84706bc597a5574ab8912817c52a397f819e5b614e2265206921" +checksum = "7160e3e10bf4535308537f3c4e1641468cd0e485175d6163087c0393c7d46643" dependencies = [ "log", + "once_cell", "ring", - "sct", - "webpki", + "rustls-pki-types", + "rustls-webpki", + "subtle", + "zeroize", ] [[package]] name = "rustls-native-certs" -version = "0.6.1" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca9ebdfa27d3fc180e42879037b5338ab1c040c06affd00d8338598e7800943" +checksum = "7fcff2dd52b58a8d98a70243663a0d234c4e2b79235637849d15913394a247d3" dependencies = [ "openssl-probe", - "rustls-pemfile 0.2.1", + "rustls-pki-types", "schannel", "security-framework", ] [[package]] -name = "rustls-pemfile" -version = "0.2.1" +name = "rustls-pki-types" +version = "1.12.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eebeaeb360c87bfb72e84abdb3447159c0eaececf1bef2aecd65a8be949d1c9" +checksum = "229a4a4c221013e7e1f1a043678c5cc39fe5171437c88fb47151a21e6f5b5c79" dependencies = [ - "base64 0.13.0", + "web-time", + "zeroize", ] [[package]] -name = "rustls-pemfile" -version = "1.0.1" +name = "rustls-webpki" +version = "0.103.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0864aeff53f8c05aa08d86e5ef839d3dfcf07aeba2db32f12db0ef716e87bd55" +checksum = "e4a72fe2bcf7a6ac6fd7d0b9e5cb68aeb7d4c0a0271730218b3e92d43b4eb435" dependencies = [ - "base64 0.13.0", + "ring", + "rustls-pki-types", + "untrusted", ] [[package]] -name = "ryu" -version = "1.0.9" +name = "rustversion" +version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" +checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" [[package]] -name = "safemem" -version = "0.3.3" +name = "ryu" +version = "1.0.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef703b7cb59335eae2eb93ceb664c0eb7ea6bf567079d843e09420219668e072" +checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" [[package]] name = "same-file" @@ -1731,52 +2087,41 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.19" +version = "0.1.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f05ba609c234e60bee0d547fe94a4c7e9da733d1c962cf6e59efa4cd9c8bc75" +checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" dependencies = [ - "lazy_static", - "winapi", + "windows-sys 0.59.0", ] [[package]] name = "scoped-tls" -version = "1.0.0" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ea6a9290e3c9cf0f18145ef7ffa62d68ee0bf5fcd651017e586dc7fd5da448c2" +checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" [[package]] name = "scopeguard" -version = "1.1.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" - -[[package]] -name = "sct" -version = "0.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53dcdb7c9f8158937a7981b48accfd39a43af418591a5d008c7b22b5e1b7ca4" -dependencies = [ - "ring", - "untrusted", -] +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" [[package]] name = "secrecy" -version = "0.4.1" +version = "0.10.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9eb052cf770a381fa9a6ee63038ff9a0b11d30abb53be970672e950649ff0bfb" +checksum = "e891af845473308773346dc847b2c23ee78fe442e0472ac50e22a18a93d3ae5a" dependencies = [ "zeroize", ] [[package]] name = "security-framework" -version = "2.6.1" +version = "3.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +checksum = "271720403f46ca04f7ba6f55d438f8bd878d6b8ca0a1046e8228c4145bcbb316" dependencies = [ - "bitflags", + "bitflags 2.9.1", "core-foundation", "core-foundation-sys", "libc", @@ -1785,9 +2130,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" dependencies = [ "core-foundation-sys", "libc", @@ -1795,31 +2140,32 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.193" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89" +checksum = "5f0e2c6ed6606019b4e29e69dbaba95b11854410e5347d525002456dbbb786b6" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.193" +version = "1.0.219" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3" +checksum = "5b0276cf7f2c73365f7157c8123c21cd9a50fbbd844757af28ca1f5925fc2a00" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.104", ] [[package]] name = "serde_json" -version = "1.0.79" +version = "1.0.140" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e8d9fa5c3b304765ce1fd9c4c8a3de2c8db365a5b91be52f186efc675681d95" +checksum = "20068b6e96dc6c9bd23e01df8827e6c7e1f2fddd43c21810382803c136b99373" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] @@ -1837,10 +2183,10 @@ dependencies = [ ] [[package]] -name = "sha-1" -version = "0.10.0" +name = "sha1" +version = "0.10.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "028f48d513f9678cda28f6e4064755b3fbb2af6acd672f2c209b62323f7aea0f" +checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", "cpufeatures", @@ -1849,70 +2195,73 @@ dependencies = [ [[package]] name = "sharded-slab" -version = "0.1.4" +version = "0.1.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "900fba806f70c630b0a382d0d825e17a0f19fcd059a2ade1ff237bcddf446b31" +checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" dependencies = [ "lazy_static", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "signal-hook-registry" -version = "1.4.0" +version = "1.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +checksum = "9203b8055f63a2a00e2f593bb0510367fe707d7ff1e5c872de2f537b339e5410" dependencies = [ "libc", ] [[package]] name = "simple_asn1" -version = "0.4.1" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "692ca13de57ce0613a363c8c2f1de925adebc81b04c923ac60c5488bb44abe4b" +checksum = "297f631f50729c8c99b84667867963997ec0b50f32b2a7dbcab828ef0541e8bb" dependencies = [ - "chrono", - "num-bigint 0.2.6", + "num-bigint", "num-traits", + "thiserror 2.0.12", + "time", ] [[package]] name = "slab" -version = "0.4.5" +version = "0.4.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9def91fd1e018fe007022791f865d0ccc9b3a0d5001e01aabb8b40e46000afb5" +checksum = "04dc19736151f35336d325007ac991178d504a119863a2fcb3758cdb5e52c50d" [[package]] name = "smallvec" -version = "1.13.2" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" [[package]] name = "socket2" -version = "0.4.4" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +checksum = "e22376abed350d73dd1cd119b57ffccad95b4e585a7cda43e286245ce23c0678" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] -name = "socket2" -version = "0.5.8" +name = "spin" +version = "0.9.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" -dependencies = [ - "libc", - "windows-sys 0.52.0", -] +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" [[package]] -name = "spin" -version = "0.5.2" +name = "stable_deref_trait" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "stack-buf" @@ -1926,27 +2275,40 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + [[package]] name = "strum" -version = "0.21.0" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aaf86bbcfd1fa9670b7a129f64fc0c9fcbbfe4f1bc4210e9e98fe71ffc12cde2" +checksum = "f64def088c51c9510a8579e3c5d67c65349dcf755e5479ad3d010aa6454e2c32" dependencies = [ "strum_macros", ] [[package]] name = "strum_macros" -version = "0.21.1" +version = "0.27.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d06aaeeee809dbc59eb4556183dd927df67db1540de5be8d3ec0b6636358a5ec" +checksum = "c77a8c5abcaf0f9ce05d62342b7d298c346515365c36b673df4ebe3ced01fde8" dependencies = [ - "heck 0.3.3", + "heck 0.5.0", "proc-macro2", "quote", - "syn 1.0.109", + "rustversion", + "syn 2.0.104", ] +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + [[package]] name = "syn" version = "1.0.109" @@ -1960,9 +2322,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.43" +version = "2.0.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee659fb5f3d355364e1f3e5bc10fb82068efbf824a1e9d1c9504244a6469ad53" +checksum = "17b6f705963418cdb9927482fa304bc562ece2fdd4f616084c50b7023b435a40" dependencies = [ "proc-macro2", "quote", @@ -1971,75 +2333,97 @@ dependencies = [ [[package]] name = "sync_wrapper" -version = "0.1.2" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" +checksum = "0bf256ce5efdfa370213c1dabab5935a12e49f2c58d15e9eac2870d3b4f27263" +dependencies = [ + "futures-core", +] + +[[package]] +name = "synstructure" +version = "0.13.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] [[package]] name = "tempfile" -version = "3.3.0" +version = "3.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "e8a64e3985349f2441a1a9ef0b853f869006c3855f2cda6862a94d26ebb9d6a1" dependencies = [ - "cfg-if", "fastrand", - "libc", - "redox_syscall", - "remove_dir_all", - "winapi", + "getrandom 0.3.3", + "once_cell", + "rustix", + "windows-sys 0.59.0", ] [[package]] name = "termtree" -version = "0.2.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507e9898683b6c43a9aa55b64259b721b52ba226e0f3779137e50ad114a4c90b" +checksum = "8f50febec83f5ee1df3015341d8bd429f2d1cc62bcba7ea2076759d315084683" [[package]] name = "thiserror" -version = "1.0.55" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e3de26b0965292219b4287ff031fcba86837900fe9cd2b34ea8ad893c0953d2" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ - "thiserror-impl", + "thiserror-impl 1.0.69", +] + +[[package]] +name = "thiserror" +version = "2.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "567b8a2dae586314f7be2a752ec7474332959c6460e02bde30d702a66d488708" +dependencies = [ + "thiserror-impl 2.0.12", ] [[package]] name = "thiserror-impl" -version = "1.0.55" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "268026685b2be38d7103e9e507c938a1fcb3d7e6eb15e87870b617bf37b6d581" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.104", ] [[package]] -name = "thread_local" -version = "1.1.4" +name = "thiserror-impl" +version = "2.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5516c27b78311c50bf42c071425c560ac799b11c30b31f87e3081965fe5e0180" +checksum = "7f7cf42b4507d8ea322120659672cf1b9dbb93f8f2d4ecfd6e51350ff5b17a1d" dependencies = [ - "once_cell", + "proc-macro2", + "quote", + "syn 2.0.104", ] [[package]] -name = "time" -version = "0.1.45" +name = "thread_local" +version = "1.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b797afad3f312d1c66a56d11d0316f916356d11bd158fbc6ca6389ff6bf805a" +checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" dependencies = [ - "libc", - "wasi 0.10.0+wasi-snapshot-preview1", - "winapi", + "cfg-if", ] [[package]] name = "time" -version = "0.3.37" +version = "0.3.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35e7868883861bd0e56d9ac6efcaaca0d6d5d82a2a7ec8209ff492c07cf37b21" +checksum = "8a7619e19bc266e0f9c5e6686659d394bc57973859340060a69221e57dbc0c40" dependencies = [ "deranged", "itoa", @@ -2052,34 +2436,44 @@ dependencies = [ [[package]] name = "time-core" -version = "0.1.2" +version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" +checksum = "c9e9a38711f559d9e3ce1cdb06dd7c5b8ea546bc90052da6d06bb76da74bb07c" [[package]] name = "time-macros" -version = "0.2.19" +version = "0.2.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2834e6017e3e5e4b9834939793b282bc03b37a3336245fa820e35e233e2a85de" +checksum = "3526739392ec93fd8b359c8e98514cb3e8e021beb4e5f597b00a0221f8ed8a49" dependencies = [ "num-conv", "time-core", ] +[[package]] +name = "tinystr" +version = "0.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" +dependencies = [ + "displaydoc", + "zerovec", +] + [[package]] name = "tinyvec" -version = "1.5.1" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c1c1d5a42b6245520c249549ec267180beaffcc0615401ac8e31853d4b6d8d2" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" dependencies = [ "tinyvec_macros", ] [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" @@ -2095,21 +2489,11 @@ dependencies = [ "parking_lot", "pin-project-lite", "signal-hook-registry", - "socket2 0.5.8", + "socket2", "tokio-macros", "windows-sys 0.48.0", ] -[[package]] -name = "tokio-io-timeout" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30b74022ada614a1b4834de765f9bb43877f910cc8ce4be40e89042c9223a8bf" -dependencies = [ - "pin-project-lite", - "tokio", -] - [[package]] name = "tokio-macros" version = "2.3.0" @@ -2118,55 +2502,40 @@ checksum = "5f5ae998a069d4b5aba8ee9dad856af7d520c3699e6159b185c2acd48155d39a" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.104", ] [[package]] name = "tokio-rustls" -version = "0.23.3" +version = "0.26.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4151fda0cf2798550ad0b34bcfc9b9dcc2a9d2471c895c68f3a8818e54f2389e" +checksum = "8e727b36a1a0e8b74c376ac2211e40c2c8af09fb4013c60d910495810f008e9b" dependencies = [ "rustls", "tokio", - "webpki", ] [[package]] name = "tokio-stream" -version = "0.1.8" +version = "0.1.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50145484efff8818b5ccd256697f36863f587da82cf8b409c53adf1e840798e3" +checksum = "eca58d7bba4a75707817a2c44174253f9236b2d5fbd055602e9d5c07c139a047" dependencies = [ "futures-core", - "pin-project-lite", - "tokio", -] - -[[package]] -name = "tokio-tungstenite" -version = "0.17.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f714dd15bead90401d77e04243611caec13726c2408afd5b31901dfcdcb3b181" -dependencies = [ - "futures-util", - "log", + "pin-project-lite", "tokio", - "tungstenite", ] [[package]] -name = "tokio-util" -version = "0.6.9" +name = "tokio-tungstenite" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e99e1983e5d376cd8eb4b66604d2e99e79f5bd988c3055891dcd8c9e2604cc0" +checksum = "c83b561d025642014097b66e6c1bb422783339e0909e4429cde4749d1990bc38" dependencies = [ - "bytes", - "futures-core", - "futures-sink", + "futures-util", "log", - "pin-project-lite", "tokio", + "tungstenite", ] [[package]] @@ -2185,78 +2554,82 @@ dependencies = [ ] [[package]] -name = "toml" -version = "0.5.8" +name = "toml_datetime" +version = "0.6.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" + +[[package]] +name = "toml_edit" +version = "0.22.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" +checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" dependencies = [ - "serde", + "indexmap", + "toml_datetime", + "winnow", ] [[package]] name = "tonic" -version = "0.8.2" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55b9af819e54b8f33d453655bef9b9acc171568fb49523078d0cc4e7484200ec" +checksum = "7e581ba15a835f4d9ea06c55ab1bd4dce26fc53752c69a04aac00703bfb49ba9" dependencies = [ - "async-stream", "async-trait", "axum", - "base64 0.13.0", + "base64 0.22.1", "bytes", - "futures-core", - "futures-util", - "h2", - "http", - "http-body", - "hyper", + "h2 0.4.11", + "http 1.3.1", + "http-body 1.0.1", + "http-body-util", + "hyper 1.6.0", "hyper-timeout", + "hyper-util", "percent-encoding", "pin-project", "prost", - "prost-derive", "rustls-native-certs", - "rustls-pemfile 1.0.1", + "socket2", "tokio", "tokio-rustls", "tokio-stream", - "tokio-util 0.7.11", "tower", "tower-layer", "tower-service", "tracing", - "tracing-futures", - "webpki-roots", + "webpki-roots 0.26.11", ] [[package]] name = "tonic-build" -version = "0.8.0" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fbcd2800e34e743b9ae795867d5f77b535d3a3be69fd731e39145719752df8c" +checksum = "eac6f67be712d12f0b41328db3137e0d0757645d8904b4cb7d51cd9c2279e847" dependencies = [ "prettyplease", "proc-macro2", "prost-build", + "prost-types", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] name = "tower" -version = "0.4.13" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" +checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", "indexmap", - "pin-project", "pin-project-lite", - "rand", "slab", + "sync_wrapper", "tokio", - "tokio-util 0.7.11", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -2264,17 +2637,16 @@ dependencies = [ [[package]] name = "tower-http" -version = "0.3.4" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c530c8675c1dbf98facee631536fa116b5fb6382d7dd6dc1b118d970eafe3ba" +checksum = "adc82fd73de2a9722ac5da747f12383d2bfdb93591ee6c58486e0097890f05f2" dependencies = [ - "bitflags", + "bitflags 2.9.1", "bytes", - "futures-core", "futures-util", - "http", - "http-body", - "http-range-header", + "http 1.3.1", + "http-body 1.0.1", + "iri-string", "pin-project-lite", "tower", "tower-layer", @@ -2283,23 +2655,22 @@ dependencies = [ [[package]] name = "tower-layer" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "343bc9466d3fe6b0f960ef45960509f84480bf4fd96f92901afe7ff3df9d3a62" +checksum = "121c2a6cda46980bb0fcd1647ffaf6cd3fc79a013de288782836f6df9c48780e" [[package]] name = "tower-service" -version = "0.3.1" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" +checksum = "8df9b6e13f2d32c91b9bd719c00d1958837bc7dec474d94952798cc8e69eeec3" [[package]] name = "tracing" -version = "0.1.30" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d8d93354fe2a8e50d5953f5ae2e47a3fc2ef03292e7ea46e3cc38f549525fb9" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ - "cfg-if", "log", "pin-project-lite", "tracing-attributes", @@ -2308,55 +2679,45 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.19" +version = "0.1.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8276d9a4a3a558d7b7ad5303ad50b53d58264641b82914b7ada36bd762e7a716" +checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] name = "tracing-core" -version = "0.1.22" +version = "0.1.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03cfcb51380632a72d3111cb8d3447a8d908e577d31beeac006f836383d29a23" +checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" dependencies = [ - "lazy_static", + "once_cell", "valuable", ] -[[package]] -name = "tracing-futures" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97d095ae15e245a057c8e8451bab9b3ee1e1f68e9ba2b4fbc18d0ac5237835f2" -dependencies = [ - "pin-project", - "tracing", -] - [[package]] name = "tracing-log" -version = "0.1.2" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6923477a48e41c1951f1999ef8bb5a3023eb723ceadafe78ffb65dc366761e3" +checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" dependencies = [ - "lazy_static", "log", + "once_cell", "tracing-core", ] [[package]] name = "tracing-subscriber" -version = "0.3.8" +version = "0.3.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74786ce43333fcf51efe947aed9718fbe46d5c7328ec3f1029e818083966d9aa" +checksum = "e8189decb5ac0fa7bc8b96b7cb9b2701d60d48805aca84a238004d665fcc4008" dependencies = [ - "ansi_term", - "lazy_static", "matchers", + "nu-ansi-term", + "once_cell", "regex", "sharded-slab", "smallvec", @@ -2368,11 +2729,10 @@ dependencies = [ [[package]] name = "tracing-test" -version = "0.2.1" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3eb7bda2e93bbc9c5b247034acc6a4b3d04f033a3d4b8fc1cb87d4d1c7c7ebd7" +checksum = "557b891436fe0d5e0e363427fc7f217abf9ccd510d5136549847bdcbcd011d68" dependencies = [ - "lazy_static", "tracing-core", "tracing-subscriber", "tracing-test-macro", @@ -2380,106 +2740,71 @@ dependencies = [ [[package]] name = "tracing-test-macro" -version = "0.2.1" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4801dca35e4e2cee957c469bd4a1c370fadb7894c0d50721a40eba3523e6e91c" +checksum = "04659ddb06c87d233c566112c1c9c5b9e98256d9af50ec3bc9c8327f873a7568" dependencies = [ - "lazy_static", "quote", - "syn 1.0.109", + "syn 2.0.104", ] [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tungstenite" -version = "0.17.3" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e27992fd6a8c29ee7eef28fc78349aa244134e10ad447ce3b9f0ac0ed0fa4ce0" +checksum = "9ef1a641ea34f399a848dea702823bbecfb4c486f911735368f1f137cb8257e1" dependencies = [ - "base64 0.13.0", "byteorder", "bytes", - "http", + "data-encoding", + "http 1.3.1", "httparse", "log", - "rand", - "sha-1", - "thiserror", + "rand 0.8.5", + "sha1", + "thiserror 1.0.69", "url", "utf-8", ] -[[package]] -name = "twoway" -version = "0.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59b11b2b5241ba34be09c3cc85a36e56e48f9888862e19cedf23336d35316ed1" -dependencies = [ - "memchr", -] - [[package]] name = "typenum" -version = "1.15.0" +version = "1.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" +checksum = "1dccffe3ce07af9386bfd29e80c0ab1a8205a2fc34e4bcd40364df902cfa8f3f" [[package]] name = "unicase" -version = "2.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.7" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a01404663e3db436ed2746d9fefef640d868edae3cceb81c3b8d5732fda678f" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-ident" -version = "1.0.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" - -[[package]] -name = "unicode-normalization" -version = "0.1.19" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d54590932941a9e9266f0832deed84ebe1bf2e4c9e4a3554d393d18f5e854bf9" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e8820f5d777f6224dc4be3632222971ac30164d4a258d595640799554ebfd99" +checksum = "5a5f39404a5da50712a4c1eecf25e90dd62b613502b7e925fd4e4d19b5c96512" [[package]] name = "untrusted" -version = "0.7.1" +version = "0.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" +checksum = "8ecb6da28b8a351d773b68d5825ac39017e680750f980f3a1a85cd8dd28a47c1" [[package]] name = "url" -version = "2.2.2" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", - "matches", "percent-encoding", ] @@ -2489,6 +2814,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" version = "0.2.2" @@ -2497,131 +2828,134 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.0.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8cfcd319456c4d6ea10087ed423473267e1a071f3bc0aa89f80d60997843c6f0" +checksum = "3cf4199d1e5d15ddd86a694e4d0dffa9c323ce759fea589f00fef9d81cc1931d" dependencies = [ - "getrandom", + "getrandom 0.3.3", + "js-sys", + "wasm-bindgen", ] [[package]] name = "valuable" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" +checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] [[package]] name = "warp" -version = "0.3.3" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7b8be92646fc3d18b06147664ebc5f48d222686cb11a8755e561a735aacc6d" +checksum = "4378d202ff965b011c64817db11d5829506d3404edeadb61f190d111da3f231c" dependencies = [ "bytes", "futures-channel", "futures-util", "headers", - "http", - "hyper", + "http 0.2.12", + "hyper 0.14.32", "log", "mime", "mime_guess", - "multipart", + "multer", "percent-encoding", "pin-project", - "rustls-pemfile 0.2.1", "scoped-tls", "serde", "serde_json", "serde_urlencoded", "tokio", - "tokio-stream", "tokio-tungstenite", - "tokio-util 0.7.11", + "tokio-util", "tower-service", "tracing", ] [[package]] name = "wasi" -version = "0.10.0+wasi-snapshot-preview1" +version = "0.11.1+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" +checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" [[package]] name = "wasi" -version = "0.11.0+wasi-snapshot-preview1" +version = "0.14.2+wasi-0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" +dependencies = [ + "wit-bindgen-rt", +] [[package]] name = "wasm-bindgen" -version = "0.2.79" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25f1af7423d8588a3d840681122e72e6a24ddbcb3f0ec385cac0d12d24256c06" +checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ "cfg-if", + "once_cell", + "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.79" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b21c0df030f5a177f3cba22e9bc4322695ec43e7257d865302900290bcdedca" +checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" dependencies = [ "bumpalo", - "lazy_static", "log", "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.29" +version = "0.4.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2eb6ec270a31b1d3c7e266b999739109abce8b6c87e4b31fcfcd788b65267395" +checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" dependencies = [ "cfg-if", "js-sys", + "once_cell", "wasm-bindgen", "web-sys", ] [[package]] name = "wasm-bindgen-macro" -version = "0.2.79" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f4203d69e40a52ee523b2529a773d5ffc1dc0071801c87b3d270b471b80ed01" +checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -2629,61 +2963,62 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.79" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bfa8a30d46208db204854cadbb5d4baf5fcf8071ba5bf48190c3e59937962ebc" +checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 1.0.109", + "syn 2.0.104", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.79" +version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d958d035c4438e28c70e4321a2911302f10135ce78a9c7834c0cab4123d06a2" +checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" +dependencies = [ + "unicode-ident", +] [[package]] name = "web-sys" -version = "0.3.56" +version = "0.3.77" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c060b319f29dd25724f09a2ba1418f142f539b2be99fbf4d2d5a8f7330afb8eb" +checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" dependencies = [ "js-sys", "wasm-bindgen", ] [[package]] -name = "webpki" -version = "0.22.0" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f095d78192e208183081cc07bc5515ef55216397af48b873e5edcd72637fa1bd" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ - "ring", - "untrusted", + "js-sys", + "wasm-bindgen", ] [[package]] name = "webpki-roots" -version = "0.22.2" +version = "0.26.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "552ceb903e957524388c4d3475725ff2c8b7960922063af6ce53c9a43da07449" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" dependencies = [ - "webpki", + "webpki-roots 1.0.1", ] [[package]] -name = "which" -version = "4.2.4" +name = "webpki-roots" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a5a7e487e921cf220206864a94a89b6c6905bfc19f1057fa26a4cb360e5c1d2" +checksum = "8782dd5a41a24eed3a4f40b606249b3e236ca61adf1f25ea4d45c73de122b502" dependencies = [ - "either", - "lazy_static", - "libc", + "rustls-pki-types", ] [[package]] @@ -2704,11 +3039,11 @@ checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" [[package]] name = "winapi-util" -version = "0.1.5" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" dependencies = [ - "winapi", + "windows-sys 0.59.0", ] [[package]] @@ -2718,16 +3053,62 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] -name = "windows-sys" -version = "0.32.0" +name = "windows-core" +version = "0.61.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" +dependencies = [ + "windows-implement", + "windows-interface", + "windows-link", + "windows-result", + "windows-strings", +] + +[[package]] +name = "windows-implement" +version = "0.60.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a47fddd13af08290e67f4acabf4b459f647552718f683a7b415d290ac744a836" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "windows-interface" +version = "0.59.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd9211b69f8dcdfa817bfd14bf1c97c9188afa36f4750130fcdf3f400eca9fa8" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "windows-link" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" + +[[package]] +name = "windows-result" +version = "0.3.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" +dependencies = [ + "windows-link", +] + +[[package]] +name = "windows-strings" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3df6e476185f92a12c072be4a189a0210dcdcf512a1891d6dff9edb874deadc6" +checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" dependencies = [ - "windows_aarch64_msvc 0.32.0", - "windows_i686_gnu 0.32.0", - "windows_i686_msvc 0.32.0", - "windows_x86_64_gnu 0.32.0", - "windows_x86_64_msvc 0.32.0", + "windows-link", ] [[package]] @@ -2757,6 +3138,15 @@ dependencies = [ "windows-targets 0.52.6", ] +[[package]] +name = "windows-sys" +version = "0.60.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" +dependencies = [ + "windows-targets 0.53.2", +] + [[package]] name = "windows-targets" version = "0.48.5" @@ -2781,13 +3171,29 @@ dependencies = [ "windows_aarch64_gnullvm 0.52.6", "windows_aarch64_msvc 0.52.6", "windows_i686_gnu 0.52.6", - "windows_i686_gnullvm", + "windows_i686_gnullvm 0.52.6", "windows_i686_msvc 0.52.6", "windows_x86_64_gnu 0.52.6", "windows_x86_64_gnullvm 0.52.6", "windows_x86_64_msvc 0.52.6", ] +[[package]] +name = "windows-targets" +version = "0.53.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c66f69fcc9ce11da9966ddb31a40968cad001c5bedeb5c2b82ede4253ab48aef" +dependencies = [ + "windows_aarch64_gnullvm 0.53.0", + "windows_aarch64_msvc 0.53.0", + "windows_i686_gnu 0.53.0", + "windows_i686_gnullvm 0.53.0", + "windows_i686_msvc 0.53.0", + "windows_x86_64_gnu 0.53.0", + "windows_x86_64_gnullvm 0.53.0", + "windows_x86_64_msvc 0.53.0", +] + [[package]] name = "windows_aarch64_gnullvm" version = "0.48.5" @@ -2801,10 +3207,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] -name = "windows_aarch64_msvc" -version = "0.32.0" +name = "windows_aarch64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8e92753b1c443191654ec532f14c199742964a061be25d77d7a96f09db20bf5" +checksum = "86b8d5f90ddd19cb4a147a5fa63ca848db3df085e25fee3cc10b39b6eebae764" [[package]] name = "windows_aarch64_msvc" @@ -2819,10 +3225,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] -name = "windows_i686_gnu" -version = "0.32.0" +name = "windows_aarch64_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a711c68811799e017b6038e0922cb27a5e2f43a2ddb609fe0b6f3eeda9de615" +checksum = "c7651a1f62a11b8cbd5e0d42526e55f2c99886c77e007179efff86c2b137e66c" [[package]] name = "windows_i686_gnu" @@ -2836,6 +3242,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" +[[package]] +name = "windows_i686_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1dc67659d35f387f5f6c479dc4e28f1d4bb90ddd1a5d3da2e5d97b42d6272c3" + [[package]] name = "windows_i686_gnullvm" version = "0.52.6" @@ -2843,10 +3255,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] -name = "windows_i686_msvc" -version = "0.32.0" +name = "windows_i686_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "146c11bb1a02615db74680b32a68e2d61f553cc24c4eb5b4ca10311740e44172" +checksum = "9ce6ccbdedbf6d6354471319e781c0dfef054c81fbc7cf83f338a4296c0cae11" [[package]] name = "windows_i686_msvc" @@ -2861,10 +3273,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] -name = "windows_x86_64_gnu" -version = "0.32.0" +name = "windows_i686_msvc" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c912b12f7454c6620635bbff3450962753834be2a594819bd5e945af18ec64bc" +checksum = "581fee95406bb13382d2f65cd4a908ca7b1e4c2f1917f143ba16efe98a589b5d" [[package]] name = "windows_x86_64_gnu" @@ -2878,6 +3290,12 @@ version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" +[[package]] +name = "windows_x86_64_gnu" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2e55b5ac9ea33f2fc1716d1742db15574fd6fc8dadc51caab1c16a3d3b4190ba" + [[package]] name = "windows_x86_64_gnullvm" version = "0.48.5" @@ -2891,10 +3309,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] -name = "windows_x86_64_msvc" -version = "0.32.0" +name = "windows_x86_64_gnullvm" +version = "0.53.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "504a2476202769977a040c6364301a3f65d0cc9e3fb08600b2bda150a0488316" +checksum = "0a6e035dd0599267ce1ee132e51c27dd29437f63325753051e71dd9e42406c57" [[package]] name = "windows_x86_64_msvc" @@ -2909,14 +3327,35 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "winreg" -version = "0.7.0" +name = "windows_x86_64_msvc" +version = "0.53.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "271414315aff87387382ec3d271b52d7ae78726f5d44ac98b4f4030c91880486" + +[[package]] +name = "winnow" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" +checksum = "74c7b26e3480b707944fc872477815d29a8e429d2f93a1ce000f5fa84a15cbcd" dependencies = [ - "winapi", + "memchr", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" +dependencies = [ + "bitflags 2.9.1", ] +[[package]] +name = "writeable" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" + [[package]] name = "ydb" version = "0.9.7" @@ -2928,8 +3367,8 @@ dependencies = [ "derivative", "derive_builder", "futures-util", - "http", - "itertools", + "http 1.3.1", + "itertools 0.14.0", "jsonwebtoken", "lazy_static", "mockall", @@ -2939,7 +3378,7 @@ dependencies = [ "pbjson-types", "prost", "prost-types", - "rand", + "rand 0.9.1", "reqwest", "secrecy", "serde", @@ -2947,7 +3386,7 @@ dependencies = [ "strum", "tokio", "tokio-stream", - "tokio-util 0.7.11", + "tokio-util", "tonic", "tower", "tracing", @@ -2962,9 +3401,7 @@ dependencies = [ name = "ydb-example-urlshortener" version = "0.0.0" dependencies = [ - "async_once", "hashers", - "lazy_static", "serde", "tokio", "tracing", @@ -2977,12 +3414,8 @@ dependencies = [ name = "ydb-grpc" version = "0.1.0" dependencies = [ - "pbjson", - "pbjson-build", - "pbjson-types", "prost", "prost-build", - "prost-types", "serde", "tonic", "tonic-build", @@ -2996,36 +3429,114 @@ dependencies = [ "async-trait", "base64 0.22.1", "clap", - "rand", - "rand_core", + "rand 0.9.1", + "rand_core 0.6.4", "ratelimit", "tokio", - "tokio-util 0.7.11", + "tokio-util", "ydb", ] +[[package]] +name = "yoke" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", + "synstructure", +] + [[package]] name = "zerocopy" -version = "0.7.35" +version = "0.8.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" +checksum = "1039dd0d3c310cf05de012d8a39ff557cb0d23087fd44cad61df08fc31907a2f" dependencies = [ "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.35" +version = "0.8.26" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ecf5b4cc5364572d7f4c329661bcc82724222973f2cab6f050a4e5c22f75181" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] + +[[package]] +name = "zerofrom" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn 2.0.43", + "syn 2.0.104", + "synstructure", ] [[package]] name = "zeroize" -version = "1.7.0" +version = "1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde" + +[[package]] +name = "zerotrie" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", +] + +[[package]] +name = "zerovec" +version = "0.11.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4a05eb080e015ba39cc9e23bbe5e7fb04d5fb040350f99f34e338d5fdd294428" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d" +checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.104", +] diff --git a/Cargo.toml b/Cargo.toml index 448ecabd..81aeec87 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,8 +2,8 @@ resolver = "2" members = [ "ydb", - "ydb-grpc", # "ydb-grpc-helpers", "ydb-example-urlshortener", + "ydb-grpc", "ydb-slo-tests", ] diff --git a/ydb-example-urlshortener/Cargo.toml b/ydb-example-urlshortener/Cargo.toml index c3c4797b..eca54408 100644 --- a/ydb-example-urlshortener/Cargo.toml +++ b/ydb-example-urlshortener/Cargo.toml @@ -3,17 +3,14 @@ publish = false name = "ydb-example-urlshortener" version = "0.0.0" edition = "2021" -rust-version = "1.68.0" - +rust-version = "1.81.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -async_once = "0.2.6" -hashers = "1.0.1" -lazy_static = "1.4.0" -serde = { version = "1.0", features = ["derive"] } -tokio = { version = "1.18", features = ["macros", "rt-multi-thread", "net"] } +hashers = "1" +serde = { version = "1", features = ["derive"] } +tokio = { version = "1", features = ["macros", "rt-multi-thread", "net"] } tracing = "0.1" tracing-subscriber = "0.3" warp = "0.3.2" -ydb = { version = "0.9.7", path="../ydb"} +ydb = { version = "0.9.7", path = "../ydb" } diff --git a/ydb-example-urlshortener/src/main.rs b/ydb-example-urlshortener/src/main.rs index d15b52aa..24ee48ee 100644 --- a/ydb-example-urlshortener/src/main.rs +++ b/ydb-example-urlshortener/src/main.rs @@ -18,11 +18,11 @@ async fn main() { let db = match timeout(Duration::from_secs(3), db::init_db()).await { Ok(Ok(db)) => db, Ok(Err(err)) => { - log::error!("Can't connect to ydb: {}", err); + log::error!("Can't connect to ydb: {err}"); exit(1) } Err(err) => { - log::error!("Can't connect to ydb by timeout: {}", err); + log::error!("Can't connect to ydb by timeout: {err}"); exit(1) } }; diff --git a/ydb-grpc-helpers/Cargo.toml b/ydb-grpc-helpers/Cargo.toml index 240a60ee..56d22fdf 100644 --- a/ydb-grpc-helpers/Cargo.toml +++ b/ydb-grpc-helpers/Cargo.toml @@ -7,7 +7,7 @@ edition = "2018" license = "Apache-2.0" description = "Deprecated, not used now. Crate contain helpers for generate grpc imports in ydb-grpc crate." repository = "https://github.com/ydb-platform/ydb-rs-sdk/tree/ydb-grpc-helpers-0.0.11/ydb-grpc-helpers" -rust-version = "1.68.0" +rust-version = "1.81.0" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [lib] diff --git a/ydb-grpc/Cargo.toml b/ydb-grpc/Cargo.toml index 5b3c4f2a..fc1c1ae4 100644 --- a/ydb-grpc/Cargo.toml +++ b/ydb-grpc/Cargo.toml @@ -7,25 +7,20 @@ edition = "2021" license = "Apache-2.0" description = "Crate contains generated low-level grpc code from YDB API protobuf, used as base for ydb crate" repository = "https://github.com/ydb-platform/ydb-rs-sdk/tree/master/ydb-grpc" -rust-version = "1.68.0" +rust-version = "1.81.0" + +[features] +regenerate-sources = [] [dependencies] -prost = "0.11.2" -prost-types = "0.11.2" -pbjson = "0.5.1" -pbjson-types = { version = "0.5.1" } -serde = { version = "1.0", features = ["derive"] } -tonic = { version = "0.8.2", features = [ - "tls", - "tls-roots", +prost = "0.13" +serde = { version = "1", features = ["derive"] } +tonic = { version = "0.13", features = [ + "tls-native-roots", "tls-webpki-roots", ] } [build-dependencies] -prost-build = "0.11.2" -pbjson-build = "0.5.1" -tonic-build = "0.8.0" +prost-build = "0.13" +tonic-build = "0.13" walkdir = "2" - -[features] -regenerate-sources = [] diff --git a/ydb-grpc/build.rs b/ydb-grpc/build.rs index 46bf384f..dab98abc 100644 --- a/ydb-grpc/build.rs +++ b/ydb-grpc/build.rs @@ -57,7 +57,7 @@ fn main() -> Result<(), Box> { "google.protobuf.Any", "#[derive(serde::Serialize, serde::Deserialize)]", ) - .compile_with_config(cfg, COMPILE_FILES, INCLUDE_DIRS)?; + .compile_protos_with_config(cfg, COMPILE_FILES, INCLUDE_DIRS)?; // let descriptor_bytes = std::fs::read(descriptor_file).unwrap(); // pbjson_build::Builder::new() @@ -74,7 +74,7 @@ fn main() -> Result<(), Box> { fn clean_dst_dir(dst: &str) -> Result<(), Box> { for file in fs::read_dir(dst)? { let fname = file?.file_name().to_str().unwrap().to_owned(); - let fpath = format!("{}/{}", dst, fname); + let fpath = format!("{dst}/{fname}"); if fname == "lib.rs" || fname == "mod.rs" { println!("truncate file: {}", &fpath); fs::File::create(&fpath)?; @@ -92,7 +92,7 @@ fn fix_generated_files(dir: &str) -> io::Result<()> { let item = item?; let item_path = item.path().to_str().unwrap_or(""); if !item.metadata()?.is_file() { - println!("skip not file: '{}'", item_path); + println!("skip not file: '{item_path}'"); continue; } fix_generated_file(item.path())?; diff --git a/ydb-grpc/src/descriptors.bin b/ydb-grpc/src/descriptors.bin index 1334e116..a1692444 100644 Binary files a/ydb-grpc/src/descriptors.bin and b/ydb-grpc/src/descriptors.bin differ diff --git a/ydb-grpc/src/generated/google.protobuf.rs b/ydb-grpc/src/generated/google.protobuf.rs index 82e92b65..b879bbd4 100644 --- a/ydb-grpc/src/generated/google.protobuf.rs +++ b/ydb-grpc/src/generated/google.protobuf.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. /// `Any` contains an arbitrary serialized protocol buffer message along with a /// URL that describes the type of the serialized message. /// Protobuf library provides support to pack/unpack Any values in the form @@ -63,7 +64,7 @@ /// If the embedded message type is well-known and has a custom JSON /// representation, that representation will be embedded adding a field /// `value` which holds the custom JSON in addition to the `@type` -/// field. Example (for message \[google.protobuf.Duration][\]): +/// field. Example (for message [google.protobuf.Duration][]): /// { /// "@type": "type.googleapis.com/google.protobuf.Duration", /// "value": "1.212s" @@ -82,7 +83,7 @@ pub struct Any { /// scheme `http`, `https`, or no scheme, one can optionally set up a type /// server that maps type URLs to message definitions as follows: /// * If no scheme is provided, `https` is assumed. - /// * An HTTP GET on the URL must yield a \[google.protobuf.Type][\] + /// * An HTTP GET on the URL must yield a [google.protobuf.Type][] /// value in binary format, or produce an error. /// * Applications are allowed to cache lookup results based on the /// URL, or have them precompiled into a binary to avoid any @@ -147,7 +148,7 @@ pub struct Any { /// be expressed in JSON format as "3.000000001s", and 3 seconds and 1 /// microsecond should be expressed in JSON format as "3.000001s". #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Duration { /// Signed seconds of the span of time. Must be from -315,576,000,000 /// to +315,576,000,000 inclusive. Note: these bounds are computed from: @@ -257,7 +258,7 @@ pub mod descriptor_proto { /// Range of reserved tag numbers. Reserved tag numbers may not be used by /// fields or extension ranges in the same message. Reserved ranges may /// not overlap. - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ReservedRange { /// Inclusive. #[prost(int32, optional, tag = "1")] @@ -341,8 +342,16 @@ pub mod extension_range_options { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - VerificationState::Declaration => "DECLARATION", - VerificationState::Unverified => "UNVERIFIED", + Self::Declaration => "DECLARATION", + Self::Unverified => "UNVERIFIED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "DECLARATION" => Some(Self::Declaration), + "UNVERIFIED" => Some(Self::Unverified), + _ => None, } } } @@ -391,12 +400,12 @@ pub struct FieldDescriptorProto { pub options: ::core::option::Option, /// If true, this is a proto3 "optional". When a proto3 field is optional, it /// tracks presence regardless of field type. - /// When proto3_optional is true, this field must be belong to a oneof to - /// signal to old proto3 clients that presence is tracked for this field. This - /// oneof is known as a "synthetic" oneof, and this field must be its sole - /// member (each proto3 optional field gets its own synthetic oneof). Synthetic - /// oneofs exist in the descriptor only, and do not generate any API. Synthetic - /// oneofs must be ordered after all "real" oneofs. + /// When proto3_optional is true, this field must belong to a oneof to signal + /// to old proto3 clients that presence is tracked for this field. This oneof + /// is known as a "synthetic" oneof, and this field must be its sole member + /// (each proto3 optional field gets its own synthetic oneof). Synthetic oneofs + /// exist in the descriptor only, and do not generate any API. Synthetic oneofs + /// must be ordered after all "real" oneofs. /// For message fields, proto3_optional doesn't create any semantic change, /// since non-repeated message fields always track presence. However it still /// indicates the semantic detail of whether the user wrote "optional" or not. @@ -465,24 +474,48 @@ pub mod field_descriptor_proto { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Type::Double => "TYPE_DOUBLE", - Type::Float => "TYPE_FLOAT", - Type::Int64 => "TYPE_INT64", - Type::Uint64 => "TYPE_UINT64", - Type::Int32 => "TYPE_INT32", - Type::Fixed64 => "TYPE_FIXED64", - Type::Fixed32 => "TYPE_FIXED32", - Type::Bool => "TYPE_BOOL", - Type::String => "TYPE_STRING", - Type::Group => "TYPE_GROUP", - Type::Message => "TYPE_MESSAGE", - Type::Bytes => "TYPE_BYTES", - Type::Uint32 => "TYPE_UINT32", - Type::Enum => "TYPE_ENUM", - Type::Sfixed32 => "TYPE_SFIXED32", - Type::Sfixed64 => "TYPE_SFIXED64", - Type::Sint32 => "TYPE_SINT32", - Type::Sint64 => "TYPE_SINT64", + Self::Double => "TYPE_DOUBLE", + Self::Float => "TYPE_FLOAT", + Self::Int64 => "TYPE_INT64", + Self::Uint64 => "TYPE_UINT64", + Self::Int32 => "TYPE_INT32", + Self::Fixed64 => "TYPE_FIXED64", + Self::Fixed32 => "TYPE_FIXED32", + Self::Bool => "TYPE_BOOL", + Self::String => "TYPE_STRING", + Self::Group => "TYPE_GROUP", + Self::Message => "TYPE_MESSAGE", + Self::Bytes => "TYPE_BYTES", + Self::Uint32 => "TYPE_UINT32", + Self::Enum => "TYPE_ENUM", + Self::Sfixed32 => "TYPE_SFIXED32", + Self::Sfixed64 => "TYPE_SFIXED64", + Self::Sint32 => "TYPE_SINT32", + Self::Sint64 => "TYPE_SINT64", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "TYPE_DOUBLE" => Some(Self::Double), + "TYPE_FLOAT" => Some(Self::Float), + "TYPE_INT64" => Some(Self::Int64), + "TYPE_UINT64" => Some(Self::Uint64), + "TYPE_INT32" => Some(Self::Int32), + "TYPE_FIXED64" => Some(Self::Fixed64), + "TYPE_FIXED32" => Some(Self::Fixed32), + "TYPE_BOOL" => Some(Self::Bool), + "TYPE_STRING" => Some(Self::String), + "TYPE_GROUP" => Some(Self::Group), + "TYPE_MESSAGE" => Some(Self::Message), + "TYPE_BYTES" => Some(Self::Bytes), + "TYPE_UINT32" => Some(Self::Uint32), + "TYPE_ENUM" => Some(Self::Enum), + "TYPE_SFIXED32" => Some(Self::Sfixed32), + "TYPE_SFIXED64" => Some(Self::Sfixed64), + "TYPE_SINT32" => Some(Self::Sint32), + "TYPE_SINT64" => Some(Self::Sint64), + _ => None, } } } @@ -513,9 +546,18 @@ pub mod field_descriptor_proto { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Label::Optional => "LABEL_OPTIONAL", - Label::Repeated => "LABEL_REPEATED", - Label::Required => "LABEL_REQUIRED", + Self::Optional => "LABEL_OPTIONAL", + Self::Repeated => "LABEL_REPEATED", + Self::Required => "LABEL_REQUIRED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "LABEL_OPTIONAL" => Some(Self::Optional), + "LABEL_REPEATED" => Some(Self::Repeated), + "LABEL_REQUIRED" => Some(Self::Required), + _ => None, } } } @@ -556,7 +598,7 @@ pub mod enum_descriptor_proto { /// Note that this is distinct from DescriptorProto.ReservedRange in that it /// is inclusive such that it can appropriately represent the entire int32 /// domain. - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct EnumReservedRange { /// Inclusive. #[prost(int32, optional, tag = "1")] @@ -633,12 +675,14 @@ pub struct FileOptions { #[deprecated] #[prost(bool, optional, tag = "20")] pub java_generate_equals_and_hash: ::core::option::Option, - /// If set true, then the Java2 code generator will generate code that - /// throws an exception whenever an attempt is made to assign a non-UTF-8 - /// byte sequence to a string field. - /// Message reflection will do the same. - /// However, an extension field still accepts non-UTF-8 byte sequences. - /// This option has no effect on when used with the lite runtime. + /// A proto2 file can set this to true to opt in to UTF-8 checking for Java, + /// which will throw an exception if invalid UTF-8 is parsed from the wire or + /// assigned to a string field. + /// TODO: clarify exactly what kinds of field types this option + /// applies to, and update these docs accordingly. + /// Proto3 files already perform these checks. Setting the option explicitly to + /// false has no effect: it cannot be used to opt proto3 files out of UTF-8 + /// checks. #[prost(bool, optional, tag = "27", default = "false")] pub java_string_check_utf8: ::core::option::Option, #[prost( @@ -670,8 +714,6 @@ pub struct FileOptions { pub java_generic_services: ::core::option::Option, #[prost(bool, optional, tag = "18", default = "false")] pub py_generic_services: ::core::option::Option, - #[prost(bool, optional, tag = "42", default = "false")] - pub php_generic_services: ::core::option::Option, /// Is this file deprecated? /// Depending on the target platform, this can emit Deprecated annotations /// for everything in the file, or it will be completely ignored; in the very @@ -752,9 +794,18 @@ pub mod file_options { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - OptimizeMode::Speed => "SPEED", - OptimizeMode::CodeSize => "CODE_SIZE", - OptimizeMode::LiteRuntime => "LITE_RUNTIME", + Self::Speed => "SPEED", + Self::CodeSize => "CODE_SIZE", + Self::LiteRuntime => "LITE_RUNTIME", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "SPEED" => Some(Self::Speed), + "CODE_SIZE" => Some(Self::CodeSize), + "LITE_RUNTIME" => Some(Self::LiteRuntime), + _ => None, } } } @@ -789,9 +840,6 @@ pub struct MessageOptions { /// this is a formalization for deprecating messages. #[prost(bool, optional, tag = "3", default = "false")] pub deprecated: ::core::option::Option, - /// NOTE: Do not set the option in .proto files. Always use the maps syntax - /// instead. The option should only be implicitly set by the proto compiler - /// parser. /// Whether the message is an automatically generated map entry type for the /// maps field. /// For maps fields: @@ -807,6 +855,9 @@ pub struct MessageOptions { /// use a native map in the target language to hold the keys and values. /// The reflection APIs in such implementations still need to work as /// if the field is a repeated message field. + /// NOTE: Do not set the option in .proto files. Always use the maps syntax + /// instead. The option should only be implicitly set by the proto compiler + /// parser. #[prost(bool, optional, tag = "7")] pub map_entry: ::core::option::Option, /// Enable the legacy handling of JSON field name conflicts. This lowercases @@ -829,12 +880,13 @@ pub struct MessageOptions { } #[derive(Clone, PartialEq, ::prost::Message)] pub struct FieldOptions { + /// NOTE: ctype is deprecated. Use `features.(pb.cpp).string_type` instead. /// The ctype option instructs the C++ code generator to use a different /// representation of the field than it normally would. See the specific /// options below. This option is only implemented to support use of /// \[ctype=CORD\] and \[ctype=STRING\] (the default) on non-repeated fields of - /// type "bytes" in the open source release -- sorry, we'll try to include - /// other types in a future version! + /// type "bytes" in the open source release. + /// TODO: make ctype actually deprecated. #[prost( enumeration = "field_options::CType", optional, @@ -882,18 +934,11 @@ pub struct FieldOptions { /// interface is not affected by this option; const methods remain safe to /// call from multiple threads concurrently, while non-const methods continue /// to require exclusive access. - /// Note that implementations may choose not to check required fields within - /// a lazy sub-message. That is, calling IsInitialized() on the outer message - /// may return true even if the inner message has missing required fields. - /// This is necessary because otherwise the inner message would have to be - /// parsed in order to perform the check, defeating the purpose of lazy - /// parsing. An implementation which chooses not to check required fields - /// must be consistent about it. That is, for any particular sub-message, the - /// implementation must either *always* check its required fields, or *never* - /// check its required fields, regardless of whether or not the message has - /// been parsed. - /// As of May 2022, lazy verifies the contents of the byte stream during - /// parsing. An invalid byte stream will cause the overall parsing to fail. + /// Note that lazy message fields are still eagerly verified to check + /// ill-formed wireformat or missing required fields. Calling IsInitialized() + /// on the outer message would fail if the inner message has missing required + /// fields. Failed verification would result in parsing failure (except when + /// uninitialized messages are acceptable). #[prost(bool, optional, tag = "5", default = "false")] pub lazy: ::core::option::Option, /// unverified_lazy does no correctness checks on the byte stream. This should @@ -928,6 +973,8 @@ pub struct FieldOptions { /// Any features defined in the specific edition. #[prost(message, optional, tag = "21")] pub features: ::core::option::Option, + #[prost(message, optional, tag = "22")] + pub feature_support: ::core::option::Option, /// The parser stores options it doesn't recognize here. See above. #[prost(message, repeated, tag = "999")] pub uninterpreted_option: ::prost::alloc::vec::Vec, @@ -942,6 +989,28 @@ pub mod field_options { #[prost(string, optional, tag = "2")] pub value: ::core::option::Option<::prost::alloc::string::String>, } + /// Information about the support window of a feature. + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct FeatureSupport { + /// The edition that this feature was first available in. In editions + /// earlier than this one, the default assigned to EDITION_LEGACY will be + /// used, and proto files will not be able to override it. + #[prost(enumeration = "super::Edition", optional, tag = "1")] + pub edition_introduced: ::core::option::Option, + /// The edition this feature becomes deprecated in. Using this after this + /// edition may trigger warnings. + #[prost(enumeration = "super::Edition", optional, tag = "2")] + pub edition_deprecated: ::core::option::Option, + /// The deprecation warning text if this feature is used after the edition it + /// was marked deprecated in. + #[prost(string, optional, tag = "3")] + pub deprecation_warning: ::core::option::Option<::prost::alloc::string::String>, + /// The edition this feature is no longer available in. In editions after + /// this one, the last default assigned will be used, and proto files will + /// not be able to override it. + #[prost(enumeration = "super::Edition", optional, tag = "4")] + pub edition_removed: ::core::option::Option, + } #[derive( Clone, Copy, @@ -972,9 +1041,18 @@ pub mod field_options { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - CType::String => "STRING", - CType::Cord => "CORD", - CType::StringPiece => "STRING_PIECE", + Self::String => "STRING", + Self::Cord => "CORD", + Self::StringPiece => "STRING_PIECE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STRING" => Some(Self::String), + "CORD" => Some(Self::Cord), + "STRING_PIECE" => Some(Self::StringPiece), + _ => None, } } } @@ -1004,15 +1082,22 @@ pub mod field_options { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - JsType::JsNormal => "JS_NORMAL", - JsType::JsString => "JS_STRING", - JsType::JsNumber => "JS_NUMBER", + Self::JsNormal => "JS_NORMAL", + Self::JsString => "JS_STRING", + Self::JsNumber => "JS_NUMBER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JS_NORMAL" => Some(Self::JsNormal), + "JS_STRING" => Some(Self::JsString), + "JS_NUMBER" => Some(Self::JsNumber), + _ => None, } } } /// If set to RETENTION_SOURCE, the option will be omitted from the binary. - /// Note: as of January 2023, support for this is in progress and does not yet - /// have an effect (b/264593489). #[derive( Clone, Copy, @@ -1036,16 +1121,24 @@ pub mod field_options { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - OptionRetention::RetentionUnknown => "RETENTION_UNKNOWN", - OptionRetention::RetentionRuntime => "RETENTION_RUNTIME", - OptionRetention::RetentionSource => "RETENTION_SOURCE", + Self::RetentionUnknown => "RETENTION_UNKNOWN", + Self::RetentionRuntime => "RETENTION_RUNTIME", + Self::RetentionSource => "RETENTION_SOURCE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "RETENTION_UNKNOWN" => Some(Self::RetentionUnknown), + "RETENTION_RUNTIME" => Some(Self::RetentionRuntime), + "RETENTION_SOURCE" => Some(Self::RetentionSource), + _ => None, } } } /// This indicates the types of entities that the field may apply to when used /// as an option. If it is unset, then the field may be freely used as an - /// option on any kind of entity. Note: as of January 2023, support for this is - /// in progress and does not yet have an effect (b/264593489). + /// option on any kind of entity. #[derive( Clone, Copy, @@ -1076,18 +1169,32 @@ pub mod field_options { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - OptionTargetType::TargetTypeUnknown => "TARGET_TYPE_UNKNOWN", - OptionTargetType::TargetTypeFile => "TARGET_TYPE_FILE", - OptionTargetType::TargetTypeExtensionRange => { - "TARGET_TYPE_EXTENSION_RANGE" - } - OptionTargetType::TargetTypeMessage => "TARGET_TYPE_MESSAGE", - OptionTargetType::TargetTypeField => "TARGET_TYPE_FIELD", - OptionTargetType::TargetTypeOneof => "TARGET_TYPE_ONEOF", - OptionTargetType::TargetTypeEnum => "TARGET_TYPE_ENUM", - OptionTargetType::TargetTypeEnumEntry => "TARGET_TYPE_ENUM_ENTRY", - OptionTargetType::TargetTypeService => "TARGET_TYPE_SERVICE", - OptionTargetType::TargetTypeMethod => "TARGET_TYPE_METHOD", + Self::TargetTypeUnknown => "TARGET_TYPE_UNKNOWN", + Self::TargetTypeFile => "TARGET_TYPE_FILE", + Self::TargetTypeExtensionRange => "TARGET_TYPE_EXTENSION_RANGE", + Self::TargetTypeMessage => "TARGET_TYPE_MESSAGE", + Self::TargetTypeField => "TARGET_TYPE_FIELD", + Self::TargetTypeOneof => "TARGET_TYPE_ONEOF", + Self::TargetTypeEnum => "TARGET_TYPE_ENUM", + Self::TargetTypeEnumEntry => "TARGET_TYPE_ENUM_ENTRY", + Self::TargetTypeService => "TARGET_TYPE_SERVICE", + Self::TargetTypeMethod => "TARGET_TYPE_METHOD", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "TARGET_TYPE_UNKNOWN" => Some(Self::TargetTypeUnknown), + "TARGET_TYPE_FILE" => Some(Self::TargetTypeFile), + "TARGET_TYPE_EXTENSION_RANGE" => Some(Self::TargetTypeExtensionRange), + "TARGET_TYPE_MESSAGE" => Some(Self::TargetTypeMessage), + "TARGET_TYPE_FIELD" => Some(Self::TargetTypeField), + "TARGET_TYPE_ONEOF" => Some(Self::TargetTypeOneof), + "TARGET_TYPE_ENUM" => Some(Self::TargetTypeEnum), + "TARGET_TYPE_ENUM_ENTRY" => Some(Self::TargetTypeEnumEntry), + "TARGET_TYPE_SERVICE" => Some(Self::TargetTypeService), + "TARGET_TYPE_METHOD" => Some(Self::TargetTypeMethod), + _ => None, } } } @@ -1145,6 +1252,9 @@ pub struct EnumValueOptions { /// credentials. #[prost(bool, optional, tag = "3", default = "false")] pub debug_redact: ::core::option::Option, + /// Information about the support window of a feature value. + #[prost(message, optional, tag = "4")] + pub feature_support: ::core::option::Option, /// The parser stores options it doesn't recognize here. See above. #[prost(message, repeated, tag = "999")] pub uninterpreted_option: ::prost::alloc::vec::Vec, @@ -1216,9 +1326,18 @@ pub mod method_options { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - IdempotencyLevel::IdempotencyUnknown => "IDEMPOTENCY_UNKNOWN", - IdempotencyLevel::NoSideEffects => "NO_SIDE_EFFECTS", - IdempotencyLevel::Idempotent => "IDEMPOTENT", + Self::IdempotencyUnknown => "IDEMPOTENCY_UNKNOWN", + Self::NoSideEffects => "NO_SIDE_EFFECTS", + Self::Idempotent => "IDEMPOTENT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "IDEMPOTENCY_UNKNOWN" => Some(Self::IdempotencyUnknown), + "NO_SIDE_EFFECTS" => Some(Self::NoSideEffects), + "IDEMPOTENT" => Some(Self::Idempotent), + _ => None, } } } @@ -1253,7 +1372,7 @@ pub mod uninterpreted_option { /// The name of the uninterpreted option. Each string represents a segment in /// a dot-separated name. is_extension is true iff a segment represents an /// extension (denoted with parentheses in options specs in .proto files). - /// E.g.,{ ["foo", false], ["bar.baz", true], ["moo", false] } represents + /// E.g.,{ \["foo", false\], \["bar.baz", true\], \["moo", false\] } represents /// "foo.(bar.baz).moo". #[derive(Clone, PartialEq, ::prost::Message)] pub struct NamePart { @@ -1269,7 +1388,7 @@ pub mod uninterpreted_option { /// readability, but leave us very open to this scenario. A future feature will /// be designed and implemented to handle this, hopefully before we ever hit a /// conflict here. -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct FeatureSet { #[prost(enumeration = "feature_set::FieldPresence", optional, tag = "1")] pub field_presence: ::core::option::Option, @@ -1310,10 +1429,20 @@ pub mod feature_set { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - FieldPresence::Unknown => "FIELD_PRESENCE_UNKNOWN", - FieldPresence::Explicit => "EXPLICIT", - FieldPresence::Implicit => "IMPLICIT", - FieldPresence::LegacyRequired => "LEGACY_REQUIRED", + Self::Unknown => "FIELD_PRESENCE_UNKNOWN", + Self::Explicit => "EXPLICIT", + Self::Implicit => "IMPLICIT", + Self::LegacyRequired => "LEGACY_REQUIRED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FIELD_PRESENCE_UNKNOWN" => Some(Self::Unknown), + "EXPLICIT" => Some(Self::Explicit), + "IMPLICIT" => Some(Self::Implicit), + "LEGACY_REQUIRED" => Some(Self::LegacyRequired), + _ => None, } } } @@ -1340,9 +1469,18 @@ pub mod feature_set { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - EnumType::Unknown => "ENUM_TYPE_UNKNOWN", - EnumType::Open => "OPEN", - EnumType::Closed => "CLOSED", + Self::Unknown => "ENUM_TYPE_UNKNOWN", + Self::Open => "OPEN", + Self::Closed => "CLOSED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "ENUM_TYPE_UNKNOWN" => Some(Self::Unknown), + "OPEN" => Some(Self::Open), + "CLOSED" => Some(Self::Closed), + _ => None, } } } @@ -1369,9 +1507,18 @@ pub mod feature_set { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - RepeatedFieldEncoding::Unknown => "REPEATED_FIELD_ENCODING_UNKNOWN", - RepeatedFieldEncoding::Packed => "PACKED", - RepeatedFieldEncoding::Expanded => "EXPANDED", + Self::Unknown => "REPEATED_FIELD_ENCODING_UNKNOWN", + Self::Packed => "PACKED", + Self::Expanded => "EXPANDED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "REPEATED_FIELD_ENCODING_UNKNOWN" => Some(Self::Unknown), + "PACKED" => Some(Self::Packed), + "EXPANDED" => Some(Self::Expanded), + _ => None, } } } @@ -1389,8 +1536,8 @@ pub mod feature_set { #[repr(i32)] pub enum Utf8Validation { Unknown = 0, - None = 1, Verify = 2, + None = 3, } impl Utf8Validation { /// String value of the enum field names used in the ProtoBuf definition. @@ -1398,9 +1545,18 @@ pub mod feature_set { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Utf8Validation::Unknown => "UTF8_VALIDATION_UNKNOWN", - Utf8Validation::None => "NONE", - Utf8Validation::Verify => "VERIFY", + Self::Unknown => "UTF8_VALIDATION_UNKNOWN", + Self::Verify => "VERIFY", + Self::None => "NONE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UTF8_VALIDATION_UNKNOWN" => Some(Self::Unknown), + "VERIFY" => Some(Self::Verify), + "NONE" => Some(Self::None), + _ => None, } } } @@ -1427,9 +1583,18 @@ pub mod feature_set { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - MessageEncoding::Unknown => "MESSAGE_ENCODING_UNKNOWN", - MessageEncoding::LengthPrefixed => "LENGTH_PREFIXED", - MessageEncoding::Delimited => "DELIMITED", + Self::Unknown => "MESSAGE_ENCODING_UNKNOWN", + Self::LengthPrefixed => "LENGTH_PREFIXED", + Self::Delimited => "DELIMITED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MESSAGE_ENCODING_UNKNOWN" => Some(Self::Unknown), + "LENGTH_PREFIXED" => Some(Self::LengthPrefixed), + "DELIMITED" => Some(Self::Delimited), + _ => None, } } } @@ -1456,9 +1621,18 @@ pub mod feature_set { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - JsonFormat::Unknown => "JSON_FORMAT_UNKNOWN", - JsonFormat::Allow => "ALLOW", - JsonFormat::LegacyBestEffort => "LEGACY_BEST_EFFORT", + Self::Unknown => "JSON_FORMAT_UNKNOWN", + Self::Allow => "ALLOW", + Self::LegacyBestEffort => "LEGACY_BEST_EFFORT", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "JSON_FORMAT_UNKNOWN" => Some(Self::Unknown), + "ALLOW" => Some(Self::Allow), + "LEGACY_BEST_EFFORT" => Some(Self::LegacyBestEffort), + _ => None, } } } @@ -1488,12 +1662,16 @@ pub mod feature_set_defaults { /// defaults. Not all editions may be contained here. For a given edition, /// the defaults at the closest matching edition ordered at or before it should /// be used. This field must be in strict ascending order by edition. - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct FeatureSetEditionDefault { #[prost(enumeration = "super::Edition", optional, tag = "3")] pub edition: ::core::option::Option, - #[prost(message, optional, tag = "2")] - pub features: ::core::option::Option, + /// Defaults of features that can be overridden in this edition. + #[prost(message, optional, tag = "4")] + pub overridable_features: ::core::option::Option, + /// Defaults of features that can't be overridden in this edition. + #[prost(message, optional, tag = "5")] + pub fixed_features: ::core::option::Option, } } /// Encapsulates information about the original source file from which a @@ -1514,11 +1692,11 @@ pub struct SourceCodeInfo { /// a bc de f ghi /// We have the following locations: /// span path represents - /// [a,i) [ 4, 0, 2, 0 ] The whole field definition. - /// [a,b) [ 4, 0, 2, 0, 4 ] The label (optional). - /// [c,d) [ 4, 0, 2, 0, 5 ] The type (string). - /// [e,f) [ 4, 0, 2, 0, 1 ] The name (foo). - /// [g,h) [ 4, 0, 2, 0, 3 ] The number (1). + /// \[a,i) [ 4, 0, 2, 0 \] The whole field definition. + /// \[a,b) [ 4, 0, 2, 0, 4 \] The label (optional). + /// \[c,d) [ 4, 0, 2, 0, 5 \] The type (string). + /// \[e,f) [ 4, 0, 2, 0, 1 \] The name (foo). + /// \[g,h) [ 4, 0, 2, 0, 3 \] The number (1). /// Notes: /// - A location may refer to a repeated field itself (i.e. not to any /// particular index within it). This is used whenever a set of elements are @@ -1551,9 +1729,9 @@ pub mod source_code_info { /// Identifies which part of the FileDescriptorProto was defined at this /// location. /// Each element is a field number or an index. They form a path from - /// the root FileDescriptorProto to the place where the definition occurs. + /// the root FileDescriptorProto to the place where the definition appears. /// For example, this path: - /// [ 4, 3, 2, 7, 1 ] + /// \[ 4, 3, 2, 7, 1 \] /// refers to: /// file.message_type(3) // 4, 3 /// .field(7) // 2, 7 @@ -1566,7 +1744,7 @@ pub mod source_code_info { /// optional string name = 1; /// Thus, the above path gives the location of a field name. If we removed /// the last element: - /// [ 4, 3, 2, 7 ] + /// \[ 4, 3, 2, 7 \] /// this path refers to the whole field declaration (from the beginning /// of the label to the terminating semicolon). #[prost(int32, repeated, tag = "1")] @@ -1687,9 +1865,18 @@ pub mod generated_code_info { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Semantic::None => "NONE", - Semantic::Set => "SET", - Semantic::Alias => "ALIAS", + Self::None => "NONE", + Self::Set => "SET", + Self::Alias => "ALIAS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NONE" => Some(Self::None), + "SET" => Some(Self::Set), + "ALIAS" => Some(Self::Alias), + _ => None, } } } @@ -1701,6 +1888,9 @@ pub mod generated_code_info { pub enum Edition { /// A placeholder for an unknown edition value. Unknown = 0, + /// A placeholder edition for specifying default behaviors *before* a feature + /// was first introduced. This is effectively an "infinite past". + Legacy = 900, /// Legacy syntax "editions". These pre-date editions, but behave much like /// distinct editions. These can't be used to specify the edition of proto /// files, but feature definitions must supply proto2/proto3 defaults for @@ -1711,13 +1901,18 @@ pub enum Edition { /// should not be depended on, but they will always be time-ordered for easy /// comparison. Edition2023 = 1000, + Edition2024 = 1001, /// Placeholder editions for testing feature resolution. These should not be - /// used or relyed on outside of tests. + /// used or relied on outside of tests. Edition1TestOnly = 1, Edition2TestOnly = 2, Edition99997TestOnly = 99997, Edition99998TestOnly = 99998, Edition99999TestOnly = 99999, + /// Placeholder for specifying unbounded edition support. This should only + /// ever be used by plugins that can expect to never require any changes to + /// support a new edition. + Max = 2147483647, } impl Edition { /// String value of the enum field names used in the ProtoBuf definition. @@ -1725,15 +1920,36 @@ impl Edition { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Edition::Unknown => "EDITION_UNKNOWN", - Edition::Proto2 => "EDITION_PROTO2", - Edition::Proto3 => "EDITION_PROTO3", - Edition::Edition2023 => "EDITION_2023", - Edition::Edition1TestOnly => "EDITION_1_TEST_ONLY", - Edition::Edition2TestOnly => "EDITION_2_TEST_ONLY", - Edition::Edition99997TestOnly => "EDITION_99997_TEST_ONLY", - Edition::Edition99998TestOnly => "EDITION_99998_TEST_ONLY", - Edition::Edition99999TestOnly => "EDITION_99999_TEST_ONLY", + Self::Unknown => "EDITION_UNKNOWN", + Self::Legacy => "EDITION_LEGACY", + Self::Proto2 => "EDITION_PROTO2", + Self::Proto3 => "EDITION_PROTO3", + Self::Edition2023 => "EDITION_2023", + Self::Edition2024 => "EDITION_2024", + Self::Edition1TestOnly => "EDITION_1_TEST_ONLY", + Self::Edition2TestOnly => "EDITION_2_TEST_ONLY", + Self::Edition99997TestOnly => "EDITION_99997_TEST_ONLY", + Self::Edition99998TestOnly => "EDITION_99998_TEST_ONLY", + Self::Edition99999TestOnly => "EDITION_99999_TEST_ONLY", + Self::Max => "EDITION_MAX", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "EDITION_UNKNOWN" => Some(Self::Unknown), + "EDITION_LEGACY" => Some(Self::Legacy), + "EDITION_PROTO2" => Some(Self::Proto2), + "EDITION_PROTO3" => Some(Self::Proto3), + "EDITION_2023" => Some(Self::Edition2023), + "EDITION_2024" => Some(Self::Edition2024), + "EDITION_1_TEST_ONLY" => Some(Self::Edition1TestOnly), + "EDITION_2_TEST_ONLY" => Some(Self::Edition2TestOnly), + "EDITION_99997_TEST_ONLY" => Some(Self::Edition99997TestOnly), + "EDITION_99998_TEST_ONLY" => Some(Self::Edition99998TestOnly), + "EDITION_99999_TEST_ONLY" => Some(Self::Edition99999TestOnly), + "EDITION_MAX" => Some(Self::Max), + _ => None, } } } @@ -1809,7 +2025,14 @@ impl NullValue { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - NullValue::NullValue => "NULL_VALUE", + Self::NullValue => "NULL_VALUE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "NULL_VALUE" => Some(Self::NullValue), + _ => None, } } } @@ -1871,16 +2094,16 @@ impl NullValue { /// 01:30 UTC on January 15, 2017. /// In JavaScript, one can convert a Date object to this format using the /// standard -/// \[toISOString()\]() +/// [toISOString()]() /// method. In Python, a standard `datetime.datetime` object can be converted /// to this format using -/// \[`strftime`\]() with +/// [`strftime`]() with /// the time format spec '%Y-%m-%dT%H:%M:%S.%fZ'. Likewise, in Java, one can use -/// the Joda Time's \[`ISODateTimeFormat.dateTime()`\]( +/// the Joda Time's [`ISODateTimeFormat.dateTime()`]( /// ) /// ) to obtain a formatter capable of generating timestamps in this format. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Timestamp { /// Represents seconds of UTC time since Unix epoch /// 1970-01-01T00:00:00Z. Must be from 0001-01-01T00:00:00Z to @@ -1901,5 +2124,5 @@ pub struct Timestamp { /// rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); /// } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Empty {} \ No newline at end of file diff --git a/ydb-grpc/src/generated/mod.rs b/ydb-grpc/src/generated/mod.rs index 998108e3..e23ab50e 100644 --- a/ydb-grpc/src/generated/mod.rs +++ b/ydb-grpc/src/generated/mod.rs @@ -1,26 +1,28 @@ +// This file is @generated by prost-build. pub mod google { pub mod protobuf { include!("google.protobuf.rs"); } } pub mod ydb { + include!("ydb.rs"); pub mod auth { + include!("ydb.auth.rs"); pub mod v1 { include!("ydb.auth.v1.rs"); } - include!("ydb.auth.rs"); } pub mod coordination { + include!("ydb.coordination.rs"); pub mod v1 { include!("ydb.coordination.v1.rs"); } - include!("ydb.coordination.rs"); } pub mod discovery { + include!("ydb.discovery.rs"); pub mod v1 { include!("ydb.discovery.v1.rs"); } - include!("ydb.discovery.rs"); } pub mod formats { include!("ydb.formats.rs"); @@ -32,25 +34,24 @@ pub mod ydb { include!("ydb.operations.rs"); } pub mod scheme { + include!("ydb.scheme.rs"); pub mod v1 { include!("ydb.scheme.v1.rs"); } - include!("ydb.scheme.rs"); } pub mod table { + include!("ydb.table.rs"); pub mod v1 { include!("ydb.table.v1.rs"); } - include!("ydb.table.rs"); } pub mod table_stats { include!("ydb.table_stats.rs"); } pub mod topic { + include!("ydb.topic.rs"); pub mod v1 { include!("ydb.topic.v1.rs"); } - include!("ydb.topic.rs"); } - include!("ydb.rs"); } diff --git a/ydb-grpc/src/generated/ydb.auth.rs b/ydb-grpc/src/generated/ydb.auth.rs index 3205903e..5c3488d9 100644 --- a/ydb-grpc/src/generated/ydb.auth.rs +++ b/ydb-grpc/src/generated/ydb.auth.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct LoginRequest { diff --git a/ydb-grpc/src/generated/ydb.auth.v1.rs b/ydb-grpc/src/generated/ydb.auth.v1.rs index db925d55..492b628b 100644 --- a/ydb-grpc/src/generated/ydb.auth.v1.rs +++ b/ydb-grpc/src/generated/ydb.auth.v1.rs @@ -1,6 +1,13 @@ +// This file is @generated by prost-build. /// Generated client implementations. pub mod auth_service_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; use tonic::codegen::http::Uri; #[derive(Debug, Clone)] @@ -11,7 +18,7 @@ pub mod auth_service_client { /// Attempt to create a new client by connecting to a given endpoint. pub async fn connect(dst: D) -> Result where - D: std::convert::TryInto, + D: TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; @@ -20,10 +27,10 @@ pub mod auth_service_client { } impl AuthServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -41,14 +48,14 @@ pub mod auth_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, + http::Request, Response = http::Response< - >::ResponseBody, + >::ResponseBody, >, >, , - >>::Error: Into + Send + Sync, + http::Request, + >>::Error: Into + std::marker::Send + std::marker::Sync, { AuthServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -66,17 +73,33 @@ pub mod auth_service_client { self.inner = self.inner.accept_compressed(encoding); self } + /// Limits the maximum size of a decoded message. + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } /// Perform login using built-in auth system pub async fn login( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -84,7 +107,10 @@ pub mod auth_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Auth.V1.AuthService/Login", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Auth.V1.AuthService", "Login")); + self.inner.unary(req, path, codec).await } } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.coordination.rs b/ydb-grpc/src/generated/ydb.coordination.rs index 6766210e..d99c6ff5 100644 --- a/ydb-grpc/src/generated/ydb.coordination.rs +++ b/ydb-grpc/src/generated/ydb.coordination.rs @@ -1,8 +1,9 @@ +// This file is @generated by prost-build. /// * /// Stub for unsupported messages /// Intentionally empty #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Unsupported {} /// * /// Configuration settings for a coordination node @@ -110,7 +111,7 @@ pub mod session_request { /// * /// Used for checking liveness of the connection #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PingPong { /// Opaque number specified in the ping message is echoed in the pong message #[prost(uint64, tag = "1")] @@ -146,7 +147,7 @@ pub mod session_request { /// Last message used to cleanly stop session before its timeout expires /// nothing #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SessionStop {} /// * /// Used to acquire a semaphore @@ -316,7 +317,7 @@ pub mod session_response { /// * /// Used for checking liveness of the connection #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PingPong { /// Opaque number specified in the ping message is echoed in the pong message #[prost(uint64, tag = "1")] @@ -335,7 +336,7 @@ pub mod session_response { /// * /// Used to report a successful session create/restore operation #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SessionStarted { /// A server generation id that may be used for restoring the session #[prost(uint64, tag = "1")] @@ -347,7 +348,7 @@ pub mod session_response { /// * /// Used to report a successful graceful termination of the session #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SessionStopped { #[prost(uint64, tag = "1")] pub session_id: u64, @@ -355,7 +356,7 @@ pub mod session_response { /// * /// Used by the server to report when an acquire operation is added to the waiters queue #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct AcquireSemaphorePending { #[prost(uint64, tag = "1")] pub req_id: u64, @@ -410,7 +411,7 @@ pub mod session_response { /// * /// Used to report a change in the watched semaphore #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct DescribeSemaphoreChanged { #[prost(uint64, tag = "1")] pub req_id: u64, @@ -583,9 +584,18 @@ impl ConsistencyMode { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - ConsistencyMode::Unset => "CONSISTENCY_MODE_UNSET", - ConsistencyMode::Strict => "CONSISTENCY_MODE_STRICT", - ConsistencyMode::Relaxed => "CONSISTENCY_MODE_RELAXED", + Self::Unset => "CONSISTENCY_MODE_UNSET", + Self::Strict => "CONSISTENCY_MODE_STRICT", + Self::Relaxed => "CONSISTENCY_MODE_RELAXED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CONSISTENCY_MODE_UNSET" => Some(Self::Unset), + "CONSISTENCY_MODE_STRICT" => Some(Self::Strict), + "CONSISTENCY_MODE_RELAXED" => Some(Self::Relaxed), + _ => None, } } } @@ -608,11 +618,18 @@ impl RateLimiterCountersMode { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - RateLimiterCountersMode::Unset => "RATE_LIMITER_COUNTERS_MODE_UNSET", - RateLimiterCountersMode::Aggregated => { - "RATE_LIMITER_COUNTERS_MODE_AGGREGATED" - } - RateLimiterCountersMode::Detailed => "RATE_LIMITER_COUNTERS_MODE_DETAILED", + Self::Unset => "RATE_LIMITER_COUNTERS_MODE_UNSET", + Self::Aggregated => "RATE_LIMITER_COUNTERS_MODE_AGGREGATED", + Self::Detailed => "RATE_LIMITER_COUNTERS_MODE_DETAILED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "RATE_LIMITER_COUNTERS_MODE_UNSET" => Some(Self::Unset), + "RATE_LIMITER_COUNTERS_MODE_AGGREGATED" => Some(Self::Aggregated), + "RATE_LIMITER_COUNTERS_MODE_DETAILED" => Some(Self::Detailed), + _ => None, } } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.coordination.v1.rs b/ydb-grpc/src/generated/ydb.coordination.v1.rs index 1f82d751..8a41ea56 100644 --- a/ydb-grpc/src/generated/ydb.coordination.v1.rs +++ b/ydb-grpc/src/generated/ydb.coordination.v1.rs @@ -1,6 +1,13 @@ +// This file is @generated by prost-build. /// Generated client implementations. pub mod coordination_service_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; use tonic::codegen::http::Uri; #[derive(Debug, Clone)] @@ -11,7 +18,7 @@ pub mod coordination_service_client { /// Attempt to create a new client by connecting to a given endpoint. pub async fn connect(dst: D) -> Result where - D: std::convert::TryInto, + D: TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; @@ -20,10 +27,10 @@ pub mod coordination_service_client { } impl CoordinationServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -41,14 +48,14 @@ pub mod coordination_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, + http::Request, Response = http::Response< - >::ResponseBody, + >::ResponseBody, >, >, , - >>::Error: Into + Send + Sync, + http::Request, + >>::Error: Into + std::marker::Send + std::marker::Sync, { CoordinationServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -66,7 +73,21 @@ pub mod coordination_service_client { self.inner = self.inner.accept_compressed(encoding); self } - ///* + /// Limits the maximum size of a decoded message. + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } + /// * /// Bidirectional stream used to establish a session with a coordination node /// Relevant APIs for managing semaphores, distributed locking, creating or /// restoring a previously established session are described using nested @@ -78,16 +99,15 @@ pub mod coordination_service_client { request: impl tonic::IntoStreamingRequest< Message = super::super::SessionRequest, >, - ) -> Result< - tonic::Response>, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response>, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -95,19 +115,26 @@ pub mod coordination_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Coordination.V1.CoordinationService/Session", ); - self.inner.streaming(request.into_streaming_request(), path, codec).await + let mut req = request.into_streaming_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Coordination.V1.CoordinationService", "Session"), + ); + self.inner.streaming(req, path, codec).await } /// Creates a new coordination node pub async fn create_node( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -115,19 +142,29 @@ pub mod coordination_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Coordination.V1.CoordinationService/CreateNode", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "Ydb.Coordination.V1.CoordinationService", + "CreateNode", + ), + ); + self.inner.unary(req, path, codec).await } /// Modifies settings of a coordination node pub async fn alter_node( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -135,19 +172,29 @@ pub mod coordination_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Coordination.V1.CoordinationService/AlterNode", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "Ydb.Coordination.V1.CoordinationService", + "AlterNode", + ), + ); + self.inner.unary(req, path, codec).await } /// Drops a coordination node pub async fn drop_node( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -155,19 +202,29 @@ pub mod coordination_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Coordination.V1.CoordinationService/DropNode", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "Ydb.Coordination.V1.CoordinationService", + "DropNode", + ), + ); + self.inner.unary(req, path, codec).await } /// Describes a coordination node pub async fn describe_node( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -175,7 +232,15 @@ pub mod coordination_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Coordination.V1.CoordinationService/DescribeNode", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "Ydb.Coordination.V1.CoordinationService", + "DescribeNode", + ), + ); + self.inner.unary(req, path, codec).await } } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.discovery.rs b/ydb-grpc/src/generated/ydb.discovery.rs index 221d34af..a1a84089 100644 --- a/ydb-grpc/src/generated/ydb.discovery.rs +++ b/ydb-grpc/src/generated/ydb.discovery.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ListEndpointsRequest { @@ -52,7 +53,7 @@ pub struct ListEndpointsResponse { pub operation: ::core::option::Option, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WhoAmIRequest { /// Include user groups in response #[prost(bool, tag = "1")] diff --git a/ydb-grpc/src/generated/ydb.discovery.v1.rs b/ydb-grpc/src/generated/ydb.discovery.v1.rs index a333d171..9a9a9647 100644 --- a/ydb-grpc/src/generated/ydb.discovery.v1.rs +++ b/ydb-grpc/src/generated/ydb.discovery.v1.rs @@ -1,6 +1,13 @@ +// This file is @generated by prost-build. /// Generated client implementations. pub mod discovery_service_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; use tonic::codegen::http::Uri; #[derive(Debug, Clone)] @@ -11,7 +18,7 @@ pub mod discovery_service_client { /// Attempt to create a new client by connecting to a given endpoint. pub async fn connect(dst: D) -> Result where - D: std::convert::TryInto, + D: TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; @@ -20,10 +27,10 @@ pub mod discovery_service_client { } impl DiscoveryServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -41,14 +48,14 @@ pub mod discovery_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, + http::Request, Response = http::Response< - >::ResponseBody, + >::ResponseBody, >, >, , - >>::Error: Into + Send + Sync, + http::Request, + >>::Error: Into + std::marker::Send + std::marker::Sync, { DiscoveryServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -66,19 +73,32 @@ pub mod discovery_service_client { self.inner = self.inner.accept_compressed(encoding); self } + /// Limits the maximum size of a decoded message. + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } pub async fn list_endpoints( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -86,18 +106,25 @@ pub mod discovery_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Discovery.V1.DiscoveryService/ListEndpoints", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Discovery.V1.DiscoveryService", "ListEndpoints"), + ); + self.inner.unary(req, path, codec).await } pub async fn who_am_i( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -105,7 +132,10 @@ pub mod discovery_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Discovery.V1.DiscoveryService/WhoAmI", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Discovery.V1.DiscoveryService", "WhoAmI")); + self.inner.unary(req, path, codec).await } } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.formats.rs b/ydb-grpc/src/generated/ydb.formats.rs index 880e2fc9..6916b2e9 100644 --- a/ydb-grpc/src/generated/ydb.formats.rs +++ b/ydb-grpc/src/generated/ydb.formats.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct ArrowBatchSettings { @@ -19,4 +20,19 @@ pub struct CsvSettings { /// First not skipped line is a CSV header (list of column names). #[prost(bool, tag = "4")] pub header: bool, + #[prost(message, optional, tag = "5")] + pub quoting: ::core::option::Option, +} +/// Nested message and enum types in `CsvSettings`. +pub mod csv_settings { + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct Quoting { + #[prost(bool, tag = "1")] + pub disabled: bool, + #[prost(bytes = "vec", tag = "2")] + pub quote_char: ::prost::alloc::vec::Vec, + #[prost(bool, tag = "3")] + pub double_quote_disabled: bool, + } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.issue.rs b/ydb-grpc/src/generated/ydb.issue.rs index 25c294f3..ebf5b9b7 100644 --- a/ydb-grpc/src/generated/ydb.issue.rs +++ b/ydb-grpc/src/generated/ydb.issue.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. /// IssueMessage is a transport format for ydb/library/yql/public/issue library #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] diff --git a/ydb-grpc/src/generated/ydb.operations.rs b/ydb-grpc/src/generated/ydb.operations.rs index 2b793385..dfe5d88e 100644 --- a/ydb-grpc/src/generated/ydb.operations.rs +++ b/ydb-grpc/src/generated/ydb.operations.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct OperationParams { @@ -59,9 +60,18 @@ pub mod operation_params { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - OperationMode::Unspecified => "OPERATION_MODE_UNSPECIFIED", - OperationMode::Sync => "SYNC", - OperationMode::Async => "ASYNC", + Self::Unspecified => "OPERATION_MODE_UNSPECIFIED", + Self::Sync => "SYNC", + Self::Async => "ASYNC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "OPERATION_MODE_UNSPECIFIED" => Some(Self::Unspecified), + "SYNC" => Some(Self::Sync), + "ASYNC" => Some(Self::Async), + _ => None, } } } diff --git a/ydb-grpc/src/generated/ydb.rs b/ydb-grpc/src/generated/ydb.rs index 6252b630..ef0938df 100644 --- a/ydb-grpc/src/generated/ydb.rs +++ b/ydb-grpc/src/generated/ydb.rs @@ -1,5 +1,6 @@ +// This file is @generated by prost-build. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Limit { #[prost(oneof = "limit::Kind", tags = "1, 2, 3, 4, 5, 6")] pub kind: ::core::option::Option, @@ -7,7 +8,7 @@ pub struct Limit { /// Nested message and enum types in `Limit`. pub mod limit { #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Range { #[prost(uint32, tag = "1")] pub min: u32, @@ -15,7 +16,7 @@ pub mod limit { pub max: u32, } #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Oneof)] + #[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum Kind { #[prost(message, tag = "1")] Range(Range), @@ -40,7 +41,7 @@ pub struct MapKey { pub value: ::prost::alloc::string::String, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct FeatureFlag {} /// Nested message and enum types in `FeatureFlag`. pub mod feature_flag { @@ -68,29 +69,38 @@ pub mod feature_flag { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Status::Unspecified => "STATUS_UNSPECIFIED", - Status::Enabled => "ENABLED", - Status::Disabled => "DISABLED", + Self::Unspecified => "STATUS_UNSPECIFIED", + Self::Enabled => "ENABLED", + Self::Disabled => "DISABLED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STATUS_UNSPECIFIED" => Some(Self::Unspecified), + "ENABLED" => Some(Self::Enabled), + "DISABLED" => Some(Self::Disabled), + _ => None, } } } } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct CostInfo { /// Total amount of request units (RU), consumed by the operation. #[prost(double, tag = "1")] pub consumed_units: f64, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct QuotaExceeded { #[prost(bool, tag = "1")] pub disk: bool, } /// Specifies a point in database time #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct VirtualTimestamp { #[prost(uint64, tag = "1")] pub plan_step: u64, @@ -98,11 +108,11 @@ pub struct VirtualTimestamp { pub tx_id: u64, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct StatusIds {} /// Nested message and enum types in `StatusIds`. pub mod status_ids { - /// reserved range [400000, 400999] + /// reserved range \[400000, 400999\] #[derive(serde::Serialize, serde::Deserialize)] #[derive( Clone, @@ -145,33 +155,60 @@ pub mod status_ids { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - StatusCode::Unspecified => "STATUS_CODE_UNSPECIFIED", - StatusCode::Success => "SUCCESS", - StatusCode::BadRequest => "BAD_REQUEST", - StatusCode::Unauthorized => "UNAUTHORIZED", - StatusCode::InternalError => "INTERNAL_ERROR", - StatusCode::Aborted => "ABORTED", - StatusCode::Unavailable => "UNAVAILABLE", - StatusCode::Overloaded => "OVERLOADED", - StatusCode::SchemeError => "SCHEME_ERROR", - StatusCode::GenericError => "GENERIC_ERROR", - StatusCode::Timeout => "TIMEOUT", - StatusCode::BadSession => "BAD_SESSION", - StatusCode::PreconditionFailed => "PRECONDITION_FAILED", - StatusCode::AlreadyExists => "ALREADY_EXISTS", - StatusCode::NotFound => "NOT_FOUND", - StatusCode::SessionExpired => "SESSION_EXPIRED", - StatusCode::Cancelled => "CANCELLED", - StatusCode::Undetermined => "UNDETERMINED", - StatusCode::Unsupported => "UNSUPPORTED", - StatusCode::SessionBusy => "SESSION_BUSY", - StatusCode::ExternalError => "EXTERNAL_ERROR", + Self::Unspecified => "STATUS_CODE_UNSPECIFIED", + Self::Success => "SUCCESS", + Self::BadRequest => "BAD_REQUEST", + Self::Unauthorized => "UNAUTHORIZED", + Self::InternalError => "INTERNAL_ERROR", + Self::Aborted => "ABORTED", + Self::Unavailable => "UNAVAILABLE", + Self::Overloaded => "OVERLOADED", + Self::SchemeError => "SCHEME_ERROR", + Self::GenericError => "GENERIC_ERROR", + Self::Timeout => "TIMEOUT", + Self::BadSession => "BAD_SESSION", + Self::PreconditionFailed => "PRECONDITION_FAILED", + Self::AlreadyExists => "ALREADY_EXISTS", + Self::NotFound => "NOT_FOUND", + Self::SessionExpired => "SESSION_EXPIRED", + Self::Cancelled => "CANCELLED", + Self::Undetermined => "UNDETERMINED", + Self::Unsupported => "UNSUPPORTED", + Self::SessionBusy => "SESSION_BUSY", + Self::ExternalError => "EXTERNAL_ERROR", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STATUS_CODE_UNSPECIFIED" => Some(Self::Unspecified), + "SUCCESS" => Some(Self::Success), + "BAD_REQUEST" => Some(Self::BadRequest), + "UNAUTHORIZED" => Some(Self::Unauthorized), + "INTERNAL_ERROR" => Some(Self::InternalError), + "ABORTED" => Some(Self::Aborted), + "UNAVAILABLE" => Some(Self::Unavailable), + "OVERLOADED" => Some(Self::Overloaded), + "SCHEME_ERROR" => Some(Self::SchemeError), + "GENERIC_ERROR" => Some(Self::GenericError), + "TIMEOUT" => Some(Self::Timeout), + "BAD_SESSION" => Some(Self::BadSession), + "PRECONDITION_FAILED" => Some(Self::PreconditionFailed), + "ALREADY_EXISTS" => Some(Self::AlreadyExists), + "NOT_FOUND" => Some(Self::NotFound), + "SESSION_EXPIRED" => Some(Self::SessionExpired), + "CANCELLED" => Some(Self::Cancelled), + "UNDETERMINED" => Some(Self::Undetermined), + "UNSUPPORTED" => Some(Self::Unsupported), + "SESSION_BUSY" => Some(Self::SessionBusy), + "EXTERNAL_ERROR" => Some(Self::ExternalError), + _ => None, } } } } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct DecimalType { #[prost(uint32, tag = "1")] pub precision: u32, @@ -304,6 +341,10 @@ pub mod r#type { TzDate = 52, TzDatetime = 53, TzTimestamp = 54, + Date32 = 64, + Datetime64 = 65, + Timestamp64 = 66, + Interval64 = 67, String = 4097, Utf8 = 4608, Yson = 4609, @@ -318,44 +359,84 @@ pub mod r#type { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - PrimitiveTypeId::Unspecified => "PRIMITIVE_TYPE_ID_UNSPECIFIED", - PrimitiveTypeId::Bool => "BOOL", - PrimitiveTypeId::Int8 => "INT8", - PrimitiveTypeId::Uint8 => "UINT8", - PrimitiveTypeId::Int16 => "INT16", - PrimitiveTypeId::Uint16 => "UINT16", - PrimitiveTypeId::Int32 => "INT32", - PrimitiveTypeId::Uint32 => "UINT32", - PrimitiveTypeId::Int64 => "INT64", - PrimitiveTypeId::Uint64 => "UINT64", - PrimitiveTypeId::Float => "FLOAT", - PrimitiveTypeId::Double => "DOUBLE", - PrimitiveTypeId::Date => "DATE", - PrimitiveTypeId::Datetime => "DATETIME", - PrimitiveTypeId::Timestamp => "TIMESTAMP", - PrimitiveTypeId::Interval => "INTERVAL", - PrimitiveTypeId::TzDate => "TZ_DATE", - PrimitiveTypeId::TzDatetime => "TZ_DATETIME", - PrimitiveTypeId::TzTimestamp => "TZ_TIMESTAMP", - PrimitiveTypeId::String => "STRING", - PrimitiveTypeId::Utf8 => "UTF8", - PrimitiveTypeId::Yson => "YSON", - PrimitiveTypeId::Json => "JSON", - PrimitiveTypeId::Uuid => "UUID", - PrimitiveTypeId::JsonDocument => "JSON_DOCUMENT", - PrimitiveTypeId::Dynumber => "DYNUMBER", + Self::Unspecified => "PRIMITIVE_TYPE_ID_UNSPECIFIED", + Self::Bool => "BOOL", + Self::Int8 => "INT8", + Self::Uint8 => "UINT8", + Self::Int16 => "INT16", + Self::Uint16 => "UINT16", + Self::Int32 => "INT32", + Self::Uint32 => "UINT32", + Self::Int64 => "INT64", + Self::Uint64 => "UINT64", + Self::Float => "FLOAT", + Self::Double => "DOUBLE", + Self::Date => "DATE", + Self::Datetime => "DATETIME", + Self::Timestamp => "TIMESTAMP", + Self::Interval => "INTERVAL", + Self::TzDate => "TZ_DATE", + Self::TzDatetime => "TZ_DATETIME", + Self::TzTimestamp => "TZ_TIMESTAMP", + Self::Date32 => "DATE32", + Self::Datetime64 => "DATETIME64", + Self::Timestamp64 => "TIMESTAMP64", + Self::Interval64 => "INTERVAL64", + Self::String => "STRING", + Self::Utf8 => "UTF8", + Self::Yson => "YSON", + Self::Json => "JSON", + Self::Uuid => "UUID", + Self::JsonDocument => "JSON_DOCUMENT", + Self::Dynumber => "DYNUMBER", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "PRIMITIVE_TYPE_ID_UNSPECIFIED" => Some(Self::Unspecified), + "BOOL" => Some(Self::Bool), + "INT8" => Some(Self::Int8), + "UINT8" => Some(Self::Uint8), + "INT16" => Some(Self::Int16), + "UINT16" => Some(Self::Uint16), + "INT32" => Some(Self::Int32), + "UINT32" => Some(Self::Uint32), + "INT64" => Some(Self::Int64), + "UINT64" => Some(Self::Uint64), + "FLOAT" => Some(Self::Float), + "DOUBLE" => Some(Self::Double), + "DATE" => Some(Self::Date), + "DATETIME" => Some(Self::Datetime), + "TIMESTAMP" => Some(Self::Timestamp), + "INTERVAL" => Some(Self::Interval), + "TZ_DATE" => Some(Self::TzDate), + "TZ_DATETIME" => Some(Self::TzDatetime), + "TZ_TIMESTAMP" => Some(Self::TzTimestamp), + "DATE32" => Some(Self::Date32), + "DATETIME64" => Some(Self::Datetime64), + "TIMESTAMP64" => Some(Self::Timestamp64), + "INTERVAL64" => Some(Self::Interval64), + "STRING" => Some(Self::String), + "UTF8" => Some(Self::Utf8), + "YSON" => Some(Self::Yson), + "JSON" => Some(Self::Json), + "UUID" => Some(Self::Uuid), + "JSON_DOCUMENT" => Some(Self::JsonDocument), + "DYNUMBER" => Some(Self::Dynumber), + _ => None, } } } #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum Type { - /// Data types + /// Data types #[prost(enumeration = "PrimitiveTypeId", tag = "1")] TypeId(i32), #[prost(message, tag = "2")] DecimalType(super::DecimalType), - /// Container types + /// Container types #[prost(message, tag = "101")] OptionalType(::prost::alloc::boxed::Box), #[prost(message, tag = "102")] @@ -370,7 +451,7 @@ pub mod r#type { VariantType(super::VariantType), #[prost(message, tag = "107")] TaggedType(::prost::alloc::boxed::Box), - /// Special types + /// Special types #[prost(enumeration = "super::super::google::protobuf::NullValue", tag = "201")] VoidType(i32), #[prost(enumeration = "super::super::google::protobuf::NullValue", tag = "202")] diff --git a/ydb-grpc/src/generated/ydb.scheme.rs b/ydb-grpc/src/generated/ydb.scheme.rs index f22eaa6a..e34a5623 100644 --- a/ydb-grpc/src/generated/ydb.scheme.rs +++ b/ydb-grpc/src/generated/ydb.scheme.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. /// Create directory. /// All intermediate directories must be created #[derive(serde::Serialize, serde::Deserialize)] @@ -118,22 +119,44 @@ pub mod entry { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Type::Unspecified => "TYPE_UNSPECIFIED", - Type::Directory => "DIRECTORY", - Type::Table => "TABLE", - Type::PersQueueGroup => "PERS_QUEUE_GROUP", - Type::Database => "DATABASE", - Type::RtmrVolume => "RTMR_VOLUME", - Type::BlockStoreVolume => "BLOCK_STORE_VOLUME", - Type::CoordinationNode => "COORDINATION_NODE", - Type::ColumnStore => "COLUMN_STORE", - Type::ColumnTable => "COLUMN_TABLE", - Type::Sequence => "SEQUENCE", - Type::Replication => "REPLICATION", - Type::Topic => "TOPIC", - Type::ExternalTable => "EXTERNAL_TABLE", - Type::ExternalDataSource => "EXTERNAL_DATA_SOURCE", - Type::View => "VIEW", + Self::Unspecified => "TYPE_UNSPECIFIED", + Self::Directory => "DIRECTORY", + Self::Table => "TABLE", + Self::PersQueueGroup => "PERS_QUEUE_GROUP", + Self::Database => "DATABASE", + Self::RtmrVolume => "RTMR_VOLUME", + Self::BlockStoreVolume => "BLOCK_STORE_VOLUME", + Self::CoordinationNode => "COORDINATION_NODE", + Self::ColumnStore => "COLUMN_STORE", + Self::ColumnTable => "COLUMN_TABLE", + Self::Sequence => "SEQUENCE", + Self::Replication => "REPLICATION", + Self::Topic => "TOPIC", + Self::ExternalTable => "EXTERNAL_TABLE", + Self::ExternalDataSource => "EXTERNAL_DATA_SOURCE", + Self::View => "VIEW", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "TYPE_UNSPECIFIED" => Some(Self::Unspecified), + "DIRECTORY" => Some(Self::Directory), + "TABLE" => Some(Self::Table), + "PERS_QUEUE_GROUP" => Some(Self::PersQueueGroup), + "DATABASE" => Some(Self::Database), + "RTMR_VOLUME" => Some(Self::RtmrVolume), + "BLOCK_STORE_VOLUME" => Some(Self::BlockStoreVolume), + "COORDINATION_NODE" => Some(Self::CoordinationNode), + "COLUMN_STORE" => Some(Self::ColumnStore), + "COLUMN_TABLE" => Some(Self::ColumnTable), + "SEQUENCE" => Some(Self::Sequence), + "REPLICATION" => Some(Self::Replication), + "TOPIC" => Some(Self::Topic), + "EXTERNAL_TABLE" => Some(Self::ExternalTable), + "EXTERNAL_DATA_SOURCE" => Some(Self::ExternalDataSource), + "VIEW" => Some(Self::View), + _ => None, } } } @@ -212,7 +235,7 @@ pub struct ModifyPermissionsRequest { /// Nested message and enum types in `ModifyPermissionsRequest`. pub mod modify_permissions_request { #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Oneof)] + #[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum Inheritance { #[prost(bool, tag = "5")] InterruptInheritance(bool), diff --git a/ydb-grpc/src/generated/ydb.scheme.v1.rs b/ydb-grpc/src/generated/ydb.scheme.v1.rs index 05105206..c5185582 100644 --- a/ydb-grpc/src/generated/ydb.scheme.v1.rs +++ b/ydb-grpc/src/generated/ydb.scheme.v1.rs @@ -1,6 +1,13 @@ +// This file is @generated by prost-build. /// Generated client implementations. pub mod scheme_service_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; use tonic::codegen::http::Uri; #[derive(Debug, Clone)] @@ -11,7 +18,7 @@ pub mod scheme_service_client { /// Attempt to create a new client by connecting to a given endpoint. pub async fn connect(dst: D) -> Result where - D: std::convert::TryInto, + D: TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; @@ -20,10 +27,10 @@ pub mod scheme_service_client { } impl SchemeServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -41,14 +48,14 @@ pub mod scheme_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, + http::Request, Response = http::Response< - >::ResponseBody, + >::ResponseBody, >, >, , - >>::Error: Into + Send + Sync, + http::Request, + >>::Error: Into + std::marker::Send + std::marker::Sync, { SchemeServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -66,20 +73,33 @@ pub mod scheme_service_client { self.inner = self.inner.accept_compressed(encoding); self } + /// Limits the maximum size of a decoded message. + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } /// Make Directory. pub async fn make_directory( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -87,22 +107,24 @@ pub mod scheme_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Scheme.V1.SchemeService/MakeDirectory", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Scheme.V1.SchemeService", "MakeDirectory")); + self.inner.unary(req, path, codec).await } /// Remove Directory. pub async fn remove_directory( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -110,22 +132,26 @@ pub mod scheme_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Scheme.V1.SchemeService/RemoveDirectory", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Scheme.V1.SchemeService", "RemoveDirectory"), + ); + self.inner.unary(req, path, codec).await } /// Returns information about given directory and objects inside it. pub async fn list_directory( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -133,19 +159,24 @@ pub mod scheme_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Scheme.V1.SchemeService/ListDirectory", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Scheme.V1.SchemeService", "ListDirectory")); + self.inner.unary(req, path, codec).await } /// Returns information about object with given path. pub async fn describe_path( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -153,22 +184,24 @@ pub mod scheme_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Scheme.V1.SchemeService/DescribePath", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Scheme.V1.SchemeService", "DescribePath")); + self.inner.unary(req, path, codec).await } /// Modify permissions. pub async fn modify_permissions( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -176,7 +209,12 @@ pub mod scheme_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Scheme.V1.SchemeService/ModifyPermissions", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Scheme.V1.SchemeService", "ModifyPermissions"), + ); + self.inner.unary(req, path, codec).await } } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.table.rs b/ydb-grpc/src/generated/ydb.table.rs index ae936ba4..7817cad9 100644 --- a/ydb-grpc/src/generated/ydb.table.rs +++ b/ydb-grpc/src/generated/ydb.table.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. /// Create new session #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -37,13 +38,13 @@ pub struct DeleteSessionResponse { pub operation: ::core::option::Option, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct GlobalIndex {} #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct GlobalAsyncIndex {} #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct GlobalUniqueIndex {} /// Represent secondary index #[derive(serde::Serialize, serde::Deserialize)] @@ -66,7 +67,7 @@ pub struct TableIndex { pub mod table_index { /// Type of index #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Oneof)] + #[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum Type { #[prost(message, tag = "3")] GlobalIndex(super::GlobalIndex), @@ -126,15 +127,24 @@ pub mod table_index_description { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Status::Unspecified => "STATUS_UNSPECIFIED", - Status::Ready => "STATUS_READY", - Status::Building => "STATUS_BUILDING", + Self::Unspecified => "STATUS_UNSPECIFIED", + Self::Ready => "STATUS_READY", + Self::Building => "STATUS_BUILDING", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STATUS_UNSPECIFIED" => Some(Self::Unspecified), + "STATUS_READY" => Some(Self::Ready), + "STATUS_BUILDING" => Some(Self::Building), + _ => None, } } } /// Type of index #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Oneof)] + #[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum Type { #[prost(message, tag = "3")] GlobalIndex(super::GlobalIndex), @@ -146,7 +156,7 @@ pub mod table_index_description { } /// State of index building operation #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct IndexBuildState {} /// Nested message and enum types in `IndexBuildState`. pub mod index_build_state { @@ -180,15 +190,30 @@ pub mod index_build_state { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - State::Unspecified => "STATE_UNSPECIFIED", - State::Preparing => "STATE_PREPARING", - State::TransferingData => "STATE_TRANSFERING_DATA", - State::Applying => "STATE_APPLYING", - State::Done => "STATE_DONE", - State::Cancellation => "STATE_CANCELLATION", - State::Cancelled => "STATE_CANCELLED", - State::Rejection => "STATE_REJECTION", - State::Rejected => "STATE_REJECTED", + Self::Unspecified => "STATE_UNSPECIFIED", + Self::Preparing => "STATE_PREPARING", + Self::TransferingData => "STATE_TRANSFERING_DATA", + Self::Applying => "STATE_APPLYING", + Self::Done => "STATE_DONE", + Self::Cancellation => "STATE_CANCELLATION", + Self::Cancelled => "STATE_CANCELLED", + Self::Rejection => "STATE_REJECTION", + Self::Rejected => "STATE_REJECTED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STATE_UNSPECIFIED" => Some(Self::Unspecified), + "STATE_PREPARING" => Some(Self::Preparing), + "STATE_TRANSFERING_DATA" => Some(Self::TransferingData), + "STATE_APPLYING" => Some(Self::Applying), + "STATE_DONE" => Some(Self::Done), + "STATE_CANCELLATION" => Some(Self::Cancellation), + "STATE_CANCELLED" => Some(Self::Cancelled), + "STATE_REJECTION" => Some(Self::Rejection), + "STATE_REJECTED" => Some(Self::Rejected), + _ => None, } } } @@ -213,7 +238,7 @@ pub struct IndexBuildMetadata { pub progress: f32, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ChangefeedMode {} /// Nested message and enum types in `ChangefeedMode`. pub mod changefeed_mode { @@ -249,18 +274,30 @@ pub mod changefeed_mode { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Mode::Unspecified => "MODE_UNSPECIFIED", - Mode::KeysOnly => "MODE_KEYS_ONLY", - Mode::Updates => "MODE_UPDATES", - Mode::NewImage => "MODE_NEW_IMAGE", - Mode::OldImage => "MODE_OLD_IMAGE", - Mode::NewAndOldImages => "MODE_NEW_AND_OLD_IMAGES", + Self::Unspecified => "MODE_UNSPECIFIED", + Self::KeysOnly => "MODE_KEYS_ONLY", + Self::Updates => "MODE_UPDATES", + Self::NewImage => "MODE_NEW_IMAGE", + Self::OldImage => "MODE_OLD_IMAGE", + Self::NewAndOldImages => "MODE_NEW_AND_OLD_IMAGES", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MODE_UNSPECIFIED" => Some(Self::Unspecified), + "MODE_KEYS_ONLY" => Some(Self::KeysOnly), + "MODE_UPDATES" => Some(Self::Updates), + "MODE_NEW_IMAGE" => Some(Self::NewImage), + "MODE_OLD_IMAGE" => Some(Self::OldImage), + "MODE_NEW_AND_OLD_IMAGES" => Some(Self::NewAndOldImages), + _ => None, } } } } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ChangefeedFormat {} /// Nested message and enum types in `ChangefeedFormat`. pub mod changefeed_format { @@ -292,10 +329,20 @@ pub mod changefeed_format { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Format::Unspecified => "FORMAT_UNSPECIFIED", - Format::Json => "FORMAT_JSON", - Format::DynamodbStreamsJson => "FORMAT_DYNAMODB_STREAMS_JSON", - Format::DebeziumJson => "FORMAT_DEBEZIUM_JSON", + Self::Unspecified => "FORMAT_UNSPECIFIED", + Self::Json => "FORMAT_JSON", + Self::DynamodbStreamsJson => "FORMAT_DYNAMODB_STREAMS_JSON", + Self::DebeziumJson => "FORMAT_DEBEZIUM_JSON", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "FORMAT_UNSPECIFIED" => Some(Self::Unspecified), + "FORMAT_JSON" => Some(Self::Json), + "FORMAT_DYNAMODB_STREAMS_JSON" => Some(Self::DynamodbStreamsJson), + "FORMAT_DEBEZIUM_JSON" => Some(Self::DebeziumJson), + _ => None, } } } @@ -408,10 +455,20 @@ pub mod changefeed_description { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - State::Unspecified => "STATE_UNSPECIFIED", - State::Enabled => "STATE_ENABLED", - State::Disabled => "STATE_DISABLED", - State::InitialScan => "STATE_INITIAL_SCAN", + Self::Unspecified => "STATE_UNSPECIFIED", + Self::Enabled => "STATE_ENABLED", + Self::Disabled => "STATE_DISABLED", + Self::InitialScan => "STATE_INITIAL_SCAN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STATE_UNSPECIFIED" => Some(Self::Unspecified), + "STATE_ENABLED" => Some(Self::Enabled), + "STATE_DISABLED" => Some(Self::Disabled), + "STATE_INITIAL_SCAN" => Some(Self::InitialScan), + _ => None, } } } @@ -486,9 +543,18 @@ pub mod column_family_policy { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Compression::Unspecified => "COMPRESSION_UNSPECIFIED", - Compression::Uncompressed => "UNCOMPRESSED", - Compression::Compressed => "COMPRESSED", + Self::Unspecified => "COMPRESSION_UNSPECIFIED", + Self::Uncompressed => "UNCOMPRESSED", + Self::Compressed => "COMPRESSED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COMPRESSION_UNSPECIFIED" => Some(Self::Unspecified), + "UNCOMPRESSED" => Some(Self::Uncompressed), + "COMPRESSED" => Some(Self::Compressed), + _ => None, } } } @@ -511,7 +577,7 @@ pub struct ExplicitPartitions { pub split_points: ::prost::alloc::vec::Vec, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PartitionStats { /// Approximate number of rows in shard #[prost(uint64, tag = "1")] @@ -519,6 +585,9 @@ pub struct PartitionStats { /// Approximate size of shard (bytes) #[prost(uint64, tag = "2")] pub store_size: u64, + /// id of node that serve shard key range + #[prost(uint32, tag = "3")] + pub leader_node_id: u32, } #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -581,12 +650,20 @@ pub mod partitioning_policy { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - AutoPartitioningPolicy::Unspecified => { - "AUTO_PARTITIONING_POLICY_UNSPECIFIED" - } - AutoPartitioningPolicy::Disabled => "DISABLED", - AutoPartitioningPolicy::AutoSplit => "AUTO_SPLIT", - AutoPartitioningPolicy::AutoSplitMerge => "AUTO_SPLIT_MERGE", + Self::Unspecified => "AUTO_PARTITIONING_POLICY_UNSPECIFIED", + Self::Disabled => "DISABLED", + Self::AutoSplit => "AUTO_SPLIT", + Self::AutoSplitMerge => "AUTO_SPLIT_MERGE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AUTO_PARTITIONING_POLICY_UNSPECIFIED" => Some(Self::Unspecified), + "DISABLED" => Some(Self::Disabled), + "AUTO_SPLIT" => Some(Self::AutoSplit), + "AUTO_SPLIT_MERGE" => Some(Self::AutoSplitMerge), + _ => None, } } } @@ -683,7 +760,7 @@ pub struct SequenceDescription { /// Nested message and enum types in `SequenceDescription`. pub mod sequence_description { #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SetVal { #[prost(sint64, optional, tag = "1")] pub next_value: ::core::option::Option, @@ -782,11 +859,22 @@ pub mod value_since_unix_epoch_mode_settings { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Unit::Unspecified => "UNIT_UNSPECIFIED", - Unit::Seconds => "UNIT_SECONDS", - Unit::Milliseconds => "UNIT_MILLISECONDS", - Unit::Microseconds => "UNIT_MICROSECONDS", - Unit::Nanoseconds => "UNIT_NANOSECONDS", + Self::Unspecified => "UNIT_UNSPECIFIED", + Self::Seconds => "UNIT_SECONDS", + Self::Milliseconds => "UNIT_MILLISECONDS", + Self::Microseconds => "UNIT_MICROSECONDS", + Self::Nanoseconds => "UNIT_NANOSECONDS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "UNIT_UNSPECIFIED" => Some(Self::Unspecified), + "UNIT_SECONDS" => Some(Self::Seconds), + "UNIT_MILLISECONDS" => Some(Self::Milliseconds), + "UNIT_MICROSECONDS" => Some(Self::Microseconds), + "UNIT_NANOSECONDS" => Some(Self::Nanoseconds), + _ => None, } } } @@ -879,9 +967,18 @@ pub mod column_family { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Compression::Unspecified => "COMPRESSION_UNSPECIFIED", - Compression::None => "COMPRESSION_NONE", - Compression::Lz4 => "COMPRESSION_LZ4", + Self::Unspecified => "COMPRESSION_UNSPECIFIED", + Self::None => "COMPRESSION_NONE", + Self::Lz4 => "COMPRESSION_LZ4", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "COMPRESSION_UNSPECIFIED" => Some(Self::Unspecified), + "COMPRESSION_NONE" => Some(Self::None), + "COMPRESSION_LZ4" => Some(Self::Lz4), + _ => None, } } } @@ -926,7 +1023,7 @@ pub struct ClusterReplicasSettings { pub az_read_replicas_settings: ::prost::alloc::vec::Vec, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ReadReplicasSettings { #[prost(oneof = "read_replicas_settings::Settings", tags = "1, 2")] pub settings: ::core::option::Option, @@ -934,7 +1031,7 @@ pub struct ReadReplicasSettings { /// Nested message and enum types in `ReadReplicasSettings`. pub mod read_replicas_settings { #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Oneof)] + #[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum Settings { /// Set equal read replicas count for every AZ #[prost(uint64, tag = "1")] @@ -982,7 +1079,7 @@ pub struct CreateTableRequest { ::prost::alloc::string::String, ::prost::alloc::string::String, >, - /// Predefined named set of settings for table compaction ["default", "small_table", "log_table"]. + /// Predefined named set of settings for table compaction \["default", "small_table", "log_table"\]. #[prost(string, tag = "12")] pub compaction_policy: ::prost::alloc::string::String, /// Partitioning settings for table @@ -1102,7 +1199,7 @@ pub struct AlterTableRequest { ::prost::alloc::string::String, ::prost::alloc::string::String, >, - /// Set predefined named set of settings for table compaction ["default", "small_table", "log_table"]. + /// Set predefined named set of settings for table compaction \["default", "small_table", "log_table"\]. /// Set "default" to use default preset. #[prost(string, tag = "15")] pub set_compaction_policy: ::prost::alloc::string::String, @@ -1265,6 +1362,9 @@ pub struct DescribeTableRequest { /// Includes partition statistics (required include_table_statistics) #[prost(bool, tag = "7")] pub include_partition_stats: bool, + /// Includes shard -> node id maping (required include_partition_stats) + #[prost(bool, tag = "9")] + pub include_shard_nodes_info: bool, } #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -1353,22 +1453,22 @@ pub mod query { } } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SerializableModeSettings {} #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct OnlineModeSettings { #[prost(bool, tag = "1")] pub allow_inconsistent_reads: bool, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct StaleModeSettings {} #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct SnapshotModeSettings {} #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct TransactionSettings { #[prost(oneof = "transaction_settings::TxMode", tags = "1, 2, 3, 4")] pub tx_mode: ::core::option::Option, @@ -1376,7 +1476,7 @@ pub struct TransactionSettings { /// Nested message and enum types in `TransactionSettings`. pub mod transaction_settings { #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Oneof)] + #[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum TxMode { #[prost(message, tag = "1")] SerializableReadWrite(super::SerializableModeSettings), @@ -1408,14 +1508,14 @@ pub mod transaction_control { } } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct QueryCachePolicy { #[prost(bool, tag = "1")] pub keep_in_cache: bool, } /// Collect and return query execution stats #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct QueryStatsCollection {} /// Nested message and enum types in `QueryStatsCollection`. pub mod query_stats_collection { @@ -1449,11 +1549,22 @@ pub mod query_stats_collection { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Mode::StatsCollectionUnspecified => "STATS_COLLECTION_UNSPECIFIED", - Mode::StatsCollectionNone => "STATS_COLLECTION_NONE", - Mode::StatsCollectionBasic => "STATS_COLLECTION_BASIC", - Mode::StatsCollectionFull => "STATS_COLLECTION_FULL", - Mode::StatsCollectionProfile => "STATS_COLLECTION_PROFILE", + Self::StatsCollectionUnspecified => "STATS_COLLECTION_UNSPECIFIED", + Self::StatsCollectionNone => "STATS_COLLECTION_NONE", + Self::StatsCollectionBasic => "STATS_COLLECTION_BASIC", + Self::StatsCollectionFull => "STATS_COLLECTION_FULL", + Self::StatsCollectionProfile => "STATS_COLLECTION_PROFILE", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STATS_COLLECTION_UNSPECIFIED" => Some(Self::StatsCollectionUnspecified), + "STATS_COLLECTION_NONE" => Some(Self::StatsCollectionNone), + "STATS_COLLECTION_BASIC" => Some(Self::StatsCollectionBasic), + "STATS_COLLECTION_FULL" => Some(Self::StatsCollectionFull), + "STATS_COLLECTION_PROFILE" => Some(Self::StatsCollectionProfile), + _ => None, } } } @@ -1626,7 +1737,7 @@ pub struct KeepAliveResponse { pub operation: ::core::option::Option, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct KeepAliveResult { #[prost(enumeration = "keep_alive_result::SessionStatus", tag = "1")] pub session_status: i32, @@ -1657,9 +1768,18 @@ pub mod keep_alive_result { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - SessionStatus::Unspecified => "SESSION_STATUS_UNSPECIFIED", - SessionStatus::Ready => "SESSION_STATUS_READY", - SessionStatus::Busy => "SESSION_STATUS_BUSY", + Self::Unspecified => "SESSION_STATUS_UNSPECIFIED", + Self::Ready => "SESSION_STATUS_READY", + Self::Busy => "SESSION_STATUS_BUSY", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "SESSION_STATUS_UNSPECIFIED" => Some(Self::Unspecified), + "SESSION_STATUS_READY" => Some(Self::Ready), + "SESSION_STATUS_BUSY" => Some(Self::Busy), + _ => None, } } } @@ -2047,7 +2167,7 @@ pub struct BulkUpsertResponse { pub operation: ::core::option::Option, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct BulkUpsertResult {} #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -2095,9 +2215,18 @@ pub mod execute_scan_query_request { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Mode::Unspecified => "MODE_UNSPECIFIED", - Mode::Explain => "MODE_EXPLAIN", - Mode::Exec => "MODE_EXEC", + Self::Unspecified => "MODE_UNSPECIFIED", + Self::Explain => "MODE_EXPLAIN", + Self::Exec => "MODE_EXEC", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "MODE_UNSPECIFIED" => Some(Self::Unspecified), + "MODE_EXPLAIN" => Some(Self::Explain), + "MODE_EXEC" => Some(Self::Exec), + _ => None, } } } @@ -2138,9 +2267,18 @@ impl StoreType { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - StoreType::Unspecified => "STORE_TYPE_UNSPECIFIED", - StoreType::Row => "STORE_TYPE_ROW", - StoreType::Column => "STORE_TYPE_COLUMN", + Self::Unspecified => "STORE_TYPE_UNSPECIFIED", + Self::Row => "STORE_TYPE_ROW", + Self::Column => "STORE_TYPE_COLUMN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "STORE_TYPE_UNSPECIFIED" => Some(Self::Unspecified), + "STORE_TYPE_ROW" => Some(Self::Row), + "STORE_TYPE_COLUMN" => Some(Self::Column), + _ => None, } } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.table.v1.rs b/ydb-grpc/src/generated/ydb.table.v1.rs index 2c9f0cda..93aff026 100644 --- a/ydb-grpc/src/generated/ydb.table.v1.rs +++ b/ydb-grpc/src/generated/ydb.table.v1.rs @@ -1,6 +1,13 @@ +// This file is @generated by prost-build. /// Generated client implementations. pub mod table_service_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; use tonic::codegen::http::Uri; #[derive(Debug, Clone)] @@ -11,7 +18,7 @@ pub mod table_service_client { /// Attempt to create a new client by connecting to a given endpoint. pub async fn connect(dst: D) -> Result where - D: std::convert::TryInto, + D: TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; @@ -20,10 +27,10 @@ pub mod table_service_client { } impl TableServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -41,14 +48,14 @@ pub mod table_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, + http::Request, Response = http::Response< - >::ResponseBody, + >::ResponseBody, >, >, , - >>::Error: Into + Send + Sync, + http::Request, + >>::Error: Into + std::marker::Send + std::marker::Sync, { TableServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -66,6 +73,20 @@ pub mod table_service_client { self.inner = self.inner.accept_compressed(encoding); self } + /// Limits the maximum size of a decoded message. + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } /// Create new session. Implicit session creation is forbidden, /// so user must create new session before execute any query, /// otherwise BAD_SESSION status will be returned. @@ -76,16 +97,15 @@ pub mod table_service_client { pub async fn create_session( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -93,22 +113,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/CreateSession", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "CreateSession")); + self.inner.unary(req, path, codec).await } /// Ends a session, releasing server resources associated with it. pub async fn delete_session( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -116,19 +138,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/DeleteSession", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "DeleteSession")); + self.inner.unary(req, path, codec).await } /// Idle sessions can be kept alive by calling KeepAlive periodically. pub async fn keep_alive( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -136,19 +163,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/KeepAlive", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "KeepAlive")); + self.inner.unary(req, path, codec).await } /// Creates new table. pub async fn create_table( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -156,19 +188,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/CreateTable", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "CreateTable")); + self.inner.unary(req, path, codec).await } /// Drop table. pub async fn drop_table( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -176,19 +213,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/DropTable", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "DropTable")); + self.inner.unary(req, path, codec).await } /// Modifies schema of given table. pub async fn alter_table( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -196,19 +238,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/AlterTable", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "AlterTable")); + self.inner.unary(req, path, codec).await } /// Creates copy of given table. pub async fn copy_table( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -216,19 +263,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/CopyTable", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "CopyTable")); + self.inner.unary(req, path, codec).await } /// Creates consistent copy of given tables. pub async fn copy_tables( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -236,19 +288,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/CopyTables", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "CopyTables")); + self.inner.unary(req, path, codec).await } /// Creates consistent move of given tables. pub async fn rename_tables( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -256,22 +313,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/RenameTables", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "RenameTables")); + self.inner.unary(req, path, codec).await } /// Returns information about given table (metadata). pub async fn describe_table( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -279,23 +338,25 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/DescribeTable", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "DescribeTable")); + self.inner.unary(req, path, codec).await } /// Explains data query. /// SessionId of previously created session must be provided. pub async fn explain_data_query( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -303,23 +364,27 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/ExplainDataQuery", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Table.V1.TableService", "ExplainDataQuery"), + ); + self.inner.unary(req, path, codec).await } /// Prepares data query, returns query id. /// SessionId of previously created session must be provided. pub async fn prepare_data_query( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -327,23 +392,27 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/PrepareDataQuery", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Table.V1.TableService", "PrepareDataQuery"), + ); + self.inner.unary(req, path, codec).await } /// Executes data query. /// SessionId of previously created session must be provided. pub async fn execute_data_query( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -351,23 +420,27 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/ExecuteDataQuery", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Table.V1.TableService", "ExecuteDataQuery"), + ); + self.inner.unary(req, path, codec).await } /// Executes scheme query. /// SessionId of previously created session must be provided. pub async fn execute_scheme_query( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -375,22 +448,26 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/ExecuteSchemeQuery", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Table.V1.TableService", "ExecuteSchemeQuery"), + ); + self.inner.unary(req, path, codec).await } /// Begins new transaction. pub async fn begin_transaction( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -398,22 +475,26 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/BeginTransaction", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Table.V1.TableService", "BeginTransaction"), + ); + self.inner.unary(req, path, codec).await } /// Commits specified active transaction. pub async fn commit_transaction( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -421,22 +502,26 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/CommitTransaction", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Table.V1.TableService", "CommitTransaction"), + ); + self.inner.unary(req, path, codec).await } /// Performs a rollback of the specified active transaction. pub async fn rollback_transaction( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -444,22 +529,26 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/RollbackTransaction", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Table.V1.TableService", "RollbackTransaction"), + ); + self.inner.unary(req, path, codec).await } /// Describe supported table options. pub async fn describe_table_options( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -467,24 +556,26 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/DescribeTableOptions", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Table.V1.TableService", "DescribeTableOptions"), + ); + self.inner.unary(req, path, codec).await } /// Streaming read table pub async fn stream_read_table( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response< - tonic::codec::Streaming, - >, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response>, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -492,19 +583,24 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/StreamReadTable", ); - self.inner.server_streaming(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "StreamReadTable")); + self.inner.server_streaming(req, path, codec).await } /// Reads specified keys non-transactionally from a single table pub async fn read_rows( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -512,7 +608,10 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/ReadRows", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "ReadRows")); + self.inner.unary(req, path, codec).await } /// Upserts a batch of rows non-transactionally. /// Returns success only when all rows were successfully upserted. In case of an error some rows might @@ -520,13 +619,15 @@ pub mod table_service_client { pub async fn bulk_upsert( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -534,26 +635,26 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/BulkUpsert", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Table.V1.TableService", "BulkUpsert")); + self.inner.unary(req, path, codec).await } /// Executes scan query with streaming result. pub async fn stream_execute_scan_query( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response< - tonic::codec::Streaming< - super::super::ExecuteScanQueryPartialResponse, - >, - >, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response< + tonic::codec::Streaming, + >, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -561,7 +662,15 @@ pub mod table_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Table.V1.TableService/StreamExecuteScanQuery", ); - self.inner.server_streaming(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "Ydb.Table.V1.TableService", + "StreamExecuteScanQuery", + ), + ); + self.inner.server_streaming(req, path, codec).await } } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.table_stats.rs b/ydb-grpc/src/generated/ydb.table_stats.rs index 0f72b3ca..91a281aa 100644 --- a/ydb-grpc/src/generated/ydb.table_stats.rs +++ b/ydb-grpc/src/generated/ydb.table_stats.rs @@ -1,6 +1,7 @@ +// This file is @generated by prost-build. /// Describes select, update (insert, upsert, replace) and delete operations #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct OperationStats { #[prost(uint64, tag = "1")] pub rows: u64, @@ -37,7 +38,7 @@ pub struct QueryPhaseStats { pub literal_phase: bool, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct CompilationStats { #[prost(bool, tag = "1")] pub from_cache: bool, diff --git a/ydb-grpc/src/generated/ydb.topic.rs b/ydb-grpc/src/generated/ydb.topic.rs index 630e58a3..ae0a1765 100644 --- a/ydb-grpc/src/generated/ydb.topic.rs +++ b/ydb-grpc/src/generated/ydb.topic.rs @@ -1,3 +1,4 @@ +// This file is @generated by prost-build. /// Description of supported codecs. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -10,7 +11,7 @@ pub struct SupportedCodecs { /// Represents range [start, end). /// I.e. (end - 1) is the greatest of offsets, included in non-empty range. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct OffsetsRange { #[prost(int64, tag = "1")] pub start: i64, @@ -26,10 +27,10 @@ pub struct UpdateTokenRequest { pub token: ::prost::alloc::string::String, } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct UpdateTokenResponse {} #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PartitionWithGeneration { /// Partition identifier. #[prost(int64, tag = "1")] @@ -48,7 +49,7 @@ pub struct MetadataItem { } /// Messages for bidirectional streaming rpc StreamWrite #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct StreamWriteMessage {} /// Nested message and enum types in `StreamWriteMessage`. pub mod stream_write_message { @@ -247,7 +248,7 @@ pub mod stream_write_message { pub mod write_response { /// Acknowledgment for one persistently written message. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WriteAck { /// Sequence number as in WriteRequest. #[prost(int64, tag = "1")] @@ -261,14 +262,14 @@ pub mod stream_write_message { /// Nested message and enum types in `WriteAck`. pub mod write_ack { #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Written { /// Assigned partition offset. #[prost(int64, tag = "1")] pub offset: i64, } #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct Skipped { #[prost(enumeration = "skipped::Reason", tag = "1")] pub reason: i32, @@ -298,18 +299,26 @@ pub mod stream_write_message { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Reason::Unspecified => "REASON_UNSPECIFIED", - Reason::AlreadyWritten => "REASON_ALREADY_WRITTEN", + Self::Unspecified => "REASON_UNSPECIFIED", + Self::AlreadyWritten => "REASON_ALREADY_WRITTEN", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "REASON_UNSPECIFIED" => Some(Self::Unspecified), + "REASON_ALREADY_WRITTEN" => Some(Self::AlreadyWritten), + _ => None, } } } } #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WrittenInTx {} /// Either message is written for the first time or duplicate. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Oneof)] + #[derive(Clone, Copy, PartialEq, ::prost::Oneof)] pub enum MessageWriteStatus { #[prost(message, tag = "2")] Written(Written), @@ -321,7 +330,7 @@ pub mod stream_write_message { } /// Message with write statistics. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct WriteStatistics { /// Time spent in persisting of data. Same for each message in response. #[prost(message, optional, tag = "1")] @@ -353,7 +362,7 @@ pub mod stream_write_message { } /// Messages for bidirectional streaming rpc StreamRead #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct StreamReadMessage {} /// Nested message and enum types in `StreamReadMessage`. pub mod stream_read_message { @@ -432,7 +441,10 @@ pub mod stream_read_message { /// Issues if any. #[prost(message, repeated, tag = "2")] pub issues: ::prost::alloc::vec::Vec, - #[prost(oneof = "from_server::ServerMessage", tags = "3, 4, 5, 6, 7, 8, 9, 10")] + #[prost( + oneof = "from_server::ServerMessage", + tags = "3, 4, 5, 6, 7, 8, 9, 10, 11" + )] pub server_message: ::core::option::Option, } /// Nested message and enum types in `FromServer`. @@ -458,6 +470,8 @@ pub mod stream_read_message { StopPartitionSessionRequest(super::StopPartitionSessionRequest), #[prost(message, tag = "10")] UpdatePartitionSession(super::UpdatePartitionSession), + #[prost(message, tag = "11")] + EndPartitionSession(super::EndPartitionSession), } } /// Handshake request. @@ -479,6 +493,9 @@ pub mod stream_read_message { /// Direct reading from a partition node. #[prost(bool, tag = "4")] pub direct_read: bool, + /// Indicates that the SDK supports auto partitioning. + #[prost(bool, tag = "5")] + pub auto_partitioning_support: bool, } /// Nested message and enum types in `InitRequest`. pub mod init_request { @@ -516,7 +533,7 @@ pub mod stream_read_message { } /// Message that represents client readiness for receiving more data. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ReadRequest { /// Server and client each keep track of total bytes size of all ReadResponses. /// When client is ready to receive N more bytes in responses (to increment possible total by N), @@ -658,7 +675,7 @@ pub mod stream_read_message { pub mod commit_offset_response { /// Per-partition commit representation. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PartitionCommittedOffset { /// Partition session identifier. #[prost(int64, tag = "1")] @@ -669,14 +686,14 @@ pub mod stream_read_message { } } #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PartitionSessionStatusRequest { #[prost(int64, tag = "1")] pub partition_session_id: i64, } /// Response to status request. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PartitionSessionStatusResponse { /// Identifier of partition session whose status was requested. #[prost(int64, tag = "1")] @@ -711,9 +728,9 @@ pub mod stream_read_message { #[prost(message, optional, tag = "4")] pub partition_location: ::core::option::Option, } - /// Signal for server that cient is ready to recive data for partition. + /// Signal for server that client is ready to recive data for partition. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct StartPartitionSessionResponse { /// Partition session identifier of partition to start read. #[prost(int64, tag = "1")] @@ -734,7 +751,7 @@ pub mod stream_read_message { } /// Command from server to stop and destroy concrete partition session. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct StopPartitionSessionRequest { /// Identifier of partition session that is ready to be closed by server. #[prost(int64, tag = "1")] @@ -758,7 +775,7 @@ pub mod stream_read_message { /// Must be sent only after corresponding StopPartitionSessionRequest from server. /// Server will give this partition to other read session only after StopPartitionSessionResponse signal. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct StopPartitionSessionResponse { /// Partition session identifier of partition session that is released by client. #[prost(int64, tag = "1")] @@ -772,7 +789,7 @@ pub mod stream_read_message { /// Command from server to notify about a partition session update. /// Client should not send a response to the command. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct UpdatePartitionSession { /// Partition session identifier. #[prost(int64, tag = "1")] @@ -784,7 +801,7 @@ pub mod stream_read_message { /// Signal for server that client has finished direct reading. /// Server should not send a response to the command. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct DirectReadAck { /// Partition session identifier. #[prost(int64, tag = "1")] @@ -793,16 +810,35 @@ pub mod stream_read_message { #[prost(int64, tag = "2")] pub direct_read_id: i64, } + /// Signal from server that client has finished reading the partition and all messages have been read. + /// Once a partition has been finished no further messages will ever arrive to that partition. + /// This command is a hint to the client to commit offsets, after which the child partitions will be balanced independently in different reading sessions. + /// Unlike StopPartitionSessionRequest, the client does not have to close the reading session. + /// Client should not send a response to the command. + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Clone, PartialEq, ::prost::Message)] + pub struct EndPartitionSession { + /// Partition session identifier. + #[prost(int64, tag = "1")] + pub partition_session_id: i64, + /// Ids of partitions which were merged with the ended partition. + #[prost(int64, repeated, tag = "2")] + pub adjacent_partition_ids: ::prost::alloc::vec::Vec, + /// Ids of partitions which was formed when the ended partition was split or merged. + #[prost(int64, repeated, tag = "3")] + pub child_partition_ids: ::prost::alloc::vec::Vec, + } } /// Messages for bidirectional streaming rpc StreamDirectRead #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct StreamDirectReadMessage {} /// Nested message and enum types in `StreamDirectReadMessage`. pub mod stream_direct_read_message { /// Client-server message for direct read session. - /// InitDirectRead - command from client to create and start a direct read session. - /// StartDirectReadPartitionSession - command from client to create and start a direct read partition session. + /// InitRequest - command from client to create and start a direct read session. + /// StartDirectReadPartitionSessionRequest - command from client to create and start a direct read partition session. + /// Client signals it is ready to get data from partition. /// UpdateTokenRequest - request to update auth token #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -816,14 +852,18 @@ pub mod stream_direct_read_message { #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum ClientMessage { #[prost(message, tag = "1")] - InitDirectRead(super::InitDirectRead), + InitRequest(super::InitRequest), #[prost(message, tag = "2")] - StartDirectReadPartitionSession(super::StartDirectReadPartitionSession), + StartDirectReadPartitionSessionRequest( + super::StartDirectReadPartitionSessionRequest, + ), #[prost(message, tag = "3")] UpdateTokenRequest(super::super::UpdateTokenRequest), } } /// Server-client message for direct read session. + /// InitResponse - correct handshake response. + /// StartDirectReadPartitionSessionResponse - Response to StartDirectReadPartitionSessionRequest. /// DirectReadResponse - portion of message data. /// StopDirectReadPartitionSession - command from server to stop a direct read partition session. /// UpdateTokenResponse - acknowledgment of token update. @@ -836,7 +876,7 @@ pub mod stream_direct_read_message { /// Issues if any. #[prost(message, repeated, tag = "2")] pub issues: ::prost::alloc::vec::Vec, - #[prost(oneof = "from_server::ServerMessage", tags = "3, 4, 5")] + #[prost(oneof = "from_server::ServerMessage", tags = "6, 7, 3, 4, 5")] pub server_message: ::core::option::Option, } /// Nested message and enum types in `FromServer`. @@ -844,6 +884,12 @@ pub mod stream_direct_read_message { #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Oneof)] pub enum ServerMessage { + #[prost(message, tag = "6")] + InitResponse(super::InitResponse), + #[prost(message, tag = "7")] + StartDirectReadPartitionSessionResponse( + super::StartDirectReadPartitionSessionResponse, + ), #[prost(message, tag = "3")] StopDirectReadPartitionSession(super::StopDirectReadPartitionSession), #[prost(message, tag = "4")] @@ -856,21 +902,21 @@ pub mod stream_direct_read_message { /// Server should not send a response to the command. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] - pub struct InitDirectRead { + pub struct InitRequest { /// Read session identifier. #[prost(string, tag = "1")] pub session_id: ::prost::alloc::string::String, /// Topics that will be read by this session. #[prost(message, repeated, tag = "2")] pub topics_read_settings: ::prost::alloc::vec::Vec< - init_direct_read::TopicReadSettings, + init_request::TopicReadSettings, >, /// Path of consumer that is used for reading by this session. #[prost(string, tag = "3")] pub consumer: ::prost::alloc::string::String, } - /// Nested message and enum types in `InitDirectRead`. - pub mod init_direct_read { + /// Nested message and enum types in `InitRequest`. + pub mod init_request { #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct TopicReadSettings { @@ -879,11 +925,14 @@ pub mod stream_direct_read_message { pub path: ::prost::alloc::string::String, } } + /// Response to the handshake. + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct InitResponse {} /// Command from client to create and start a direct read partition session. - /// Server should not send a response to the command. #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] - pub struct StartDirectReadPartitionSession { + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct StartDirectReadPartitionSessionRequest { /// Partition session identifier. #[prost(int64, tag = "1")] pub partition_session_id: i64, @@ -894,6 +943,17 @@ pub mod stream_direct_read_message { #[prost(int64, tag = "3")] pub generation: i64, } + /// Signal for server that client is ready to receive data for partition. + #[derive(serde::Serialize, serde::Deserialize)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] + pub struct StartDirectReadPartitionSessionResponse { + /// Partition session identifier of partition to start read. + #[prost(int64, tag = "1")] + pub partition_session_id: i64, + /// Partition generation. + #[prost(int64, tag = "2")] + pub generation: i64, + } /// Command from server to stop a direct read partition session. /// Client should not send a response to the command. #[derive(serde::Serialize, serde::Deserialize)] @@ -908,6 +968,9 @@ pub mod stream_direct_read_message { /// Partition session identifier. #[prost(int64, tag = "3")] pub partition_session_id: i64, + /// Partition generation. + #[prost(int64, tag = "4")] + pub generation: i64, } /// Messages that have been read directly from the partition node. /// It's a response to StreamRead.ReadRequest @@ -925,6 +988,10 @@ pub mod stream_direct_read_message { pub partition_data: ::core::option::Option< super::stream_read_message::read_response::PartitionData, >, + /// Total size in bytes of this response as calculated by server. + /// See ReadRequest comment above. + #[prost(int64, tag = "4")] + pub bytes_size: i64, } } #[derive(serde::Serialize, serde::Deserialize)] @@ -989,7 +1056,7 @@ pub struct UpdateOffsetsInTransactionResponse { } /// Add offsets to transaction result message that will be inside UpdateOffsetsInTransactionResponse.operation. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct UpdateOffsetsInTransactionResult {} /// Commit offset request sent from client to server. #[derive(serde::Serialize, serde::Deserialize)] @@ -1009,6 +1076,9 @@ pub struct CommitOffsetRequest { /// Processed offset. #[prost(int64, tag = "5")] pub offset: i64, + /// Read session identifier from StreamRead RPC. + #[prost(string, tag = "6")] + pub read_session_id: ::prost::alloc::string::String, } /// Commit offset response sent from server to client. #[derive(serde::Serialize, serde::Deserialize)] @@ -1020,11 +1090,11 @@ pub struct CommitOffsetResponse { } /// Commit offset result message inside CommitOffsetResponse.operation. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct CommitOffsetResult {} /// message representing statistics by several windows #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct MultipleWindowsStat { #[prost(int64, tag = "1")] pub per_minute: i64, @@ -1066,7 +1136,7 @@ pub struct Consumer { /// Nested message and enum types in `Consumer`. pub mod consumer { #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct ConsumerStats { /// Minimal timestamp of last read from partitions. #[prost(message, optional, tag = "1")] @@ -1083,6 +1153,11 @@ pub mod consumer { pub max_write_time_lag: ::core::option::Option< super::super::super::google::protobuf::Duration, >, + /// The difference between the write timestamp of the last commited message and the current time. + #[prost(message, optional, tag = "5")] + pub max_committed_time_lag: ::core::option::Option< + super::super::super::google::protobuf::Duration, + >, /// Bytes read statistics. #[prost(message, optional, tag = "4")] pub bytes_read: ::core::option::Option, @@ -1118,29 +1193,111 @@ pub struct AlterConsumer { } /// Partitioning settings for topic. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PartitioningSettings { - /// Minimum partition count auto merge would stop working at. + /// Auto merge would stop working when the partitions count reaches min_active_partitions /// Zero value means default - 1. #[prost(int64, tag = "1")] pub min_active_partitions: i64, + /// Auto split would stop working when the partitions count reaches max_active_partitions + /// Zero value means default - 1. + #[prost(int64, tag = "3")] + pub max_active_partitions: i64, /// Limit for total partition count, including active (open for write) and read-only partitions. /// Zero value means default - 100. + /// Use max_active_partitions + #[deprecated] #[prost(int64, tag = "2")] pub partition_count_limit: i64, + /// Settings for the partitions count auto partitioning. + #[prost(message, optional, tag = "4")] + pub auto_partitioning_settings: ::core::option::Option, +} +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AutoPartitioningSettings { + /// Strategy of auto partitioning. + #[prost(enumeration = "AutoPartitioningStrategy", tag = "1")] + pub strategy: i32, + /// Partition write speed auto partitioning options. + #[prost(message, optional, tag = "2")] + pub partition_write_speed: ::core::option::Option< + AutoPartitioningWriteSpeedStrategy, + >, +} +/// Partition will be auto partitioned up (divided into 2 partitions) +/// after write speed to the partition exceeds up_utilization_percent (in percentage of maximum write speed to the partition) for the period of time stabilization_window +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AutoPartitioningWriteSpeedStrategy { + /// Zero value means default - 300. + #[prost(message, optional, tag = "1")] + pub stabilization_window: ::core::option::Option< + super::super::google::protobuf::Duration, + >, + /// Zero value means default - 90. + #[prost(int32, tag = "2")] + pub up_utilization_percent: i32, + /// Zero value means default - 30. + #[prost(int32, tag = "3")] + pub down_utilization_percent: i32, } /// Partitioning settings for topic. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct AlterPartitioningSettings { /// Minimum partition count auto merge would stop working at. /// Zero value means default - 1. #[prost(int64, optional, tag = "1")] pub set_min_active_partitions: ::core::option::Option, + /// Maximum partition count auto merge would stop working at. + /// Zero value means default - 1. + #[prost(int64, optional, tag = "3")] + pub set_max_active_partitions: ::core::option::Option, /// Limit for total partition count, including active (open for write) and read-only partitions. /// Zero value means default - 100. + /// Use set_max_active_partitions + #[deprecated] #[prost(int64, optional, tag = "2")] pub set_partition_count_limit: ::core::option::Option, + /// Settings for auto partitioning the partition number + #[prost(message, optional, tag = "4")] + pub alter_auto_partitioning_settings: ::core::option::Option< + AlterAutoPartitioningSettings, + >, +} +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AlterAutoPartitioningSettings { + /// Strategy of auto partitioning + #[prost(enumeration = "AutoPartitioningStrategy", optional, tag = "1")] + pub set_strategy: ::core::option::Option, + /// Auto partitioning write speed options. + #[prost(message, optional, tag = "2")] + pub set_partition_write_speed: ::core::option::Option< + AlterAutoPartitioningWriteSpeedStrategy, + >, +} +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] +pub struct AlterAutoPartitioningWriteSpeedStrategy { + /// The time of exceeding the threshold value, after which the partition will be + /// auto partitioning. + /// Zero value means default - 300. + #[prost(message, optional, tag = "1")] + pub set_stabilization_window: ::core::option::Option< + super::super::google::protobuf::Duration, + >, + /// The threshold value of the write speed to the partition as a percentage, when exceeded, + /// the partition will be auto split. + /// Zero value means default - 90. + #[prost(int32, optional, tag = "2")] + pub set_up_utilization_percent: ::core::option::Option, + /// The threshold value of the write speed to the partition as a percentage, if it is not reached, + /// the partition will be auto merged. + /// Zero value means default - 30. + #[prost(int32, optional, tag = "3")] + pub set_down_utilization_percent: ::core::option::Option, } /// Create topic request sent from client to server. #[derive(serde::Serialize, serde::Deserialize)] @@ -1203,11 +1360,11 @@ pub struct CreateTopicResponse { } /// Create topic result message that will be inside CreateTopicResponse.operation. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct CreateTopicResult {} /// Topic partition location #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PartitionLocation { /// Node identificator. #[prost(int32, tag = "1")] @@ -1241,6 +1398,16 @@ pub struct DescribeTopicResponse { #[prost(message, optional, tag = "1")] pub operation: ::core::option::Option, } +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, PartialEq, ::prost::Message)] +pub struct PartitionKeyRange { + /// Inclusive left border. Emptiness means -inf. + #[prost(bytes = "vec", optional, tag = "1")] + pub from_bound: ::core::option::Option<::prost::alloc::vec::Vec>, + /// Exclusive right border. Emptiness means +inf. + #[prost(bytes = "vec", optional, tag = "2")] + pub to_bound: ::core::option::Option<::prost::alloc::vec::Vec>, +} /// Describe topic result message that will be inside DescribeTopicResponse.operation. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] @@ -1321,9 +1488,11 @@ pub mod describe_topic_result { /// Partition location, filled only when include_location in request is true. #[prost(message, optional, tag = "6")] pub partition_location: ::core::option::Option, + #[prost(message, optional, tag = "7")] + pub key_range: ::core::option::Option, } #[derive(serde::Serialize, serde::Deserialize)] - #[derive(Clone, PartialEq, ::prost::Message)] + #[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct TopicStats { /// Approximate size of topic. #[prost(int64, tag = "1")] @@ -1371,7 +1540,7 @@ pub struct DescribePartitionResponse { #[prost(message, optional, tag = "1")] pub operation: ::core::option::Option, } -/// Describe partition result message that will be inside DescribeTopicResponse.operation. +/// Describe partition result message that will be inside DescribePartitionResponse.operation. #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, PartialEq, ::prost::Message)] pub struct DescribePartitionResult { @@ -1478,6 +1647,11 @@ pub mod describe_consumer_result { pub max_write_time_lag: ::core::option::Option< super::super::super::google::protobuf::Duration, >, + /// The difference between the write timestamp of the last commited message and the current time. + #[prost(message, optional, tag = "13")] + pub max_committed_time_lag: ::core::option::Option< + super::super::super::google::protobuf::Duration, + >, /// How much bytes were read during several windows statistics from this partition. #[prost(message, optional, tag = "8")] pub bytes_read: ::core::option::Option, @@ -1490,7 +1664,7 @@ pub mod describe_consumer_result { } } #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct PartitionStats { /// Partition contains messages with offsets in range [start, end). #[prost(message, optional, tag = "1")] @@ -1581,7 +1755,7 @@ pub struct AlterTopicResponse { } /// Update topic result message that will be inside UpdateTopicResponse.operation. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct AlterTopicResult {} /// Drop topic request sent from client to server. #[derive(serde::Serialize, serde::Deserialize)] @@ -1604,7 +1778,7 @@ pub struct DropTopicResponse { } /// Drop topic result message that will be inside DropTopicResponse.operation. #[derive(serde::Serialize, serde::Deserialize)] -#[derive(Clone, PartialEq, ::prost::Message)] +#[derive(Clone, Copy, PartialEq, ::prost::Message)] pub struct DropTopicResult {} #[derive(serde::Serialize, serde::Deserialize)] #[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] @@ -1624,12 +1798,65 @@ impl Codec { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - Codec::Unspecified => "CODEC_UNSPECIFIED", - Codec::Raw => "CODEC_RAW", - Codec::Gzip => "CODEC_GZIP", - Codec::Lzop => "CODEC_LZOP", - Codec::Zstd => "CODEC_ZSTD", - Codec::Custom => "CODEC_CUSTOM", + Self::Unspecified => "CODEC_UNSPECIFIED", + Self::Raw => "CODEC_RAW", + Self::Gzip => "CODEC_GZIP", + Self::Lzop => "CODEC_LZOP", + Self::Zstd => "CODEC_ZSTD", + Self::Custom => "CODEC_CUSTOM", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "CODEC_UNSPECIFIED" => Some(Self::Unspecified), + "CODEC_RAW" => Some(Self::Raw), + "CODEC_GZIP" => Some(Self::Gzip), + "CODEC_LZOP" => Some(Self::Lzop), + "CODEC_ZSTD" => Some(Self::Zstd), + "CODEC_CUSTOM" => Some(Self::Custom), + _ => None, + } + } +} +#[derive(serde::Serialize, serde::Deserialize)] +#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash, PartialOrd, Ord, ::prost::Enumeration)] +#[repr(i32)] +pub enum AutoPartitioningStrategy { + /// The auto partitioning algorithm is not specified. The default value will be used. + Unspecified = 0, + /// The auto partitioning is disabled. + Disabled = 1, + /// The auto partitioning algorithm will increase partitions count depending on the load characteristics. + /// The auto partitioning algorithm will never decrease the number of partitions. + ScaleUp = 2, + /// The auto partitioning algorithm will both increase and decrease partitions count depending on the load characteristics. + ScaleUpAndDown = 3, + /// The auto partitioning is paused. + Paused = 4, +} +impl AutoPartitioningStrategy { + /// 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 { + Self::Unspecified => "AUTO_PARTITIONING_STRATEGY_UNSPECIFIED", + Self::Disabled => "AUTO_PARTITIONING_STRATEGY_DISABLED", + Self::ScaleUp => "AUTO_PARTITIONING_STRATEGY_SCALE_UP", + Self::ScaleUpAndDown => "AUTO_PARTITIONING_STRATEGY_SCALE_UP_AND_DOWN", + Self::Paused => "AUTO_PARTITIONING_STRATEGY_PAUSED", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "AUTO_PARTITIONING_STRATEGY_UNSPECIFIED" => Some(Self::Unspecified), + "AUTO_PARTITIONING_STRATEGY_DISABLED" => Some(Self::Disabled), + "AUTO_PARTITIONING_STRATEGY_SCALE_UP" => Some(Self::ScaleUp), + "AUTO_PARTITIONING_STRATEGY_SCALE_UP_AND_DOWN" => Some(Self::ScaleUpAndDown), + "AUTO_PARTITIONING_STRATEGY_PAUSED" => Some(Self::Paused), + _ => None, } } } @@ -1652,9 +1879,18 @@ impl MeteringMode { /// (if the ProtoBuf definition does not change) and safe for programmatic use. pub fn as_str_name(&self) -> &'static str { match self { - MeteringMode::Unspecified => "METERING_MODE_UNSPECIFIED", - MeteringMode::ReservedCapacity => "METERING_MODE_RESERVED_CAPACITY", - MeteringMode::RequestUnits => "METERING_MODE_REQUEST_UNITS", + Self::Unspecified => "METERING_MODE_UNSPECIFIED", + Self::ReservedCapacity => "METERING_MODE_RESERVED_CAPACITY", + Self::RequestUnits => "METERING_MODE_REQUEST_UNITS", + } + } + /// Creates an enum from field names used in the ProtoBuf definition. + pub fn from_str_name(value: &str) -> ::core::option::Option { + match value { + "METERING_MODE_UNSPECIFIED" => Some(Self::Unspecified), + "METERING_MODE_RESERVED_CAPACITY" => Some(Self::ReservedCapacity), + "METERING_MODE_REQUEST_UNITS" => Some(Self::RequestUnits), + _ => None, } } } \ No newline at end of file diff --git a/ydb-grpc/src/generated/ydb.topic.v1.rs b/ydb-grpc/src/generated/ydb.topic.v1.rs index ebfa6805..2d42fa48 100644 --- a/ydb-grpc/src/generated/ydb.topic.v1.rs +++ b/ydb-grpc/src/generated/ydb.topic.v1.rs @@ -1,6 +1,13 @@ +// This file is @generated by prost-build. /// Generated client implementations. pub mod topic_service_client { - #![allow(unused_variables, dead_code, missing_docs, clippy::let_unit_value)] + #![allow( + unused_variables, + dead_code, + missing_docs, + clippy::wildcard_imports, + clippy::let_unit_value, + )] use tonic::codegen::*; use tonic::codegen::http::Uri; #[derive(Debug, Clone)] @@ -11,7 +18,7 @@ pub mod topic_service_client { /// Attempt to create a new client by connecting to a given endpoint. pub async fn connect(dst: D) -> Result where - D: std::convert::TryInto, + D: TryInto, D::Error: Into, { let conn = tonic::transport::Endpoint::new(dst)?.connect().await?; @@ -20,10 +27,10 @@ pub mod topic_service_client { } impl TopicServiceClient where - T: tonic::client::GrpcService, + T: tonic::client::GrpcService, T::Error: Into, - T::ResponseBody: Body + Send + 'static, - ::Error: Into + Send, + T::ResponseBody: Body + std::marker::Send + 'static, + ::Error: Into + std::marker::Send, { pub fn new(inner: T) -> Self { let inner = tonic::client::Grpc::new(inner); @@ -41,14 +48,14 @@ pub mod topic_service_client { F: tonic::service::Interceptor, T::ResponseBody: Default, T: tonic::codegen::Service< - http::Request, + http::Request, Response = http::Response< - >::ResponseBody, + >::ResponseBody, >, >, , - >>::Error: Into + Send + Sync, + http::Request, + >>::Error: Into + std::marker::Send + std::marker::Sync, { TopicServiceClient::new(InterceptedService::new(inner, interceptor)) } @@ -66,6 +73,20 @@ pub mod topic_service_client { self.inner = self.inner.accept_compressed(encoding); self } + /// Limits the maximum size of a decoded message. + /// Default: `4MB` + #[must_use] + pub fn max_decoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_decoding_message_size(limit); + self + } + /// Limits the maximum size of an encoded message. + /// Default: `usize::MAX` + #[must_use] + pub fn max_encoding_message_size(mut self, limit: usize) -> Self { + self.inner = self.inner.max_encoding_message_size(limit); + self + } /// Create Write Session /// Pipeline example: /// client server @@ -90,20 +111,17 @@ pub mod topic_service_client { request: impl tonic::IntoStreamingRequest< Message = super::super::stream_write_message::FromClient, >, - ) -> Result< - tonic::Response< - tonic::codec::Streaming< - super::super::stream_write_message::FromServer, - >, - >, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response< + tonic::codec::Streaming, + >, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -111,7 +129,10 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/StreamWrite", ); - self.inner.streaming(request.into_streaming_request(), path, codec).await + let mut req = request.into_streaming_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Topic.V1.TopicService", "StreamWrite")); + self.inner.streaming(req, path, codec).await } /// Create Read Session /// Pipeline: @@ -151,20 +172,17 @@ pub mod topic_service_client { request: impl tonic::IntoStreamingRequest< Message = super::super::stream_read_message::FromClient, >, - ) -> Result< - tonic::Response< - tonic::codec::Streaming< - super::super::stream_read_message::FromServer, - >, - >, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response< + tonic::codec::Streaming, + >, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -172,19 +190,24 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/StreamRead", ); - self.inner.streaming(request.into_streaming_request(), path, codec).await + let mut req = request.into_streaming_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Topic.V1.TopicService", "StreamRead")); + self.inner.streaming(req, path, codec).await } /// Single commit offset request. pub async fn commit_offset( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -192,7 +215,10 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/CommitOffset", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Topic.V1.TopicService", "CommitOffset")); + self.inner.unary(req, path, codec).await } /// Add information about offset ranges to the transaction. pub async fn update_offsets_in_transaction( @@ -200,16 +226,15 @@ pub mod topic_service_client { request: impl tonic::IntoRequest< super::super::UpdateOffsetsInTransactionRequest, >, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -217,19 +242,29 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/UpdateOffsetsInTransaction", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new( + "Ydb.Topic.V1.TopicService", + "UpdateOffsetsInTransaction", + ), + ); + self.inner.unary(req, path, codec).await } /// Create topic command. pub async fn create_topic( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -237,22 +272,24 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/CreateTopic", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Topic.V1.TopicService", "CreateTopic")); + self.inner.unary(req, path, codec).await } /// Describe topic command. pub async fn describe_topic( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -260,22 +297,24 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/DescribeTopic", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Topic.V1.TopicService", "DescribeTopic")); + self.inner.unary(req, path, codec).await } /// Describe topic's consumer command. pub async fn describe_consumer( &mut self, request: impl tonic::IntoRequest, - ) -> Result< - tonic::Response, - tonic::Status, - > { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -283,19 +322,26 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/DescribeConsumer", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert( + GrpcMethod::new("Ydb.Topic.V1.TopicService", "DescribeConsumer"), + ); + self.inner.unary(req, path, codec).await } /// Alter topic command. pub async fn alter_topic( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -303,19 +349,24 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/AlterTopic", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Topic.V1.TopicService", "AlterTopic")); + self.inner.unary(req, path, codec).await } /// Drop topic command. pub async fn drop_topic( &mut self, request: impl tonic::IntoRequest, - ) -> Result, tonic::Status> { + ) -> std::result::Result< + tonic::Response, + tonic::Status, + > { self.inner .ready() .await .map_err(|e| { - tonic::Status::new( - tonic::Code::Unknown, + tonic::Status::unknown( format!("Service was not ready: {}", e.into()), ) })?; @@ -323,7 +374,10 @@ pub mod topic_service_client { let path = http::uri::PathAndQuery::from_static( "/Ydb.Topic.V1.TopicService/DropTopic", ); - self.inner.unary(request.into_request(), path, codec).await + let mut req = request.into_request(); + req.extensions_mut() + .insert(GrpcMethod::new("Ydb.Topic.V1.TopicService", "DropTopic")); + self.inner.unary(req, path, codec).await } } } \ No newline at end of file diff --git a/ydb-slo-tests/Cargo.toml b/ydb-slo-tests/Cargo.toml index 93f4b813..0b2d62db 100644 --- a/ydb-slo-tests/Cargo.toml +++ b/ydb-slo-tests/Cargo.toml @@ -7,18 +7,18 @@ edition = "2021" license = "Apache-2.0" description = "Crate contains SLO-tests for YDB" repository = "https://github.com/ydb-platform/ydb-rs-sdk/tree/master/ydb-slo-tests" -rust-version = "1.68.0" +rust-version = "1.81.0" [dependencies] -base64 = { version = "0.22.1" } -rand = { version = "0.8.5" } +async-trait = "0.1" +base64 = { version = "0.22" } clap = { version = "=4.2.7", features = ["derive"] } -rand_core = { version = "0.6.4" } -ratelimit = { version = "0.10.0" } +rand = { version = "0.9", features = ["alloc"] } # same as in tower dependency +rand_core = { version = "0.6" } +ratelimit = { version = "0.10" } tokio = { version = "=1.38.1" } tokio-util = { version = "=0.7.11", features = ["rt"] } -ydb = { version = "0.9.7", path="../ydb"} -async-trait = "0.1" +ydb = { version = "0.9.7", path = "../ydb" } [[example]] name = "native" diff --git a/ydb-slo-tests/src/generator.rs b/ydb-slo-tests/src/generator.rs index 36653dc0..81eb2556 100644 --- a/ydb-slo-tests/src/generator.rs +++ b/ydb-slo-tests/src/generator.rs @@ -1,8 +1,7 @@ use crate::row::{RowID, TestRow}; use base64::{engine::general_purpose::STANDARD, Engine as _}; -use rand::prelude::StdRng; -use rand::Rng; -use rand_core::{OsRng, RngCore, SeedableRng}; +use rand::{rng, Rng}; +use rand_core::{OsRng, RngCore}; use std::sync::{Arc, Mutex}; use std::time::SystemTime; @@ -12,14 +11,12 @@ const MAX_LENGTH: usize = 40; #[derive(Clone, Debug)] pub struct Generator { current_id: Arc>, - rng: StdRng, } impl Generator { pub fn new(id: RowID) -> Self { Self { current_id: Arc::new(Mutex::new(id)), - rng: SeedableRng::from_entropy(), } } @@ -30,7 +27,7 @@ impl Generator { *id_guard }; - let payload_double = self.rng.gen::(); + let payload_double = rng().random::(); let payload_timestamp = SystemTime::now(); let payload_str = self.gen_payload_string(); @@ -38,7 +35,7 @@ impl Generator { } fn gen_payload_string(&mut self) -> String { - let length = MIN_LENGTH + self.rng.gen_range(0..=(MAX_LENGTH - MIN_LENGTH)); + let length = MIN_LENGTH + rng().random_range(0..=(MAX_LENGTH - MIN_LENGTH)); let mut buffer = vec![0u8; length]; OsRng.fill_bytes(&mut buffer); diff --git a/ydb-slo-tests/src/workers.rs b/ydb-slo-tests/src/workers.rs index 7a388376..c556be10 100644 --- a/ydb-slo-tests/src/workers.rs +++ b/ydb-slo-tests/src/workers.rs @@ -2,7 +2,7 @@ use crate::args::RunArgs; use crate::generator::Generator; use crate::row::{RowID, TestRow}; use async_trait::async_trait; -use rand::Rng; +use rand::{rng, Rng}; use ratelimit::Ratelimiter; use std::sync::Arc; use std::time::Duration; @@ -37,7 +37,7 @@ impl Workers { continue; } - let row_id = rand::thread_rng().gen_range(0..self.config.initial_data_count); + let row_id = rng().random_range(0..self.config.initial_data_count); let read_result = timeout( Duration::from_millis(self.config.read_timeout), diff --git a/ydb/Cargo.toml b/ydb/Cargo.toml index b51c7705..096c92ef 100644 --- a/ydb/Cargo.toml +++ b/ydb/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" license = "Apache-2.0" description = "Crate contains generated low-level grpc code from YDB API protobuf, used as base for ydb crate" repository = "https://github.com/ydb-platform/ydb-rs-sdk/tree/master/ydb" -rust-version = "1.68.0" +rust-version = "1.81.0" [features] force-exhaustive-all = [ @@ -22,40 +22,40 @@ chrono = { version = "0.4", default-features = false, features = [ ] } decimal-rs = { version = "0.1", features = ["serde"] } derivative = "2" -derive_builder = "0.12.0" +derive_builder = "0.20" futures-util = "0.3" -http = "0.2" -itertools = "0.10" -jsonwebtoken = "7.2.0" +http = "1" +itertools = "0.14" +jsonwebtoken = "9" +mockall = "0.13" num = "0.4" -mockall = "0.10" once_cell = "1.8" -prost = "0.11.2" -prost-types = "0.11.2" -pbjson-types = "0.5.1" -rand = "0.8" -reqwest = { version = "0.11", features = [ +pbjson-types = "0.7" +prost = "0.13" +prost-types = "0.13" +rand = { version = "0.9", features = ["alloc"] } +reqwest = { version = "0.12", default-features = false, features = [ "blocking", "json", "rustls-tls", -], default-features = false } -secrecy = "0.4.1" -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" -strum = { version = "0.21", features = ["derive"] } -tokio = { version = "1.22", features = ["full"] } +] } +secrecy = "0.10" +serde = { version = "1", features = ["derive"] } +serde_json = "1" +strum = { version = "0.27", features = ["derive"] } +tokio = { version = "1", features = ["full"] } tokio-stream = "0.1" -tokio-util = "0.7.8" -tracing = "0.1" -tracing-test = "0.2.1" +tokio-util = "0.7" +tonic = { version = "0.13", features = ["tls-native-roots"] } +tower = "0.5" +tracing = { version = "0.1", features = ["log"] } tracing-subscriber = "0.3" -tonic = { version = "0.8.1", features = ["tls"] } -tower = "0.4" -url = "2.2" +tracing-test = "0.2" +url = "2" uuid = { version = "1", features = ["v4"] } -ydb-grpc = { version = "0.1.0", path="../ydb-grpc"} +ydb-grpc = { version = "0.1", path = "../ydb-grpc" } [dev-dependencies] async_once = "0.2" -lazy_static = "1.4" -ntest = "0.7" +lazy_static = "1" +ntest = "0.9" diff --git a/ydb/src/client_coordination/session/coordination_session.rs b/ydb/src/client_coordination/session/coordination_session.rs index 7f058b2e..ca5d45b2 100644 --- a/ydb/src/client_coordination/session/coordination_session.rs +++ b/ydb/src/client_coordination/session/coordination_session.rs @@ -1,10 +1,7 @@ use std::sync::Arc; -use rand::RngCore; -use tokio::{ - sync::mpsc::{self, UnboundedSender}, - task::JoinHandle, -}; +use rand::{rng, RngCore}; +use tokio::{sync::mpsc, task::JoinHandle}; use tokio_util::sync::CancellationToken; use tracing::trace; use ydb_grpc::ydb_proto::coordination::{ @@ -77,7 +74,7 @@ impl CoordinationSession { .await?; let mut protection_key = vec![0; 16]; - rand::thread_rng().fill_bytes(&mut protection_key); + rng().fill_bytes(&mut protection_key); let session_start_request = SessionStart { path: path.clone(), @@ -186,8 +183,7 @@ impl CoordinationSession { let options = DescribeOptionsBuilder::default() .with_owners(true) .with_waiters(true) - .build() - .unwrap(); + .build()?; self.describe_semaphore_with_params(name, options).await } @@ -290,7 +286,7 @@ impl CoordinationSession { async fn receive_messages_loop_iteration( server_messages_receiver: &mut AsyncGrpcStreamWrapper, - raw_sender: &UnboundedSender, + raw_sender: &mpsc::UnboundedSender, method_controllers: &MethodControllers, ) -> YdbResult<()> { let response = server_messages_receiver @@ -358,7 +354,14 @@ impl CoordinationSession { .get_response(semaphore_released) .await?; } - _ => todo!(), + RawSessionResponse::DescribeSemaphoreChanged(_) => { + // TODO: handle semaphore change notifications + // This could be used to notify clients about semaphore state changes + } + RawSessionResponse::SessionStopped(_) => { + // Session has been stopped by the server + return Err(YdbError::Custom("Session stopped by server".to_string())); + } }, Err(some_err) => { return Err(YdbError::from(some_err)); diff --git a/ydb/src/client_table_test_integration.rs b/ydb/src/client_table_test_integration.rs index 826f7759..6bd07424 100644 --- a/ydb/src/client_table_test_integration.rs +++ b/ydb/src/client_table_test_integration.rs @@ -1,11 +1,13 @@ +use rand::distr::Alphanumeric; use std::collections::HashMap; use std::iter::FromIterator; use std::sync::Arc; use std::time; use std::time::UNIX_EPOCH; -use tokio::sync::Mutex as AsyncMutex; -use rand::distributions::{Alphanumeric, DistString}; +use rand::rng; +use rand::Rng; +use tokio::sync::Mutex as AsyncMutex; use tonic::{Code, Status}; use tracing::trace; use tracing_test::traced_test; @@ -232,7 +234,11 @@ async fn copy_table() -> YdbResult<()> { let client = create_client().await?; let table_client = client.table_client(); - let rand_str = Alphanumeric.sample_string(&mut rand::thread_rng(), 16); + let rand_str: String = rng() + .sample_iter(Alphanumeric) + .take(16) + .map(char::from) + .collect(); let table_name = format!("temp_table_{rand_str}"); let copy_table_name = format!("copy_{table_name}"); @@ -308,7 +314,11 @@ async fn copy_tables() -> YdbResult<()> { let client = create_client().await?; let table_client = client.table_client(); - let rand_str = Alphanumeric.sample_string(&mut rand::thread_rng(), 16); + let rand_str: String = rng() + .sample_iter(Alphanumeric) + .take(16) + .map(char::from) + .collect(); let table_name = format!("temp_table_{rand_str}"); let copy_table_name = format!("copy_{table_name}"); diff --git a/ydb/src/client_topic/client.rs b/ydb/src/client_topic/client.rs index d783f3fb..3c215058 100644 --- a/ydb/src/client_topic/client.rs +++ b/ydb/src/client_topic/client.rs @@ -23,11 +23,12 @@ use std::time::Duration; #[derive(Builder)] #[builder(build_fn(error = "errors::YdbError"))] pub struct CreateTopicOptions { - // Use CreateTopicOptionsBuilder #[builder(default)] pub min_active_partitions: i64, #[builder(default)] - pub partition_count_limit: i64, + pub max_active_partitions: i64, + #[builder(setter(strip_option), default)] + pub auto_partitioning_settings: Option, #[builder(setter(strip_option), default)] pub retention_period: Option, #[builder(default)] @@ -49,40 +50,31 @@ pub struct CreateTopicOptions { #[derive(Builder)] #[builder(build_fn(error = "errors::YdbError"))] pub struct AlterTopicOptions { - // Use AlterTopicOptionsBuilder #[builder(setter(strip_option), default)] pub set_min_active_partitions: Option, - #[builder(setter(strip_option), default)] - pub set_partition_count_limit: Option, - + pub set_max_active_partitions: Option, + #[builder(setter(strip_option), default)] + pub alter_auto_partitioning_settings: + Option, #[builder(setter(strip_option), default)] pub set_retention_period: Option, - #[builder(setter(strip_option), default)] pub set_retention_storage_mb: Option, - #[builder(setter(strip_option), default)] pub set_supported_codecs: Option>, - #[builder(setter(strip_option), default)] pub set_partition_write_speed_bytes_per_second: Option, - #[builder(setter(strip_option), default)] pub set_partition_write_burst_bytes: Option, - #[builder(default)] pub alter_attributes: HashMap, - #[builder(default)] pub add_consumers: Vec, - #[builder(default)] pub drop_consumers: Vec, - #[builder(default)] pub alter_consumers: Vec, - #[builder(setter(strip_option), default)] pub set_metering_mode: Option, } @@ -225,8 +217,7 @@ impl TopicClient { TopicWriter::new( TopicWriterOptionsBuilder::default() .topic_path(path) - .build() - .unwrap(), + .build()?, self.connection_manager.clone(), ) .await diff --git a/ydb/src/client_topic/list_types.rs b/ydb/src/client_topic/list_types.rs index 511275f7..d7560f29 100644 --- a/ydb/src/client_topic/list_types.rs +++ b/ydb/src/client_topic/list_types.rs @@ -160,14 +160,16 @@ impl From for RawAlterConsumer { #[derive(Debug, Clone, Default)] pub struct PartitioningSettings { pub min_active_partitions: i64, - pub partition_count_limit: i64, + pub max_active_partitions: i64, + pub auto_partitioning_settings: Option, } impl From for PartitioningSettings { fn from(value: RawPartitioningSettings) -> Self { Self { min_active_partitions: value.min_active_partitions, - partition_count_limit: value.partition_count_limit, + max_active_partitions: value.max_active_partitions, + auto_partitioning_settings: value.auto_partitioning_settings, } } } @@ -176,7 +178,8 @@ impl From for RawPartitioningSettings { fn from(value: PartitioningSettings) -> Self { Self { min_active_partitions: value.min_active_partitions, - partition_count_limit: value.partition_count_limit, + max_active_partitions: value.max_active_partitions, + auto_partitioning_settings: value.auto_partitioning_settings, } } } diff --git a/ydb/src/client_topic/topicwriter/message_write_status.rs b/ydb/src/client_topic/topicwriter/message_write_status.rs index c05b9e73..6a23bbe1 100644 --- a/ydb/src/client_topic/topicwriter/message_write_status.rs +++ b/ydb/src/client_topic/topicwriter/message_write_status.rs @@ -32,10 +32,10 @@ impl From for MessageSkipReason { fn from(value: i32) -> Self { use write_response::write_ack::skipped::Reason; - match Reason::from_i32(value) { - Some(Reason::Unspecified) => MessageSkipReason::Unspecified, - Some(Reason::AlreadyWritten) => MessageSkipReason::AlreadyWritten, - None => MessageSkipReason::UnknownReasonCode(value), + match Reason::try_from(value) { + Ok(Reason::Unspecified) => MessageSkipReason::Unspecified, + Ok(Reason::AlreadyWritten) => MessageSkipReason::AlreadyWritten, + Err(_) => MessageSkipReason::UnknownReasonCode(value), } } } diff --git a/ydb/src/credentials.rs b/ydb/src/credentials.rs index 452d1762..a7278627 100644 --- a/ydb/src/credentials.rs +++ b/ydb/src/credentials.rs @@ -74,7 +74,7 @@ impl MetadataUrlCredentials { /// # fn main()->YdbResult<()>{ /// use ydb::MetadataUrlCredentials; /// let cred = MetadataUrlCredentials::from_url("http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token")?; - /// # return Ok(()); + /// # Ok(()) /// # } /// ``` pub fn from_url>(url: T) -> YdbResult { @@ -175,7 +175,7 @@ fn get_credentials_from_env() -> YdbResult> { /// # fn main()->YdbResult<()>{ /// let builder = ClientBuilder::new_from_connection_string("grpc://localhost:2136?database=/local")?; /// let client = builder.with_credentials(AccessTokenCredentials::from("asd")).client()?; -/// # return Ok(()); +/// # Ok(()) /// # } /// ``` #[derive(Debug, Clone)] @@ -275,8 +275,8 @@ impl Credentials for CommandLineCredentials { let desc: String = if token.len() > 20 { format!( "{}..{}", - &token.as_str()[0..3], - &token.as_str()[(token.len() - 3)..token.len()] + &token[0..3], + &token[(token.len() - 3)..token.len()] ) } else { "short_token".to_string() @@ -334,7 +334,7 @@ impl ServiceAccountCredentials { ) -> Self { Self { audience_url: Self::IAM_TOKEN_DEFAULT.to_string(), - private_key: SecretString::new(private_key.into()), + private_key: SecretString::from(private_key.into()), service_account_id: service_account_id.into(), key_id: key_id.into(), } @@ -346,7 +346,7 @@ impl ServiceAccountCredentials { } pub fn from_env() -> YdbResult { - let path = std::env::var(YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS)?; + let path = env::var(YDB_SERVICE_ACCOUNT_KEY_FILE_CREDENTIALS)?; ServiceAccountCredentials::from_file(path) } @@ -371,7 +371,7 @@ impl ServiceAccountCredentials { audience_url: Self::IAM_TOKEN_DEFAULT.to_string(), key_id: key.id, service_account_id: key.service_account_id, - private_key: SecretString::new(key.private_key), + private_key: SecretString::from(key.private_key), }) } @@ -416,7 +416,7 @@ impl ServiceAccountCredentials { Ok(token) } - fn get_renew_time_for_lifetime(time: chrono::DateTime) -> Instant { + fn get_renew_time_for_lifetime(time: DateTime) -> Instant { let duration = time - chrono::Utc::now(); let seconds = (0.1 * duration.num_seconds() as f64) as u64; trace!("renew in: {}", seconds); @@ -485,7 +485,7 @@ impl GCEMetadata { /// # fn main()->YdbResult<()>{ /// use ydb::GCEMetadata; /// let cred = GCEMetadata::from_url("http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/default/token")?; - /// # return Ok(()); + /// # Ok(()) /// # } /// ``` pub fn from_url>(url: T) -> YdbResult { @@ -547,14 +547,13 @@ impl StaticCredentials { let mut auth_client = empty_connection_manager .get_auth_service(RawAuthClient::new) - .await - .unwrap(); + .await?; // TODO: add configurable authorization request timeout let raw_request = RawLoginRequest { operation_params: TimeoutSettings::default().operation_params(), user: self.username.clone(), - password: self.password.expose_secret().clone(), + password: self.password.expose_secret().to_string(), }; let raw_response = auth_client.login(raw_request).await?; @@ -564,7 +563,7 @@ impl StaticCredentials { pub fn new(username: String, password: String, endpoint: Uri, database: String) -> Self { Self { username, - password: SecretString::new(password), + password: SecretString::from(password), database, endpoint, cert_path: None, @@ -580,7 +579,7 @@ impl StaticCredentials { ) -> Self { Self { username, - password: SecretString::new(password), + password: SecretString::from(password), database, endpoint, cert_path: Some(cert_path), diff --git a/ydb/src/errors.rs b/ydb/src/errors.rs index b01e1754..fcf5d37c 100644 --- a/ydb/src/errors.rs +++ b/ydb/src/errors.rs @@ -165,8 +165,11 @@ impl YdbStatusError { /// # } /// ``` pub fn operation_status(&self) -> YdbResult { - StatusCode::from_i32(self.operation_status).ok_or_else(|| { - YdbError::InternalError(format!("unknown status code: {}", self.operation_status)) + StatusCode::try_from(self.operation_status).map_err(|e| { + YdbError::InternalError(format!( + "unknown status code: {} ({e})", + self.operation_status + )) }) } } @@ -262,7 +265,7 @@ impl YdbError { } } Self::YdbStatusError(ydb_err) => { - if let Some(status) = StatusCode::from_i32(ydb_err.operation_status) { + if let Ok(status) = StatusCode::try_from(ydb_err.operation_status) { match status { StatusCode::Aborted | StatusCode::Unavailable diff --git a/ydb/src/grpc_wrapper/auth.rs b/ydb/src/grpc_wrapper/auth.rs index 7dd4f036..9ed6ba0f 100644 --- a/ydb/src/grpc_wrapper/auth.rs +++ b/ydb/src/grpc_wrapper/auth.rs @@ -37,7 +37,7 @@ impl GrpcInterceptor for AuthGrpcInterceptor { ) -> InterceptorResult { let token_secret = self.token_cache.token(); let token_string = token_secret.expose_secret(); - let token = HeaderValue::from_str(token_string.as_str()).map_err(|err| { + let token = HeaderValue::from_str(token_string).map_err(|err| { InterceptorError::custom(format!( "received bad token (len={}): {}", token_string.len(), diff --git a/ydb/src/grpc_wrapper/raw_coordination_service/config.rs b/ydb/src/grpc_wrapper/raw_coordination_service/config.rs index 7746aa5e..1d234890 100644 --- a/ydb/src/grpc_wrapper/raw_coordination_service/config.rs +++ b/ydb/src/grpc_wrapper/raw_coordination_service/config.rs @@ -27,9 +27,9 @@ impl TryFrom for RawConsistencyMode { type Error = RawError; fn try_from(value: i32) -> RawResult { - let value = ConsistencyMode::from_i32(value).ok_or(RawError::ProtobufDecodeError( - format!("invalid consistency mode: {value}"), - ))?; + let value = ConsistencyMode::try_from(value).map_err(|_| { + RawError::ProtobufDecodeError(format!("invalid consistency mode: {value}")) + })?; match value { ConsistencyMode::Unset => Ok(RawConsistencyMode::Unset), ConsistencyMode::Strict => Ok(RawConsistencyMode::Strict), @@ -60,9 +60,9 @@ impl TryFrom for RawRateLimiterCountersMode { type Error = RawError; fn try_from(value: i32) -> RawResult { - let value = RateLimiterCountersMode::from_i32(value).ok_or( - RawError::ProtobufDecodeError(format!("invalid rate limiter counters mode: {value}")), - )?; + let value = RateLimiterCountersMode::try_from(value).map_err(|_| { + RawError::ProtobufDecodeError(format!("invalid rate limiter counters mode: {value}")) + })?; match value { RateLimiterCountersMode::Unset => Ok(RawRateLimiterCountersMode::Unset), RateLimiterCountersMode::Aggregated => Ok(RawRateLimiterCountersMode::Aggregated), diff --git a/ydb/src/grpc_wrapper/raw_scheme_client/list_directory_types.rs b/ydb/src/grpc_wrapper/raw_scheme_client/list_directory_types.rs index f7f66750..d9161771 100644 --- a/ydb/src/grpc_wrapper/raw_scheme_client/list_directory_types.rs +++ b/ydb/src/grpc_wrapper/raw_scheme_client/list_directory_types.rs @@ -19,8 +19,8 @@ impl From for ydb_grpc::ydb_proto::scheme::ListDirector #[derive(Debug)] pub(crate) struct RawListDirectoryResult { - pub(crate) _self_item: crate::SchemeEntry, - pub(crate) children: Vec, + pub(crate) _self_item: SchemeEntry, + pub(crate) children: Vec, } impl TryFrom for RawListDirectoryResult { @@ -69,24 +69,24 @@ pub(crate) fn from_grpc_to_scheme_entry(value: ydb_grpc::ydb_proto::scheme::Entr fn from_grpc_code_to_scheme_entry_type(value: i32) -> SchemeEntryType { use ydb_grpc::ydb_proto::scheme::entry::Type as grpcT; - match grpcT::from_i32(value) { - Some(grpcT::Unspecified) => SchemeEntryType::Unspecified, - Some(grpcT::Directory) => SchemeEntryType::Directory, - Some(grpcT::Table) => SchemeEntryType::Table, - Some(grpcT::ColumnStore) => SchemeEntryType::ColumnStrore, - Some(grpcT::ColumnTable) => SchemeEntryType::ColumnTable, - Some(grpcT::PersQueueGroup) => SchemeEntryType::PersQueueGroup, - Some(grpcT::Database) => SchemeEntryType::Database, - Some(grpcT::RtmrVolume) => SchemeEntryType::RtmrVolume, - Some(grpcT::BlockStoreVolume) => SchemeEntryType::BlockStoreVolume, - Some(grpcT::CoordinationNode) => SchemeEntryType::CoordinationNode, - Some(grpcT::Sequence) => SchemeEntryType::Sequence, - Some(grpcT::Replication) => SchemeEntryType::Replication, - Some(grpcT::Topic) => SchemeEntryType::Topic, - Some(grpcT::ExternalDataSource) => SchemeEntryType::ExternalDataSource, - Some(grpcT::ExternalTable) => SchemeEntryType::ExternalTable, - Some(grpcT::View) => SchemeEntryType::View, - None => SchemeEntryType::Unknown(value), + match grpcT::try_from(value) { + Ok(grpcT::Unspecified) => SchemeEntryType::Unspecified, + Ok(grpcT::Directory) => SchemeEntryType::Directory, + Ok(grpcT::Table) => SchemeEntryType::Table, + Ok(grpcT::ColumnStore) => SchemeEntryType::ColumnStrore, + Ok(grpcT::ColumnTable) => SchemeEntryType::ColumnTable, + Ok(grpcT::PersQueueGroup) => SchemeEntryType::PersQueueGroup, + Ok(grpcT::Database) => SchemeEntryType::Database, + Ok(grpcT::RtmrVolume) => SchemeEntryType::RtmrVolume, + Ok(grpcT::BlockStoreVolume) => SchemeEntryType::BlockStoreVolume, + Ok(grpcT::CoordinationNode) => SchemeEntryType::CoordinationNode, + Ok(grpcT::Sequence) => SchemeEntryType::Sequence, + Ok(grpcT::Replication) => SchemeEntryType::Replication, + Ok(grpcT::Topic) => SchemeEntryType::Topic, + Ok(grpcT::ExternalDataSource) => SchemeEntryType::ExternalDataSource, + Ok(grpcT::ExternalTable) => SchemeEntryType::ExternalTable, + Ok(grpcT::View) => SchemeEntryType::View, + Err(_) => SchemeEntryType::Unknown(value), } } diff --git a/ydb/src/grpc_wrapper/raw_status.rs b/ydb/src/grpc_wrapper/raw_status.rs index 3e6daa7d..fe945445 100644 --- a/ydb/src/grpc_wrapper/raw_status.rs +++ b/ydb/src/grpc_wrapper/raw_status.rs @@ -25,7 +25,7 @@ pub(crate) enum RawStatusCode { impl From for RawStatusCode { fn from(value: i32) -> Self { - if let Some(status) = ydb_grpc::ydb_proto::status_ids::StatusCode::from_i32(value) { + if let Ok(status) = ydb_grpc::ydb_proto::status_ids::StatusCode::try_from(value) { match status { ydb_grpc::ydb_proto::status_ids::StatusCode::Unspecified => Self::Unspecified, ydb_grpc::ydb_proto::status_ids::StatusCode::Success => Self::Success, diff --git a/ydb/src/grpc_wrapper/raw_table_service/client.rs b/ydb/src/grpc_wrapper/raw_table_service/client.rs index 29947fbe..a7f25b91 100644 --- a/ydb/src/grpc_wrapper/raw_table_service/client.rs +++ b/ydb/src/grpc_wrapper/raw_table_service/client.rs @@ -45,7 +45,7 @@ impl RawTableClient { request_with_result!( self.service.commit_transaction, req => ydb_grpc::ydb_proto::table::CommitTransactionRequest, - ydb_grpc::ydb_proto::table::CommitTransactionResult => crate::grpc_wrapper::raw_table_service::commit_transaction::RawCommitTransactionResult + ydb_grpc::ydb_proto::table::CommitTransactionResult => RawCommitTransactionResult ); } @@ -133,11 +133,11 @@ impl From for SessionStatus { fn from(value: i32) -> Self { use ydb_grpc::ydb_proto::table::keep_alive_result; - match keep_alive_result::SessionStatus::from_i32(value) { - Some(keep_alive_result::SessionStatus::Ready) => SessionStatus::Ready, - Some(keep_alive_result::SessionStatus::Busy) => SessionStatus::Busy, - Some(keep_alive_result::SessionStatus::Unspecified) => SessionStatus::Unspecified, - None => SessionStatus::Unknown(value), + match keep_alive_result::SessionStatus::try_from(value) { + Ok(keep_alive_result::SessionStatus::Ready) => SessionStatus::Ready, + Ok(keep_alive_result::SessionStatus::Busy) => SessionStatus::Busy, + Ok(keep_alive_result::SessionStatus::Unspecified) => SessionStatus::Unspecified, + Err(_) => SessionStatus::Unknown(value), } } } diff --git a/ydb/src/grpc_wrapper/raw_table_service/value/type.rs b/ydb/src/grpc_wrapper/raw_table_service/value/type.rs index 84374a4b..72a4765f 100644 --- a/ydb/src/grpc_wrapper/raw_table_service/value/type.rs +++ b/ydb/src/grpc_wrapper/raw_table_service/value/type.rs @@ -91,8 +91,8 @@ pub(crate) struct TaggedType { impl RawType { fn try_from_primitive_type_id(int_type_id: i32) -> RawResult { - let type_id = PrimitiveTypeId::from_i32(int_type_id); - let type_id = if let Some(type_id) = type_id { + let type_id = PrimitiveTypeId::try_from(int_type_id); + let type_id = if let Ok(type_id) = type_id { type_id } else { return Err(RawError::decode_error(format!( @@ -116,9 +116,13 @@ impl RawType { PrimitiveTypeId::Float => RawType::Float, PrimitiveTypeId::Double => RawType::Double, PrimitiveTypeId::Date => RawType::Date, + PrimitiveTypeId::Date32 => RawType::Date, PrimitiveTypeId::Datetime => RawType::DateTime, + PrimitiveTypeId::Datetime64 => RawType::DateTime, PrimitiveTypeId::Timestamp => RawType::Timestamp, + PrimitiveTypeId::Timestamp64 => RawType::Timestamp, PrimitiveTypeId::Interval => RawType::Interval, + PrimitiveTypeId::Interval64 => RawType::Interval, PrimitiveTypeId::TzDate => RawType::TzDate, PrimitiveTypeId::TzDatetime => RawType::TzDatetime, PrimitiveTypeId::TzTimestamp => RawType::TzTimestamp, diff --git a/ydb/src/grpc_wrapper/raw_topic_service/alter_topic.rs b/ydb/src/grpc_wrapper/raw_topic_service/alter_topic.rs index 6119b07a..a3907328 100644 --- a/ydb/src/grpc_wrapper/raw_topic_service/alter_topic.rs +++ b/ydb/src/grpc_wrapper/raw_topic_service/alter_topic.rs @@ -34,11 +34,13 @@ impl RawAlterTopicRequest { options: AlterTopicOptions, ) -> Self { let alter_partitioning_settings = if options.set_min_active_partitions.is_some() - || options.set_partition_count_limit.is_some() + || options.set_max_active_partitions.is_some() + || options.alter_auto_partitioning_settings.is_some() { Some(RawAlterPartitioningSettings { set_min_active_partitions: options.set_min_active_partitions, - set_partition_count_limit: options.set_partition_count_limit, + set_max_active_partitions: options.set_max_active_partitions, + alter_auto_partitioning_settings: options.alter_auto_partitioning_settings, }) } else { None diff --git a/ydb/src/grpc_wrapper/raw_topic_service/common/metering_mode.rs b/ydb/src/grpc_wrapper/raw_topic_service/common/metering_mode.rs index 858e8f82..b6105ebe 100644 --- a/ydb/src/grpc_wrapper/raw_topic_service/common/metering_mode.rs +++ b/ydb/src/grpc_wrapper/raw_topic_service/common/metering_mode.rs @@ -13,9 +13,9 @@ impl TryFrom for RawMeteringMode { type Error = RawError; fn try_from(value: i32) -> RawResult { - let value = MeteringMode::from_i32(value).ok_or(RawError::ProtobufDecodeError(format!( - "invalid metering mode: {value}" - )))?; + let value = MeteringMode::try_from(value).map_err(|e| { + RawError::ProtobufDecodeError(format!("invalid metering mode: {value} ({e})")) + })?; match value { MeteringMode::Unspecified => Ok(RawMeteringMode::Unspecified), MeteringMode::ReservedCapacity => Ok(RawMeteringMode::ReservedCapacity), diff --git a/ydb/src/grpc_wrapper/raw_topic_service/common/partitioning_settings.rs b/ydb/src/grpc_wrapper/raw_topic_service/common/partitioning_settings.rs index 8d0d328b..4f333346 100644 --- a/ydb/src/grpc_wrapper/raw_topic_service/common/partitioning_settings.rs +++ b/ydb/src/grpc_wrapper/raw_topic_service/common/partitioning_settings.rs @@ -3,14 +3,16 @@ use ydb_grpc::ydb_proto::topic::{AlterPartitioningSettings, PartitioningSettings #[derive(Debug, serde::Serialize)] pub(crate) struct RawPartitioningSettings { pub min_active_partitions: i64, - pub partition_count_limit: i64, + pub max_active_partitions: i64, + pub auto_partitioning_settings: Option, } impl From for RawPartitioningSettings { fn from(value: PartitioningSettings) -> Self { Self { min_active_partitions: value.min_active_partitions, - partition_count_limit: value.partition_count_limit, + max_active_partitions: value.max_active_partitions, + auto_partitioning_settings: value.auto_partitioning_settings, } } } @@ -19,7 +21,10 @@ impl From for PartitioningSettings { fn from(value: RawPartitioningSettings) -> Self { Self { min_active_partitions: value.min_active_partitions, - partition_count_limit: value.partition_count_limit, + max_active_partitions: value.max_active_partitions, + auto_partitioning_settings: value.auto_partitioning_settings, + #[allow(deprecated)] + partition_count_limit: 0, // deprecated } } } @@ -27,14 +32,17 @@ impl From for PartitioningSettings { #[derive(Debug, serde::Serialize)] pub(crate) struct RawAlterPartitioningSettings { pub set_min_active_partitions: Option, - pub set_partition_count_limit: Option, + pub set_max_active_partitions: Option, + pub alter_auto_partitioning_settings: + Option, } impl From for RawAlterPartitioningSettings { fn from(value: AlterPartitioningSettings) -> Self { Self { set_min_active_partitions: value.set_min_active_partitions, - set_partition_count_limit: value.set_partition_count_limit, + set_max_active_partitions: value.set_max_active_partitions, + alter_auto_partitioning_settings: value.alter_auto_partitioning_settings, } } } @@ -43,7 +51,10 @@ impl From for AlterPartitioningSettings { fn from(value: RawAlterPartitioningSettings) -> Self { Self { set_min_active_partitions: value.set_min_active_partitions, - set_partition_count_limit: value.set_partition_count_limit, + set_max_active_partitions: value.set_max_active_partitions, + alter_auto_partitioning_settings: value.alter_auto_partitioning_settings, + #[allow(deprecated)] + set_partition_count_limit: None, // deprecated } } } diff --git a/ydb/src/grpc_wrapper/raw_topic_service/create_topic.rs b/ydb/src/grpc_wrapper/raw_topic_service/create_topic.rs index 345693c0..49cbd486 100644 --- a/ydb/src/grpc_wrapper/raw_topic_service/create_topic.rs +++ b/ydb/src/grpc_wrapper/raw_topic_service/create_topic.rs @@ -38,7 +38,8 @@ impl RawCreateTopicRequest { path, partitioning_settings: RawPartitioningSettings { min_active_partitions: options.min_active_partitions, - partition_count_limit: options.partition_count_limit, + max_active_partitions: options.max_active_partitions, + auto_partitioning_settings: options.auto_partitioning_settings, }, retention_period: options.retention_period.map(|x| x.into()), retention_storage_mb: options.retention_storage_mb, diff --git a/ydb/src/grpc_wrapper/raw_topic_service/describe_consumer.rs b/ydb/src/grpc_wrapper/raw_topic_service/describe_consumer.rs index ff34fa5b..2e71d32c 100644 --- a/ydb/src/grpc_wrapper/raw_topic_service/describe_consumer.rs +++ b/ydb/src/grpc_wrapper/raw_topic_service/describe_consumer.rs @@ -66,7 +66,7 @@ impl TryFrom for RawDescribeConsumerResult { "consumer is absent in result".to_string(), ))?; - let consumer_stats = consumer.consumer_stats.clone().map(|stats| { + let consumer_stats = consumer.consumer_stats.map(|stats| { crate::grpc_wrapper::raw_topic_service::common::consumer::RawConsumerStats { min_partitions_last_read_time: stats .min_partitions_last_read_time diff --git a/ydb/src/grpc_wrapper/raw_topic_service/stream_read/messages.rs b/ydb/src/grpc_wrapper/raw_topic_service/stream_read/messages.rs index 05cccc1b..55f3fa86 100644 --- a/ydb/src/grpc_wrapper/raw_topic_service/stream_read/messages.rs +++ b/ydb/src/grpc_wrapper/raw_topic_service/stream_read/messages.rs @@ -133,6 +133,7 @@ impl From for stream_read_message::InitRequest { consumer: value.consumer, reader_name: value.reader_name, direct_read: false, + auto_partitioning_support: false, } } } diff --git a/ydb/src/grpc_wrapper/runtime_interceptors.rs b/ydb/src/grpc_wrapper/runtime_interceptors.rs index 3f60b111..36b09ca3 100644 --- a/ydb/src/grpc_wrapper/runtime_interceptors.rs +++ b/ydb/src/grpc_wrapper/runtime_interceptors.rs @@ -8,7 +8,7 @@ use std::task::{Context, Poll}; use tonic::transport::Channel; pub(crate) type InterceptorResult = std::result::Result; -pub(crate) type InterceptorRequest = http::Request; +pub(crate) type InterceptorRequest = http::Request; #[derive(Clone)] pub(crate) struct InterceptedChannel { diff --git a/ydb/src/load_balancer/nearest_dc_balancer.rs b/ydb/src/load_balancer/nearest_dc_balancer.rs index a83aba32..cfae1bcc 100644 --- a/ydb/src/load_balancer/nearest_dc_balancer.rs +++ b/ydb/src/load_balancer/nearest_dc_balancer.rs @@ -6,7 +6,7 @@ use std::{ use http::Uri; use itertools::Itertools; -use rand::{seq::SliceRandom, thread_rng}; +use rand::{prelude::IndexedRandom, rng, seq::SliceRandom}; use std::sync::RwLock; use std::time::Duration; use tokio::{ @@ -146,11 +146,7 @@ impl NearestDCBalancer { match self.balancer_state.read() { // Fast lock Ok(state_guard) => { - if let Some(node) = state_guard - .borrow() - .preferred_endpoints - .choose(&mut thread_rng()) - { + if let Some(node) = state_guard.borrow().preferred_endpoints.choose(&mut rng()) { return YdbResult::Ok(node.uri.clone()); } } @@ -259,7 +255,7 @@ impl NearestDCBalancer { pub(super) fn get_random_endpoints<'a>( dc_endpoints: &'a mut Vec<&'a NodeInfo>, ) -> &'a mut Vec<&'a NodeInfo> { - dc_endpoints.shuffle(&mut thread_rng()); + dc_endpoints.shuffle(&mut rng()); dc_endpoints.truncate(NODES_PER_DC); dc_endpoints } diff --git a/ydb/src/load_balancer/random_balancer.rs b/ydb/src/load_balancer/random_balancer.rs index 0ff6b040..d3932ecb 100644 --- a/ydb/src/load_balancer/random_balancer.rs +++ b/ydb/src/load_balancer/random_balancer.rs @@ -1,6 +1,7 @@ use std::sync::Arc; use http::Uri; +use rand::{rng, Rng}; use crate::{ grpc_wrapper::raw_services::Service, waiter::WaiterImpl, DiscoveryState, Waiter, YdbError, @@ -33,7 +34,7 @@ impl LoadBalancer for RandomLoadBalancer { ))), Some(nodes) => { if !nodes.is_empty() { - let index = rand::random::() % nodes.len(); + let index = rng().random_range(0..nodes.len()); let node = &nodes[index % nodes.len()]; Ok(node.uri.clone()) } else { diff --git a/ydb/src/pub_traits.rs b/ydb/src/pub_traits.rs index 1fb8230a..bdb57967 100644 --- a/ydb/src/pub_traits.rs +++ b/ydb/src/pub_traits.rs @@ -15,7 +15,7 @@ pub struct TokenInfo { impl TokenInfo { pub(crate) fn token(token: String) -> Self { Self { - token: SecretString::new(token), + token: SecretString::from(token), next_renew: Instant::now().add(DEFAULT_TOKEN_RENEW_INTERVAL), } } diff --git a/ydb/src/session.rs b/ydb/src/session.rs index 6e65029e..de3143e5 100644 --- a/ydb/src/session.rs +++ b/ydb/src/session.rs @@ -71,7 +71,7 @@ impl Session { pub(crate) fn handle_error(&mut self, err: &YdbError) { if let YdbError::YdbStatusError(err) = err { use ydb_grpc::ydb_proto::status_ids::StatusCode; - if let Some(status) = StatusCode::from_i32(err.operation_status) { + if let Ok(status) = StatusCode::try_from(err.operation_status) { if status == StatusCode::BadSession || status == StatusCode::SessionExpired { self.can_pooled = false; } @@ -151,7 +151,7 @@ impl Session { }; debug!( "request: {}", - crate::trace_helpers::ensure_len_string(serde_json::to_string(&req)?) + ensure_len_string(serde_json::to_string(&req)?) ); let mut channel = self.get_channel().await?; let resp = channel.stream_execute_scan_query(req).await?; diff --git a/ydb/src/topics_test.rs b/ydb/src/topics_test.rs index 00741ed1..f46ea67c 100644 --- a/ydb/src/topics_test.rs +++ b/ydb/src/topics_test.rs @@ -137,7 +137,7 @@ async fn describe_topic_test() -> YdbResult<()> { assert_eq!(topic_description.consumers.len(), consumers.len()); // when `read_from` was not set, server returns zero timestamp - consumers[1].read_from = Some(SystemTime::UNIX_EPOCH); + consumers[1].read_from = Some(std::time::SystemTime::UNIX_EPOCH); for (expected, got) in consumers.iter().zip(topic_description.consumers.iter()) { assert_eq!(expected.name, got.name); @@ -266,7 +266,7 @@ async fn send_message_test() -> YdbResult<()> { break 'wait_topic_dropped; } info!("waiting previous topic dropped..."); - tokio::time::sleep(Duration::from_millis(100)).await; + tokio::time::sleep(std::time::Duration::from_millis(100)).await; } topic_client