diff --git a/.github/workflows/docker-push.yml b/.github/workflows/docker-push.yml deleted file mode 100644 index a54453d..0000000 --- a/.github/workflows/docker-push.yml +++ /dev/null @@ -1,42 +0,0 @@ -name: Docker Push - -on: - push: - branches: [ "master" ] - -jobs: - docker: - runs-on: ubuntu-latest - steps: - # - name: Checkout code - # uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - # - name: Login to Docker Hub - # uses: docker/login-action@v3 - # with: - # username: ${{ vars.DOCKERHUB_USERNAME }} - # password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Get short SHA - id: short_sha - run: echo "sha=$(echo ${GITHUB_SHA} | cut -c1-7)" >> $GITHUB_OUTPUT - - - name: Build and push - uses: docker/build-push-action@v6 - with: - push: true - # context: . - tags: ghcr.io/${{ github.repository_owner }}/doggy-watch:${{ steps.short_sha.outputs.sha }},ghcr.io/${{ github.repository_owner }}/doggy-watch:latest - cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/doggy-watch:buildcache - cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/doggy-watch:buildcache,mode=max - diff --git a/.gitignore b/.gitignore index d573a03..d5f21ec 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,3 @@ /act .env note.txt -docker-compose.yaml \ No newline at end of file diff --git a/Cargo.lock b/Cargo.lock index b02a08c..9ef75a2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -23,7 +23,7 @@ version = "0.7.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" dependencies = [ - "getrandom 0.2.15", + "getrandom", "once_cell", "version_check", ] @@ -105,12 +105,11 @@ dependencies = [ [[package]] name = "anstyle-wincon" -version = "3.0.7" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca3534e77181a9cc07539ad51f2141fe32f6c3ffd4df76db8ad92346b003ae4e" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "once_cell", "windows-sys 0.59.0", ] @@ -127,11 +126,11 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e" dependencies = [ "include_dir", - "itertools", + "itertools 0.10.5", "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -278,7 +277,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -289,13 +288,13 @@ checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.86" +version = "0.1.85" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "644dd749086bf3771a2fbc5f256fdb982d53f011c7d5d560304eafeecebce79d" +checksum = "3f934833b4b7233644e5848f235df3f57ed8c80f1528a26c3dfa13d2147fa056" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -374,9 +373,9 @@ checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" [[package]] name = "bitflags" -version = "2.8.0" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f68f53c83ab957f72c32642f3868eec03eb974d1fb82e453128456482613d36" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" dependencies = [ "serde", ] @@ -417,9 +416,9 @@ dependencies = [ [[package]] name = "borsh" -version = "1.5.5" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5430e3be710b68d984d1391c854eb431a9d548640711faa54eecb1df93db91cc" +checksum = "2506947f73ad44e344215ccd6403ac2ae18cd8e046e581a441bf8d199f257f03" dependencies = [ "borsh-derive", "cfg_aliases", @@ -427,22 +426,22 @@ dependencies = [ [[package]] name = "borsh-derive" -version = "1.5.5" +version = "1.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b668d39970baad5356d7c83a86fee3a539e6f93bf6764c97368243e17a0487" +checksum = "c2593a3b8b938bd68373196c9832f516be11fa487ef4ae745eb282e6a56a7244" dependencies = [ "once_cell", "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] name = "bumpalo" -version = "3.17.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "bytecheck" @@ -474,15 +473,15 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.10.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f61dac84819c6588b558454b194026eb1f09c293b9036ae9b159e74e73ab6cf9" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cc" -version = "1.2.13" +version = "1.2.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c7777341816418c02e033934a09f20dc0ccaf65a5201ef8a450ae0105a573fda" +checksum = "a012a0df96dd6d06ba9a1b29d6402d1a5d77c6befd2566afdc26e10603dc93d7" dependencies = [ "shlex", ] @@ -516,9 +515,9 @@ dependencies = [ [[package]] name = "clap" -version = "4.5.28" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3e77c3243bd94243c03672cb5154667347c457ca271254724f9f393aee1c05ff" +checksum = "9560b07a799281c7e0958b9296854d6fafd4c5f31444a7e5bb1ad6dde5ccf1bd" dependencies = [ "clap_builder", "clap_derive", @@ -526,9 +525,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.5.27" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b26884eb4b57140e4d2d93652abfa49498b938b3c9179f9fc487b0acc3edad7" +checksum = "874e0dd3eb68bf99058751ac9712f622e61e6f393a94f7128fa26e3f02f5c7cd" dependencies = [ "anstream", "anstyle", @@ -538,14 +537,14 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.5.28" +version = "4.5.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf4ced95c6f4a675af3da73304b9ac4ed991640c36374e4b46795c49e17cf1ed" +checksum = "54b755194d6389280185988721fffba69495eed5ee9feeee9a599b53db80318c" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -599,9 +598,9 @@ checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] name = "cpufeatures" -version = "0.2.17" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] @@ -690,7 +689,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -712,7 +711,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core 0.20.10", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -759,15 +758,15 @@ dependencies = [ [[package]] name = "derive_more" -version = "0.99.19" +version = "0.99.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3da29a38df43d6f156149c9b43ded5e018ddff2a855cf2cfd62e8cd7d079c69f" +checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "convert_case", "proc-macro2", "quote", "rustc_version", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -790,12 +789,12 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] name = "doggy-watch" -version = "0.2.2" +version = "0.2.0" dependencies = [ "anyhow", "chrono", @@ -804,14 +803,12 @@ dependencies = [ "dotenvy", "indexmap", "lazy_static", - "migration", "sea-orm", "teloxide", "tokio", "tracing", "tracing-panic", "tracing-subscriber", - "url", "uuid", "youtube", ] @@ -857,9 +854,9 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "erasable" -version = "1.3.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437cfb75878119ed8265685c41a115724eae43fb7cc5a0bf0e4ecc3b803af1c4" +checksum = "5f11890ce181d47a64e5d1eb4b6caba0e7bae911a356723740d058a5d0340b7d" dependencies = [ "autocfg", "scopeguard", @@ -1033,9 +1030,9 @@ checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "2.6.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5edaec856126859abb19ed65f39e90fea3a9574b9707f13539acf4abf7eb532" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ "fastrand", "futures-core", @@ -1052,7 +1049,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -1103,19 +1100,7 @@ checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", - "wasi 0.11.0+wasi-snapshot-preview1", -] - -[[package]] -name = "getrandom" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" -dependencies = [ - "cfg-if", - "libc", - "wasi 0.13.3+wasi-0.2.2", - "windows-targets 0.52.6", + "wasi", ] [[package]] @@ -1324,9 +1309,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.10.0" +version = "1.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" +checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" [[package]] name = "httpdate" @@ -1360,9 +1345,9 @@ dependencies = [ [[package]] name = "hyper" -version = "1.6.0" +version = "1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc2b571658e38e0c01b1fdca3bbbe93c00d3d71693ff2770043f8c29bc7d6f80" +checksum = "256fb8d4bd6413123cc9d91832d78325c48ff41677595be797d90f42969beae0" dependencies = [ "bytes", "futures-channel", @@ -1386,7 +1371,7 @@ checksum = "2d191583f3da1305256f22463b9bb0471acad48a4e534a5218b9963e9c1f59b2" dependencies = [ "futures-util", "http 1.2.0", - "hyper 1.6.0", + "hyper 1.5.2", "hyper-util", "rustls", "rustls-pki-types", @@ -1416,7 +1401,7 @@ checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" dependencies = [ "bytes", "http-body-util", - "hyper 1.6.0", + "hyper 1.5.2", "hyper-util", "native-tls", "tokio", @@ -1435,7 +1420,7 @@ dependencies = [ "futures-util", "http 1.2.0", "http-body 1.0.1", - "hyper 1.6.0", + "hyper 1.5.2", "pin-project-lite", "socket2", "tokio", @@ -1581,7 +1566,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -1632,9 +1617,9 @@ dependencies = [ [[package]] name = "indexmap" -version = "2.7.1" +version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c9c992b02b5b4c94ea26e32fe5bccb7aa7d9f390ab5c1221ff895bc7ea8b652" +checksum = "62f822373a4fe84d4bb149bf54e584a7f4abec90e072ed49cda0edea5b95471f" dependencies = [ "equivalent", "hashbrown 0.15.2", @@ -1648,14 +1633,14 @@ checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] name = "ipnet" -version = "2.11.0" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] name = "is_terminal_polyfill" @@ -1672,6 +1657,15 @@ dependencies = [ "either", ] +[[package]] +name = "itertools" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" +dependencies = [ + "either", +] + [[package]] name = "itoa" version = "1.0.14" @@ -1680,9 +1674,9 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "js-sys" -version = "0.3.77" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1cfaf33c695fc6e08064efbc1f72ec937429614f25eef83af942d0e227c3a28f" +checksum = "6717b6b5b077764fb5966237269cb3c64edddde4b14ce42647430a78ced9e7b7" dependencies = [ "once_cell", "wasm-bindgen", @@ -1753,9 +1747,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.25" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04cbf5b083de1c7e0222a7a51dbfdba1cbe1c6ab0b15e29fff3f6c077fd9cd9f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "value-bag", ] @@ -1811,9 +1805,9 @@ dependencies = [ [[package]] name = "miniz_oxide" -version = "0.8.3" +version = "0.8.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b8402cab7aefae129c6977bb0ff1b8fd9a04eb5b51efc50a70bea51cda0c7924" +checksum = "4ffbe83022cedc1d264172192511ae958937694cd57ce297164951b8b3568394" dependencies = [ "adler2", ] @@ -1825,15 +1819,15 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.52.0", ] [[package]] name = "native-tls" -version = "0.2.13" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0dab59f8e050d5df8e4dd87d9206fb6f65a483e20ac9fda365ade4fab353196c" +checksum = "a8614eb2c83d59d1c8cc974dd3f920198647674a0a035e1af1fa58707e317466" dependencies = [ "libc", "log", @@ -1878,7 +1872,7 @@ dependencies = [ "num-integer", "num-iter", "num-traits", - "rand 0.8.5", + "rand", "smallvec", "zeroize", ] @@ -1930,17 +1924,17 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.20.3" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "openssl" -version = "0.10.70" +version = "0.10.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61cfb4e166a8bb8c9b55c500bc2308550148ece889be90f609377e58140f42c6" +checksum = "6174bc48f102d208783c2c84bf931bb75927a617866870de8a4ea85597f871f5" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "cfg-if", "foreign-types", "libc", @@ -1957,20 +1951,20 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] name = "openssl-probe" -version = "0.1.6" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.105" +version = "0.9.104" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b22d5b84be05a8d6947c7cb71f7c849aa0f112acd4bf51c2a7c1c988ac0a9dc" +checksum = "45abf306cbf99debc8195b66b7346498d7b10c210de50418b5ccd7ceba08c741" dependencies = [ "cc", "libc", @@ -1989,9 +1983,9 @@ dependencies = [ [[package]] name = "ouroboros" -version = "0.18.5" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0f050db9c44b97a94723127e6be766ac5c340c48f2c4bb3ffa11713744be59" +checksum = "944fa20996a25aded6b4795c6d63f10014a7a83f8be9828a11860b08c5fc4a67" dependencies = [ "aliasable", "ouroboros_macro", @@ -2000,15 +1994,16 @@ dependencies = [ [[package]] name = "ouroboros_macro" -version = "0.18.5" +version = "0.18.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c7028bdd3d43083f6d8d4d5187680d0d3560d54df4cc9d752005268b41e64d0" +checksum = "39b0deead1528fd0e5947a8546a9642a9777c25f6e1e26f34c97b204bbb465bd" dependencies = [ "heck 0.4.1", + "itertools 0.12.1", "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -2063,22 +2058,22 @@ checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project" -version = "1.1.9" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dfe2e71e1471fe07709406bf725f710b02927c9c54b2b5b2ec0e8087d97c327d" +checksum = "1e2ec53ad785f4d35dac0adea7f7dc6f1bb277ad84a680c7afefeae05d1f5916" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.1.9" +version = "1.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6e859e6e5bd50440ab63c47e3ebabc90f26251f7c73c3d3e837b74a1cc3fa67" +checksum = "d56a66c0c55993aa927429d0f8a0abfd74f084e4d9c192cffed01e418d83eefb" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -2158,7 +2153,7 @@ version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" dependencies = [ - "zerocopy 0.7.35", + "zerocopy", ] [[package]] @@ -2213,14 +2208,14 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] name = "proc-macro2" -version = "1.0.93" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] @@ -2233,7 +2228,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", "version_check", "yansi", ] @@ -2280,19 +2275,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" dependencies = [ "libc", - "rand_chacha 0.3.1", - "rand_core 0.6.4", -] - -[[package]] -name = "rand" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" -dependencies = [ - "rand_chacha 0.9.0", - "rand_core 0.9.0", - "zerocopy 0.8.17", + "rand_chacha", + "rand_core", ] [[package]] @@ -2302,17 +2286,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" dependencies = [ "ppv-lite86", - "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.0", + "rand_core", ] [[package]] @@ -2321,24 +2295,14 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.15", -] - -[[package]] -name = "rand_core" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff" -dependencies = [ - "getrandom 0.3.1", - "zerocopy 0.8.17", + "getrandom", ] [[package]] name = "rc-box" -version = "1.3.0" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897fecc9fac6febd4408f9e935e86df739b0023b625e610e0357535b9c8adad0" +checksum = "e0690759eabf094030c2cdabc25ade1395bac02210d920d655053c1d49583fd8" dependencies = [ "erasable", ] @@ -2349,7 +2313,7 @@ version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "03a862b389f93e68874fbf580b9de08dd02facb9a788ebadaf4a3fd33cf58834" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", ] [[package]] @@ -2463,7 +2427,7 @@ dependencies = [ "http 1.2.0", "http-body 1.0.1", "http-body-util", - "hyper 1.6.0", + "hyper 1.5.2", "hyper-rustls", "hyper-tls 0.6.0", "hyper-util", @@ -2500,7 +2464,7 @@ checksum = "c17fa4cb658e3583423e915b9f3acc01cceaee1860e33d59ebae66adc3a2dc0d" dependencies = [ "cc", "cfg-if", - "getrandom 0.2.15", + "getrandom", "libc", "spin", "untrusted", @@ -2549,7 +2513,7 @@ dependencies = [ "num-traits", "pkcs1", "pkcs8", - "rand_core 0.6.4", + "rand_core", "signature", "spki", "subtle", @@ -2566,7 +2530,7 @@ dependencies = [ "borsh", "bytes", "num-traits", - "rand 0.8.5", + "rand", "rkyv", "serde", "serde_json", @@ -2589,11 +2553,11 @@ dependencies = [ [[package]] name = "rustix" -version = "0.38.44" +version = "0.38.43" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fdb5bc1ae2baa591800df16c9ca78619bf65c0488b41b96ccec5d11220d8c154" +checksum = "a78891ee6bf2340288408954ac787aa063d8e8817e9f53abb37c695c6d834ef6" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "errno", "libc", "linux-raw-sys", @@ -2602,9 +2566,9 @@ dependencies = [ [[package]] name = "rustls" -version = "0.23.22" +version = "0.23.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9fb9263ab4eb695e42321db096e3b8fbd715a59b154d5c88d82db2175b681ba7" +checksum = "5065c3f250cbd332cd894be57c40fa52387247659b14a2d6041d121547903b1b" dependencies = [ "once_cell", "ring", @@ -2634,9 +2598,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.11.0" +version = "1.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" [[package]] name = "rustls-webpki" @@ -2649,17 +2613,11 @@ dependencies = [ "untrusted", ] -[[package]] -name = "rustversion" -version = "1.0.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" - [[package]] name = "ryu" -version = "1.0.19" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "schannel" @@ -2686,14 +2644,14 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] name = "sea-orm" -version = "1.1.4" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a93194430b419da0801f404baf3b986399d6a2a4f43bc79bc96dea83f92ca43" +checksum = "0dbcf83248860dc632c46c7e81a221e041b50d0006191756cb001d9e8afc60a9" dependencies = [ "async-stream", "async-trait", @@ -2719,9 +2677,9 @@ dependencies = [ [[package]] name = "sea-orm-cli" -version = "1.1.4" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e6e0e741bfdf434e6f6aadab156ba4d439e78c9449048698d98fa377871224a" +checksum = "7a8dbef29c7e534a8e9afb49abfa946c7a9df3d85f610dfed9140215ff8bff17" dependencies = [ "chrono", "clap", @@ -2736,23 +2694,23 @@ dependencies = [ [[package]] name = "sea-orm-macros" -version = "1.1.4" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d19e8f22fb474a8a622eb516c46885a080535d8d559386188f525977eaad32b3" +checksum = "49ce6f08134f3681b1ca92185b96fac898f26d9b4f5538d13f7032ef243d14b2" dependencies = [ "heck 0.4.1", "proc-macro2", "quote", "sea-bae", - "syn 2.0.98", + "syn 2.0.95", "unicode-ident", ] [[package]] name = "sea-orm-migration" -version = "1.1.4" +version = "1.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0bb76ba314552ce15e3a24778cf9c116fc1225fa406e48b0a36e5a3cdbc1e21" +checksum = "2e53f46fe9874161ba57b15ff45d2589d754d7cbbbaab9470cb79cbada149ca7" dependencies = [ "async-trait", "clap", @@ -2808,7 +2766,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", "thiserror 1.0.69", ] @@ -2832,7 +2790,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -2847,7 +2805,7 @@ version = "2.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "core-foundation", "core-foundation-sys", "libc", @@ -2866,9 +2824,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.25" +version = "1.0.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f79dfe2d285b0488816f30e700a7438c5a73d816b5b7d3ac72fbc48b0d185e03" +checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "serde" @@ -2887,14 +2845,14 @@ checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] name = "serde_json" -version = "1.0.138" +version = "1.0.135" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" +checksum = "2b0d7ba2887406110130a978386c4e1befb98c674b4fba677954e4db976630d9" dependencies = [ "itoa", "memchr", @@ -2989,7 +2947,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77549399552de45a898a580c1b41d445bf730df867cc44e6c0233bbc4b8329de" dependencies = [ "digest", - "rand_core 0.6.4", + "rand_core", ] [[package]] @@ -3089,7 +3047,7 @@ dependencies = [ "serde_json", "sha2", "smallvec", - "thiserror 2.0.11", + "thiserror 2.0.9", "time", "tokio", "tokio-stream", @@ -3109,7 +3067,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -3132,7 +3090,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.98", + "syn 2.0.95", "tempfile", "tokio", "url", @@ -3147,7 +3105,7 @@ dependencies = [ "atoi", "base64 0.22.1", "bigdecimal", - "bitflags 2.8.0", + "bitflags 2.6.0", "byteorder", "bytes", "chrono", @@ -3169,7 +3127,7 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", - "rand 0.8.5", + "rand", "rsa", "rust_decimal", "serde", @@ -3178,7 +3136,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.11", + "thiserror 2.0.9", "time", "tracing", "uuid", @@ -3194,7 +3152,7 @@ dependencies = [ "atoi", "base64 0.22.1", "bigdecimal", - "bitflags 2.8.0", + "bitflags 2.6.0", "byteorder", "chrono", "crc", @@ -3213,7 +3171,7 @@ dependencies = [ "memchr", "num-bigint", "once_cell", - "rand 0.8.5", + "rand", "rust_decimal", "serde", "serde_json", @@ -3221,7 +3179,7 @@ dependencies = [ "smallvec", "sqlx-core", "stringprep", - "thiserror 2.0.11", + "thiserror 2.0.9", "time", "tracing", "uuid", @@ -3314,9 +3272,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.98" +version = "2.0.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1" +checksum = "46f71c0377baf4ef1cc3e3402ded576dccc315800fbc62dfc7fe04b009773b4a" dependencies = [ "proc-macro2", "quote", @@ -3346,7 +3304,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -3366,7 +3324,7 @@ version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" dependencies = [ - "bitflags 2.8.0", + "bitflags 2.6.0", "core-foundation", "system-configuration-sys 0.6.0", ] @@ -3479,13 +3437,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.16.0" +version = "3.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" +checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" dependencies = [ "cfg-if", "fastrand", - "getrandom 0.3.1", + "getrandom", "once_cell", "rustix", "windows-sys 0.59.0", @@ -3502,11 +3460,11 @@ dependencies = [ [[package]] name = "thiserror" -version = "2.0.11" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d452f284b73e6d76dd36758a0c8684b1d5be31f92b89d07fd5822175732206fc" +checksum = "f072643fd0190df67a8bab670c20ef5d8737177d6ac6b2e9a236cb096206b2cc" dependencies = [ - "thiserror-impl 2.0.11", + "thiserror-impl 2.0.9", ] [[package]] @@ -3517,18 +3475,18 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] name = "thiserror-impl" -version = "2.0.11" +version = "2.0.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" +checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -3599,9 +3557,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.43.0" +version = "1.42.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3d61fa4ffa3de412bfea335c6ecff681de2b609ba3c77ef3e00e521813a9ed9e" +checksum = "5cec9b21b0450273377fc97bd4c33a8acffc8c996c987a7c5b319a0083707551" dependencies = [ "backtrace", "bytes", @@ -3617,13 +3575,13 @@ dependencies = [ [[package]] name = "tokio-macros" -version = "2.5.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" +checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -3678,9 +3636,9 @@ checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" [[package]] name = "toml_edit" -version = "0.22.23" +version = "0.22.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02a8b472d1a3d7c18e2d61a489aee3453fd9031c33e4f55bd533f4a7adca1bee" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" dependencies = [ "indexmap", "toml_datetime", @@ -3734,7 +3692,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -3812,9 +3770,9 @@ checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" [[package]] name = "unicode-ident" -version = "1.0.16" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-normalization" @@ -3869,20 +3827,20 @@ checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.13.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ced87ca4be083373936a67f8de945faa23b6b42384bd5b64434850802c6dccd0" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" dependencies = [ - "getrandom 0.3.1", - "rand 0.9.0", + "getrandom", + "rand", "serde", ] [[package]] name = "valuable" -version = "0.1.1" +version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" +checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" [[package]] name = "value-bag" @@ -3917,15 +3875,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" -dependencies = [ - "wit-bindgen-rt", -] - [[package]] name = "wasite" version = "0.1.0" @@ -3934,35 +3883,34 @@ checksum = "b8dad83b4f25e74f184f64c43b150b91efe7647395b42289f38e50566d82855b" [[package]] name = "wasm-bindgen" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" +checksum = "a474f6281d1d70c17ae7aa6a613c87fce69a127e2624002df63dcb39d6cf6396" dependencies = [ "cfg-if", "once_cell", - "rustversion", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f0a0651a5c2bc21487bde11ee802ccaf4c51935d0d3d42a6101f98161700bc6" +checksum = "5f89bb38646b4f81674e8f5c3fb81b562be1fd936d84320f3264486418519c79" dependencies = [ "bumpalo", "log", "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.50" +version = "0.4.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "555d470ec0bc3bb57890405e5d4322cc9ea83cebb085523ced7be4144dac1e61" +checksum = "38176d9b44ea84e9184eff0bc34cc167ed044f816accfe5922e54d84cf48eca2" dependencies = [ "cfg-if", "js-sys", @@ -3973,9 +3921,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7fe63fc6d09ed3792bd0897b314f53de8e16568c2b3f7982f468c0bf9bd0b407" +checksum = "2cc6181fd9a7492eef6fef1f33961e3695e4579b9872a6f7c83aee556666d4fe" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3983,25 +3931,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" +checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.100" +version = "0.2.99" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" -dependencies = [ - "unicode-ident", -] +checksum = "943aab3fdaaa029a6e0271b35ea10b72b943135afe9bffca82384098ad0e06a6" [[package]] name = "wasm-streams" @@ -4018,9 +3963,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.77" +version = "0.3.76" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "33b6dd2ef9186f1f2072e409e99cd22a975331a6b3591b12c764e0e55c60d5d2" +checksum = "04dd7223427d52553d3702c004d3b2fe07c148165faa56313cb00211e31c12bc" dependencies = [ "js-sys", "wasm-bindgen", @@ -4028,9 +3973,9 @@ dependencies = [ [[package]] name = "webpki-roots" -version = "0.26.8" +version = "0.26.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2210b291f7ea53617fbafcc4939f10914214ec15aace5ba62293a668f322c5c9" +checksum = "5d642ff16b7e79272ae451b7322067cdc17cadf68c23264be9d94a32319efe7e" dependencies = [ "rustls-pki-types", ] @@ -4256,9 +4201,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.7.1" +version = "0.6.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86e376c75f4f43f44db463cf729e0d3acbf954d13e22c51e26e4c264b4ab545f" +checksum = "39281189af81c07ec09db316b302a3e67bf9bd7cbf6c820b50e35fee9c2fa980" dependencies = [ "memchr", ] @@ -4273,15 +4218,6 @@ dependencies = [ "windows-sys 0.48.0", ] -[[package]] -name = "wit-bindgen-rt" -version = "0.33.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" -dependencies = [ - "bitflags 2.8.0", -] - [[package]] name = "write16" version = "1.0.0" @@ -4329,7 +4265,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", "synstructure", ] @@ -4351,16 +4287,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ "byteorder", - "zerocopy-derive 0.7.35", -] - -[[package]] -name = "zerocopy" -version = "0.8.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713" -dependencies = [ - "zerocopy-derive 0.8.17", + "zerocopy-derive", ] [[package]] @@ -4371,18 +4298,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.17" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", + "syn 2.0.95", ] [[package]] @@ -4402,7 +4318,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", "synstructure", ] @@ -4431,5 +4347,5 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn 2.0.95", ] diff --git a/Cargo.toml b/Cargo.toml index 42d6df5..37eaaf9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,17 +1,16 @@ [package] name = "doggy-watch" authors = ["Shiroyashik "] -version = "0.2.2" +version = "0.2.0" edition = "2021" publish = false [workspace] -members = [ "database", "youtube", "migration" ] +members = [ "database", "youtube", "database/migration" ] [dependencies] database = { path = "database" } youtube = { path = "youtube" } -migration = { path = "migration"} anyhow = "1.0" dotenvy = "0.15" @@ -26,7 +25,6 @@ tracing-panic = "0.1" lazy_static = "1.5" indexmap = "2.7" dashmap = "6.1" -url = "2.5" # https://github.com/teloxide/teloxide/issues/1154 # [profile.dev] diff --git a/Dockerfile b/Dockerfile deleted file mode 100644 index b966d6c..0000000 --- a/Dockerfile +++ /dev/null @@ -1,39 +0,0 @@ -## Chef -# FROM clux/muslrust:stable AS chef -FROM rust:alpine AS chef -USER root -RUN apk add --no-cache musl-dev libressl-dev -RUN cargo install cargo-chef -WORKDIR /build - -## Planner -FROM chef AS planner -COPY Cargo.toml Cargo.lock ./ -COPY ./migration ./migration -COPY ./database ./database -COPY ./youtube ./youtube -COPY src src -RUN cargo chef prepare --recipe-path recipe.json - -## Builder -FROM chef AS builder -COPY --from=planner /build/recipe.json recipe.json -# Build dependencies - this is the caching Docker layer! -RUN cargo chef cook --release --target x86_64-unknown-linux-musl --recipe-path recipe.json -# Build application -COPY Cargo.toml Cargo.lock ./ -COPY ./migration ./migration -COPY ./database ./database -COPY ./youtube ./youtube -COPY src src -RUN cargo build --release --target x86_64-unknown-linux-musl --bin doggy-watch - -## Runtime -FROM alpine:3.20.0 AS runtime -WORKDIR /app -COPY --from=builder /build/target/x86_64-unknown-linux-musl/release/doggy-watch /app/doggy-watch - -RUN apk add --no-cache tzdata -ENV TZ=Etc/UTC - -ENTRYPOINT [ "./doggy-watch" ] \ No newline at end of file diff --git a/README.md b/README.md index 6ee7ea5..23001f4 100644 --- a/README.md +++ b/README.md @@ -3,58 +3,14 @@ Telegram бот для предложения YouTube видео на стрим. Сделан специально для [Doggy Dox](https://www.twitch.tv/doggy_dox). -## Переменные - -`DATABASE_URL=postgres://:@
/` - -Параметры базы данных - -`TOKEN=` - -Токен бота. Можно получить у [@botfather](tg://resolve?domain=botfather) - -`ADMINISTRATORS=[,,...]` - -ID администраторов, разделяется запятой. -Можно получить у [@getmyid_bot](tg://resolve?domain=getmyid_bot) - -`CHANNEL=` - -ID канала для проверки подписки. -Можно получить у [@getmyid_bot](tg://resolve?domain=getmyid_bot) переслав ему сообщения из канала. - -`CHANNEL_INVITE_HASH=` - -Хэш для инвайт ссылки (необязательно). Хэш можно извлечь из ссылки-приглашения после плюса. -Пример: `https://t.me/+` - -`RUST_LOG=[,target=level,...]` - -Журналирование (необязательно). -Типы: -`trace, debug, info, warn, error` -Также можно указать отдельный уровень логирования для отдельных целей. - -`TELEGRAM_API_URL=` - -Сторонний Telegram Bot API сервер (необязательно). - -### Только для Docker - -`TZ=` - -Необязательно, но рекомендуется, т.к. данные в БД хранятся без часового пояса. -Можно взять из [таблицы с Википедии](https://en.wikipedia.org/wiki/List_of_tz_database_time_zones) - ## Contributing - ![Спроси меня о чём угодно!](https://img.shields.io/badge/Ask%20me-anything-1abc9c.svg) в [![Telegram](https://badgen.net/static/icon/Telegram?icon=telegram&color=cyan&label)](https://t.me/shiroyashik) или ![Discord](https://badgen.net/badge/icon/Discord?icon=discord&label) -Если у вас есть идеи, нашли баг или хотите предложить улучшения: +Если у вас есть идем, нашли баг или хотите предложить улучшения создавайте [issue](https://github.com/shiroyashik/doggy-watch/issues) или свяжитесь со мной напрямую через Discord/Telegram (**@shiroyashik**). @@ -72,4 +28,4 @@ ID канала для проверки подписки. ## License -Doggy Watch is licensed under [GPL-3.0](LICENSE) +Doggy Watch is licensed under [GPL-3.0](LICENSE) \ No newline at end of file diff --git a/migration/Cargo.toml b/database/migration/Cargo.toml similarity index 100% rename from migration/Cargo.toml rename to database/migration/Cargo.toml diff --git a/migration/README.md b/database/migration/README.md similarity index 100% rename from migration/README.md rename to database/migration/README.md diff --git a/migration/src/lib.rs b/database/migration/src/lib.rs similarity index 100% rename from migration/src/lib.rs rename to database/migration/src/lib.rs diff --git a/migration/src/m20241211_182453_create_tables.rs b/database/migration/src/m20241211_182453_create_tables.rs similarity index 100% rename from migration/src/m20241211_182453_create_tables.rs rename to database/migration/src/m20241211_182453_create_tables.rs index 420fd31..02d8c10 100644 --- a/migration/src/m20241211_182453_create_tables.rs +++ b/database/migration/src/m20241211_182453_create_tables.rs @@ -108,22 +108,22 @@ impl MigrationTrait for Migration { } async fn down(&self, manager: &SchemaManager) -> Result<(), DbErr> { - // Actions + // Videos manager - .drop_table(Table::drop().table(Actions::Table).to_owned()) + .drop_table(Table::drop().table(Videos::Table).to_owned()) .await?; // Requests manager .drop_table(Table::drop().table(Requests::Table).to_owned()) .await?; + // Actions + manager + .drop_table(Table::drop().table(Actions::Table).to_owned()) + .await?; // Archived manager .drop_table(Table::drop().table(Archived::Table).to_owned()) .await?; - // Videos - manager - .drop_table(Table::drop().table(Videos::Table).to_owned()) - .await?; // Moderators manager .drop_table(Table::drop().table(Moderators::Table).to_owned()) diff --git a/migration/src/main.rs b/database/migration/src/main.rs similarity index 100% rename from migration/src/main.rs rename to database/migration/src/main.rs diff --git a/src/handle/add.rs b/src/handle/add.rs index 2d9da51..062727b 100644 --- a/src/handle/add.rs +++ b/src/handle/add.rs @@ -10,17 +10,10 @@ use crate::{check_subscription, markup, notify, AppState, DialogueState, MyDialo pub async fn message(bot: Bot, msg: Message, dialogue: MyDialogue) -> anyhow::Result<()> { use youtube::*; if let Some(text) = msg.clone().text() { - if let Some(user) = check_subscription(&bot, &msg.clone().from.ok_or(anyhow::anyhow!("Message not from user!"))?.id).await { + if let Some(user) = check_subscription(&bot, &msg.from.ok_or(anyhow::anyhow!("Message not from user!"))?.id).await { // Get ready! if let Some(ytid) = extract_youtube_video_id(text) { - let meta = match get_video_metadata(&ytid).await { - Ok(meta) => meta, - Err(err) => { - tracing::error!("Caused an exception in get_video_metadata due: {err:?}"); - bot.send_message(msg.chat.id, "Ошибка при получении метаданных видео!").await?; - return Ok(()); - }, - }; + let meta = get_video_metadata(&ytid).await?; // Post bot.send_message(msg.chat.id, format!( "Вы уверены что хотите добавить {}", @@ -28,8 +21,7 @@ pub async fn message(bot: Bot, msg: Message, dialogue: MyDialogue) -> anyhow::Re )).parse_mode(ParseMode::Html).reply_markup(markup::inline_yes_or_no()).await?; dialogue.update(DialogueState::AcceptVideo { ytid, uid: user.id.0, title: meta.title }).await?; } else { - tracing::debug!("Not a YouTube video: {:?}", msg); - bot.send_message(msg.chat.id, "Это не похоже на YouTube видео... Долбоёб").await?; + bot.send_message(msg.chat.id, "Это не похоже на YouTube видео... Долбоёб").await?; } } else { let link = if let Some(hash) = CHANNEL_INVITE_HASH.as_ref() { diff --git a/src/handle/list.rs b/src/handle/list.rs index 6a14ee6..3e14f59 100644 --- a/src/handle/list.rs +++ b/src/handle/list.rs @@ -1,161 +1,84 @@ use std::sync::Arc; use indexmap::IndexMap; -use teloxide::{prelude::*, types::{InlineKeyboardButton, InlineKeyboardMarkup, LinkPreviewOptions, ParseMode}}; +use teloxide::{prelude::*, types::{LinkPreviewOptions, ParseMode}}; use sea_orm::{prelude::*, Order, QueryOrder}; use database::*; use crate::AppState; -struct Video { - id: i32, - title: String, - url: String, - contributors: u64, - status: String, -} - pub async fn command(bot: Bot, msg: Message, state: Arc) -> anyhow::Result<()> { + struct Video { + id: i32, + title: String, + url: String, + contributors: u64, + status: String, + } let videos: Vec<(requests::Model, Option)> = requests::Entity::find() .find_also_related(videos::Entity).filter(videos::Column::Banned.eq(false)).all(&state.db).await?; - - let result = generate_list(videos, &state).await; - match result { - Ok(list) => { - let result = if let Some(list) = list { - list + // let videos_len = videos.len(); + if !videos.is_empty() { + let mut by_date: IndexMap> = IndexMap::new(); + for (request, video) in videos { + let video = video.unwrap(); + let creator = if let Some(c) = request.find_related(actions::Entity).order_by(actions::Column::Id, Order::Asc).one(&state.db).await? { + c } else { - "Нет видео для просмотра :(".to_string() + let data = format!("Can't find creator for {request:?}"); + bot.send_message(msg.chat.id, data.clone()).await?; + anyhow::bail!(data); }; - let keyboard: Vec> = vec![ - vec![InlineKeyboardButton::callback("Непросмотренные", "list_unviewed")], - ]; + let contributors = request.find_related(actions::Entity).count(&state.db).await?; + let date = creator.created_at.date(); + let url = format!("{}{}", youtube::DEFAULT_YT, video.ytid); - bot.send_message(msg.chat.id, result).parse_mode(ParseMode::Html) - .link_preview_options(LinkPreviewOptions { - is_disabled: true, - url: None, - prefer_small_media: false, - prefer_large_media: false, - show_above_text: false - }).reply_markup(InlineKeyboardMarkup::new(keyboard)).await?; - }, - Err(e) => { - tracing::error!("{:?}", e); - bot.send_message(msg.chat.id, "Произошла ошибка!").await?; - }, - } - Ok(()) -} + let viewed_times = archived::Entity::find().filter(archived::Column::Ytid.eq(video.ytid.clone())).filter(archived::Column::ViewedAt.is_not_null()).count(&state.db).await?; + let archived_times = archived::Entity::find().filter(archived::Column::Ytid.eq(video.ytid)).count(&state.db).await?; -pub async fn inline(state: Arc, bot: Bot, q: CallbackQuery) -> anyhow::Result<()> { - bot.answer_callback_query(&q.id).await?; - let videos: Vec<(requests::Model, Option)> = requests::Entity::find() - .find_also_related(videos::Entity).filter(videos::Column::Banned.eq(false)).filter(requests::Column::ViewedAt.is_null()).all(&state.db).await?; - let result = generate_list(videos, &state).await; - match result { - Ok(list) => { - let result = if let Some(list) = list { - list + let mut status = String::new(); + status.push(if request.viewed_at.is_some() { + '👀' + } else if viewed_times != 0 { + '⭐' + } else if archived_times != 0 { + '📁' } else { - "Нет видео для просмотра :(".to_string() + '🆕' + }); + + if let Some(entry) = by_date.get_mut(&date) { + entry.push(Video { id: request.id, title: video.title, url, contributors, status }); + } else { + by_date.insert(date, vec![Video { id: request.id, title: video.title, url, contributors, status }]); }; - - let keyboard: Vec> = vec![ - vec![InlineKeyboardButton::callback("Обновить", "list_unviewed")], - ]; - - if let Some(message) = q.regular_message() { - bot.edit_message_text(message.chat.id, message.id, result).parse_mode(ParseMode::Html) - .link_preview_options(LinkPreviewOptions { - is_disabled: true, - url: None, - prefer_small_media: false, - prefer_large_media: false, - show_above_text: false - }).reply_markup(InlineKeyboardMarkup::new(keyboard)).await?; - } else if let Some(message_id) = q.inline_message_id { - bot.edit_message_text_inline(&message_id, result) - .parse_mode(ParseMode::Html).disable_web_page_preview(true).reply_markup(InlineKeyboardMarkup::new(keyboard)).await?; + } + by_date.sort_unstable_by(|a, _, c, _| c.cmp(a)); + let mut result = String::new(); + for (date, mut videos) in by_date { + if result.is_empty() { + result.push_str(&format!("[{}]", date.format("%d.%m"))); } else { - bot.send_message(q.from.id, result).parse_mode(ParseMode::Html) - .reply_markup(InlineKeyboardMarkup::new(keyboard)) - .link_preview_options(LinkPreviewOptions { - is_disabled: true, - url: None, - prefer_small_media: false, - prefer_large_media: false, - show_above_text: false - }).await?; + result.push_str(&format!("\n[{}]", date.format("%d.%m"))); } - }, - Err(e) => { - tracing::error!("{:?}", e); - bot.send_message(q.from.id, "Произошла ошибка!").await?; - }, + // result.push_str(&format!(" {}", videos.len())); + videos.sort_unstable_by(|a, b| a.contributors.cmp(&b.contributors)); + for video in videos { + let contributors = if video.contributors != 1 { + format!("(🙍‍♂️{}) ", video.contributors) + } else { + String::new() + }; + result.push_str(&format!("\n{}/{} 📺YT {}{}", video.status, video.id, video.url, contributors, video.title)); + // result.push_str(&format!("\n{}. {} YT ({})", me.username.clone().unwrap(), video.id, video.id, video.title, video.url, video.contributors)); + } + } + // result.push_str(&format!("\nВсего: {}", videos_len)); + bot.send_message(msg.chat.id, result).parse_mode(ParseMode::Html).link_preview_options(LinkPreviewOptions { is_disabled: true, url: None, prefer_small_media: false, prefer_large_media: false, show_above_text: false }).await?; + } else { + bot.send_message(msg.chat.id, "Нет видео для просмотра :(").await?; } Ok(()) -} - -async fn generate_list(videos: Vec<(requests::Model, Option)>, state: &AppState) -> anyhow::Result> { - if videos.is_empty() { - return Ok(None); - } - let mut by_date: IndexMap> = IndexMap::new(); - for (request, video) in videos { - let video = video.unwrap(); - let creator = if let Some(c) = request.find_related(actions::Entity).order_by(actions::Column::Id, Order::Asc).one(&state.db).await? { - c - } else { - anyhow::bail!("Can't find creator for {request:?}"); - }; - - let contributors = request.find_related(actions::Entity).count(&state.db).await?; - let date = creator.created_at.date(); - let url = format!("{}{}", youtube::DEFAULT_YT, video.ytid); - - let viewed_times = archived::Entity::find().filter(archived::Column::Ytid.eq(video.ytid.clone())).filter(archived::Column::ViewedAt.is_not_null()).count(&state.db).await?; - let archived_times = archived::Entity::find().filter(archived::Column::Ytid.eq(video.ytid)).count(&state.db).await?; - - let mut status = String::new(); - status.push(if request.viewed_at.is_some() { - '👀' - } else if viewed_times != 0 { - '⭐' - } else if archived_times != 0 { - '📁' - } else { - '🆕' - }); - - if let Some(entry) = by_date.get_mut(&date) { - entry.push(Video { id: request.id, title: video.title, url, contributors, status }); - } else { - by_date.insert(date, vec![Video { id: request.id, title: video.title, url, contributors, status }]); - }; - } - by_date.sort_unstable_by(|a, _, c, _| c.cmp(a)); - let mut result = String::new(); - for (date, mut videos) in by_date { - if result.is_empty() { - result.push_str(&format!("[{}]", date.format("%d.%m"))); - } else { - result.push_str(&format!("\n[{}]", date.format("%d.%m"))); - } - // result.push_str(&format!(" {}", videos.len())); - videos.sort_unstable_by(|a, b| a.contributors.cmp(&b.contributors)); - for video in videos { - let contributors = if video.contributors != 1 { - format!("(🙍‍♂️{}) ", video.contributors) - } else { - String::new() - }; - result.push_str(&format!("\n{}/{} 📺YT {}{}", video.status, video.id, video.url, contributors, video.title)); - // result.push_str(&format!("\n{}. {} YT ({})", me.username.clone().unwrap(), video.id, video.id, video.title, video.url, video.contributors)); - } - } - // result.push_str(&format!("\nВсего: {}", videos_len)); - Ok(Some(result)) } \ No newline at end of file diff --git a/src/handle/mod.rs b/src/handle/mod.rs index 67f7cc4..ae43d23 100644 --- a/src/handle/mod.rs +++ b/src/handle/mod.rs @@ -19,7 +19,6 @@ pub fn schema() -> UpdateHandler { use dptree::case; let moderator_commands = dptree::entry() .branch(case![Command::Start].endpoint(start::command_mod)) - .branch(case![Command::Help].endpoint(start::command_mod)) .branch(case![Command::List].endpoint(list::command)) .branch(case![Command::Archive].endpoint(archive::command)) .branch(case![Command::Mods].endpoint(moderator::list::command)) @@ -74,7 +73,6 @@ pub fn schema() -> UpdateHandler { InlineCommand::parse(&q.data?) })) .branch(case![InlineCommand::Cancel].endpoint(cancel)) - .branch(case![InlineCommand::ListUnviewed].endpoint(list::inline)) .branch(filter(|com: InlineCommand| { matches!(com, InlineCommand::ArchiveAll | InlineCommand::ArchiveViewed) }).endpoint(archive::inline)) diff --git a/src/handle/moderator/remove.rs b/src/handle/moderator/remove.rs index b1cecf8..49dcfb3 100644 --- a/src/handle/moderator/remove.rs +++ b/src/handle/moderator/remove.rs @@ -29,7 +29,7 @@ pub async fn inline(bot: Bot, q: CallbackQuery, state: Arc, uid: Strin if let Some(data) = q.clone().data { let text= if &data == "yes" { if let Ok(uid) = uid.parse::() { - if Entity::delete_by_id(uid as i64).exec(&state.db).await?.rows_affected != 0 { + if Entity::delete_by_id(uid as i32).exec(&state.db).await?.rows_affected != 0 { "Модератор удалён!" } else { "Произошла ошибка!\nПо всей видимости такого модератора не существует." diff --git a/src/handle/notify.rs b/src/handle/notify.rs index 564e196..00cedc0 100644 --- a/src/handle/notify.rs +++ b/src/handle/notify.rs @@ -8,7 +8,7 @@ use crate::AppState; /// Invert notify status for moderator pub async fn command(bot: Bot, msg: Message, uid: UserId, state: Arc) -> anyhow::Result<()> { - let text = if let Some(moder) = moderators::Entity::find_by_id(uid.0 as i64).one(&state.db).await? { + let text = if let Some(moder) = moderators::Entity::find_by_id(uid.0 as i32).one(&state.db).await? { let moder = match moder.notify { true => { let mut moder = moder.into_active_model(); diff --git a/src/inline.rs b/src/inline.rs index 3b31d91..6642e34 100644 --- a/src/inline.rs +++ b/src/inline.rs @@ -6,7 +6,6 @@ pub enum InlineCommand { Unview(i32), ArchiveViewed, ArchiveAll, - ListUnviewed, Cancel, } @@ -20,7 +19,6 @@ impl InlineCommand { "unview" => Self::Unview(parts.next()?.parse().ok()?), "archive_viewed" => Self::ArchiveViewed, "archive_all" => Self::ArchiveAll, - "list_unviewed" => Self::ListUnviewed, "cancel" => Self::Cancel, _ => return None, }) diff --git a/src/main.rs b/src/main.rs index e7e89b3..fa38886 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,6 @@ use std::{env::var, sync::Arc, time::Duration}; use dashmap::DashMap; use database::moderators; -use migration::{Migrator, MigratorTrait}; use sea_orm::{prelude::*, sea_query::OnConflict, ConnectOptions, Database, Set}; use teloxide::{ dispatching::dialogue::InMemStorage, @@ -17,7 +16,6 @@ mod markup; mod inline; pub use inline::InlineCommand; -use url::Url; pub const COOLDOWN_DURATION: Duration = Duration::from_secs(10); pub const VERSION: &str = env!("CARGO_PKG_VERSION"); @@ -29,12 +27,6 @@ lazy_static! { pub static ref TOKEN: String = { var("TOKEN").expect("TOKEN env not set.") }; - pub static ref TELEGRAM_API_URL: Url = { - match var("TELEGRAM_API_URL") { - Ok(url) => url.parse().expect("Can't parse TELEGRAM_API_URL"), - Err(_) => teloxide::net::TELEGRAM_API_URL.parse().expect("Failed to parse default Telegram bot API url") - } - }; pub static ref DATABASE_URL: String = { var("DATABASE_URL").expect("DATABASE_URL env not set.") }; @@ -67,16 +59,13 @@ async fn main() -> anyhow::Result<()> { })); tracing::info!("Doggy-Watch v{VERSION}"); - tracing::info!("admins: {:?} tg api: {}", *ADMINISTRATORS, TELEGRAM_API_URL.as_str()); - let bot = Bot::new(&*TOKEN).set_api_url(TELEGRAM_API_URL.clone()); + tracing::info!("{:?}", *ADMINISTRATORS); + let bot = Bot::new(&*TOKEN); let mut opt = ConnectOptions::new(&*DATABASE_URL); opt.sqlx_logging_level(tracing::log::LevelFilter::Trace); let db: DatabaseConnection = Database::connect(opt).await?; - // applying migrations - Migrator::up(&db, None).await?; - // add administrators to db { let admins: Vec = ADMINISTRATORS.iter().map(|&x| { @@ -100,7 +89,7 @@ async fn main() -> anyhow::Result<()> { // Pass the shared state to the handler as a dependency. .dependencies(dptree::deps![state, InMemStorage::::new()]) .default_handler(|upd| async move { - tracing::debug!("Unhandled update: {:?}", upd); + tracing::warn!("Unhandled update: {:?}", upd); }) .enable_ctrlc_handler() .build() @@ -127,8 +116,6 @@ pub enum DialogueState { enum Command { #[command(description = "запустить бота и/или вывести этот текст.")] Start, - #[command(description = "вывести этот текст.")] - Help, #[command(description = "вывести список.")] List, #[command(description = "действия с архивом.")] @@ -193,7 +180,7 @@ impl AppState { async fn check_rights(&self, uid: &UserId) -> anyhow::Result { use database::moderators::Entity as Moderators; - Ok(if let Some(moder) = Moderators::find_by_id(uid.0 as i64).one(&self.db).await? { + Ok(if let Some(moder) = Moderators::find_by_id(uid.0 as i32).one(&self.db).await? { Rights::Moderator { can_add_mods: moder.can_add_mods } } else { Rights::None