From 4177efc99172ebd55b381f5c5478d624354d1e7c Mon Sep 17 00:00:00 2001 From: lonelyhentxi Date: Sun, 29 Dec 2024 03:04:28 +0800 Subject: [PATCH] fix: fix tests for temp --- Cargo.lock | 201 ++++++------------ crates/recorder/Cargo.toml | 19 +- crates/recorder/examples/playground.rs | 9 +- crates/recorder/src/lib.rs | 2 +- crates/recorder/src/migrations/defs.rs | 2 + .../src/migrations/m20220101_000001_init.rs | 18 ++ crates/recorder/src/models/bangumi.rs | 2 + .../recorder/src/models/entities/bangumi.rs | 13 ++ .../recorder/src/models/entities/episodes.rs | 13 ++ .../src/models/entities/subscribers.rs | 16 ++ crates/recorder/src/models/episodes.rs | 2 + crates/recorder/src/models/subscriptions.rs | 6 +- 12 files changed, 154 insertions(+), 149 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b5e9c36..005c6ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -210,7 +210,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -221,7 +221,7 @@ checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -352,7 +352,7 @@ checksum = "57d123550fa8d071b7255cb0cc04dc302baa6c8c4a79f55701552684d8399bce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -606,7 +606,7 @@ dependencies = [ "proc-macro-crate", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -710,9 +710,9 @@ checksum = "a3e368af43e418a04d52505cf3dbc23dda4e3407ae2fa99fd0e4f308ce546acc" [[package]] name = "cc" -version = "1.2.5" +version = "1.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c31a0499c1dc64f458ad13872de75c0eb7e3fdb0e67964610c914b034fc5956e" +checksum = "8d6dbb628b8f8555f86d0323c2eb39e3ec81901f4b83e091db8a6a76d316a333" dependencies = [ "jobserver", "libc", @@ -809,7 +809,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1122,7 +1122,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13b588ba4ac1a99f7f2964d24b3d896ddc6bf847ee3855dbd4366f058cfcd331" dependencies = [ "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1146,7 +1146,7 @@ dependencies = [ "proc-macro2", "quote", "strsim", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1157,7 +1157,7 @@ checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" dependencies = [ "darling_core", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1227,7 +1227,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1237,7 +1237,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" dependencies = [ "derive_builder_core", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1248,7 +1248,7 @@ checksum = "5f33878137e4dafd7fa914ad4e259e18a4e8e532b9617a2d0150262bf53abfce" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1347,7 +1347,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1679,7 +1679,7 @@ checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -1694,12 +1694,6 @@ version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" -[[package]] -name = "futures-timer" -version = "3.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f288b0a4f20f9a56b5d1da57e2227c661b7b16168e2f72365f57b63326e29b24" - [[package]] name = "futures-util" version = "0.3.31" @@ -1964,7 +1958,7 @@ dependencies = [ "markup5ever", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2287,7 +2281,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2398,7 +2392,7 @@ checksum = "0122b7114117e64a63ac49f752a5ca4624d534c7b1c7de796ac196381cd2d947" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -2958,7 +2952,7 @@ dependencies = [ "tracing-subscriber", "ulid", "uuid", - "validator 0.18.1", + "validator", ] [[package]] @@ -3217,7 +3211,7 @@ checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3346,7 +3340,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3423,7 +3417,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3544,7 +3538,7 @@ dependencies = [ "regex", "regex-syntax 0.8.5", "structmeta", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3635,7 +3629,7 @@ dependencies = [ "pest_meta", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3699,7 +3693,7 @@ dependencies = [ "phf_shared 0.11.2", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3842,7 +3836,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -3862,7 +3856,7 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "version_check", "yansi", ] @@ -4016,9 +4010,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" +checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc" dependencies = [ "proc-macro2", ] @@ -4104,9 +4098,7 @@ dependencies = [ "chrono", "eyre", "fancy-regex", - "futures", "html-escape", - "include_dir", "insta", "itertools 0.13.0", "lazy_static", @@ -4123,7 +4115,6 @@ dependencies = [ "reqwest-retry", "reqwest-tracing", "rss", - "rstest", "scraper", "sea-orm", "sea-orm-migration", @@ -4131,8 +4122,6 @@ dependencies = [ "serde_json", "serde_with", "serial_test", - "testcontainers", - "testcontainers-modules", "thiserror 2.0.9", "tokio", "torrent", @@ -4140,7 +4129,6 @@ dependencies = [ "tracing-subscriber", "url", "uuid", - "validator 0.19.0", "zune-image", ] @@ -4246,12 +4234,6 @@ version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2b15c43186be67a4fd63bee50d0303afffcef381492ebe2c5d87f324e1b8815c" -[[package]] -name = "relative-path" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba39f3699c378cd8970968dcbff9c43159ea4cfbd88d43c00b22f2ef10a435d2" - [[package]] name = "rend" version = "0.4.2" @@ -4480,36 +4462,6 @@ dependencies = [ "quick-xml 0.37.1", ] -[[package]] -name = "rstest" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2c585be59b6b5dd66a9d2084aa1d8bd52fbdb806eafdeffb52791147862035" -dependencies = [ - "futures", - "futures-timer", - "rstest_macros", - "rustc_version", -] - -[[package]] -name = "rstest_macros" -version = "0.23.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "825ea780781b15345a146be27eaefb05085e337e869bff01b4306a4fd4a9ad5a" -dependencies = [ - "cfg-if", - "glob", - "proc-macro-crate", - "proc-macro2", - "quote", - "regex", - "relative-path", - "rustc_version", - "syn 2.0.91", - "unicode-ident", -] - [[package]] name = "rust-multipart-rfc7578_2" version = "0.6.1" @@ -4635,9 +4587,9 @@ dependencies = [ [[package]] name = "rustversion" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0e819f2bc632f285be6d7cd36e25940d45b2391dd6d9b939e79de557f7014248" +checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "rusty-sidekiq" @@ -4684,9 +4636,9 @@ dependencies = [ [[package]] name = "scc" -version = "2.2.6" +version = "2.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94b13f8ea6177672c49d12ed964cca44836f59621981b04a3e26b87e675181de" +checksum = "28e1c91382686d21b5ac7959341fcb9780fa7c03773646995a87c950fa7be640" dependencies = [ "sdd", ] @@ -4737,7 +4689,7 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4795,7 +4747,7 @@ dependencies = [ "proc-macro2", "quote", "sea-bae", - "syn 2.0.91", + "syn 2.0.92", "unicode-ident", ] @@ -4859,15 +4811,15 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "thiserror 1.0.69", ] [[package]] name = "sea-schema" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aab1592d17860a9a8584d9b549aebcd06f7bdc3ff615f71752486ba0b05b1e6e" +checksum = "0ef5dd7848c993f3789d09a2616484c72c9330cae2b048df59d8c9b8c0343e95" dependencies = [ "futures", "sea-query", @@ -4883,7 +4835,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -4942,9 +4894,9 @@ checksum = "3cb6eb87a131f756572d7fb904f6e7b68633f09cca868c5df1c4b8d1a694bbba" [[package]] name = "serde" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b9781016e935a97e8beecf0c933758c97a5520d32930e460142b4cd80c6338e" +checksum = "02fc4265df13d6fa1d00ecff087228cc0a2b5f3c0e87e258d8b94a156e984c70" dependencies = [ "serde_derive", ] @@ -4961,13 +4913,13 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.216" +version = "1.0.217" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "46f859dbbf73865c6627ed570e78961cd3ac92407a2d117204c49232485da55e" +checksum = "5a9bf7cf98d04a2b28aead066b7496853d4779c9cc183c440dbac457641e19a0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5010,7 +4962,7 @@ checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5070,7 +5022,7 @@ dependencies = [ "darling", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5108,7 +5060,7 @@ checksum = "5d69265a08751de7844521fd15003ae0a888e035773ba05695c5c759a6f89eef" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5308,7 +5260,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5420,7 +5372,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5443,7 +5395,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn 2.0.91", + "syn 2.0.92", "tempfile", "tokio", "url", @@ -5643,7 +5595,7 @@ dependencies = [ "proc-macro2", "quote", "structmeta-derive", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5654,7 +5606,7 @@ checksum = "152a0b65a590ff6c3da95cabe2353ee04e6167c896b28e3b14478c2636c922fc" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5682,9 +5634,9 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.91" +version = "2.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d53cbcb5a243bd33b7858b1d7f4aca2153490815872d86d955d6ea29f743c035" +checksum = "70ae51629bf965c5c098cc9e87908a3df5301051a9e087d6f9bef5c9771ed126" dependencies = [ "proc-macro2", "quote", @@ -5708,7 +5660,7 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5865,7 +5817,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5876,7 +5828,7 @@ checksum = "7b50fa271071aae2e6ee85f842e2e28ba8cd2c5fb67f11fcb1fd70b276f9e7d4" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -5992,7 +5944,7 @@ checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -6210,7 +6162,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -6294,7 +6246,7 @@ checksum = "560b82d656506509d43abe30e0ba64c56b1953ab3d4fe7ba5902747a7a3cedd5" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -6372,9 +6324,9 @@ dependencies = [ [[package]] name = "unicase" -version = "2.8.0" +version = "2.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7e51b68083f157f853b6379db119d1c1be0e6e4dec98101079dec41f6f5cf6df" +checksum = "75b844d17643ee918803943289730bec8aac480150456169e647ed0b576ba539" [[package]] name = "unicode-bidi" @@ -6508,21 +6460,6 @@ dependencies = [ "validator_derive", ] -[[package]] -name = "validator" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d0b4a29d8709210980a09379f27ee31549b73292c87ab9899beee1c0d3be6303" -dependencies = [ - "idna 1.0.3", - "once_cell", - "regex", - "serde", - "serde_derive", - "serde_json", - "url", -] - [[package]] name = "validator_derive" version = "0.18.2" @@ -6534,7 +6471,7 @@ dependencies = [ "proc-macro-error", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -6613,7 +6550,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "wasm-bindgen-shared", ] @@ -6648,7 +6585,7 @@ checksum = "30d7a95b763d3c45903ed6c81f156801839e5ee968bb07e534c44df0fcd330c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -7021,7 +6958,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "synstructure", ] @@ -7043,7 +6980,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] @@ -7063,7 +7000,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", "synstructure", ] @@ -7092,7 +7029,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.91", + "syn 2.0.92", ] [[package]] diff --git a/crates/recorder/Cargo.toml b/crates/recorder/Cargo.toml index 21b8866..a6e70cf 100644 --- a/crates/recorder/Cargo.toml +++ b/crates/recorder/Cargo.toml @@ -14,32 +14,30 @@ path = "src/bin/main.rs" required-features = [] [dependencies] -loco-rs = { version = "0.13.2" } +loco-rs = { version = "0.13" } serde = { version = "1", features = ["derive"] } serde_json = "1" eyre = "0.6" tokio = { version = "1.42", default-features = false } async-trait = "0.1.83" -tracing = "0.1.41" +tracing = "0.1" chrono = "0.4" -validator = { version = "0.19" } -sea-orm = { version = "1.1.3", features = [ +sea-orm = { version = "1", features = [ "sqlx-sqlite", "sqlx-postgres", "runtime-tokio-rustls", "macros", + "debug-print" ] } axum = "0.7.9" -include_dir = "0.7" uuid = { version = "1.6.0", features = ["v4"] } -tracing-subscriber = { version = "0.3.19", features = ["env-filter", "json"] } -sea-orm-migration = { version = "1.1.3", features = ["runtime-tokio-rustls"] } +tracing-subscriber = { version = "0.3", features = ["env-filter", "json"] } +sea-orm-migration = { version = "1", features = ["runtime-tokio-rustls"] } reqwest = "0.12.9" thiserror = "2" rss = "2" bytes = "1.9" -futures = "0.3.31" itertools = "0.13.0" url = "2.5" fancy-regex = "0.14" @@ -62,8 +60,5 @@ serde_with = "3" [dev-dependencies] serial_test = "3" -rstest = "0.23.0" -loco-rs = { version = "0.13.2", features = ["testing"] } +loco-rs = { version = "0.13", features = ["testing"] } insta = { version = "1", features = ["redactions", "yaml", "filters"] } -testcontainers = { version = "0.23.1" } -testcontainers-modules = { version = "0.11.4" } diff --git a/crates/recorder/examples/playground.rs b/crates/recorder/examples/playground.rs index 34f784b..431b976 100644 --- a/crates/recorder/examples/playground.rs +++ b/crates/recorder/examples/playground.rs @@ -19,7 +19,10 @@ use recorder::{ use sea_orm_migration::MigratorTrait; async fn pull_mikan_bangumi_rss(ctx: &AppContext) -> eyre::Result<()> { - let rss_link = "https://mikanani.me/RSS/Bangumi?bangumiId=3416&subgroupid=370"; + // let rss_link = "https://mikanani.me/RSS/Bangumi?bangumiId=3416&subgroupid=370"; + + let rss_link = + "https://mikanani.me/RSS/MyBangumi?token=FE9tccsML2nBPUUqpCuJW2uJZydAXCntHJ7RpD9LDP8%3d"; let subscription = if let Some(subscription) = subscriptions::Entity::find() .filter(subscriptions::Column::SourceUrl.eq(String::from(rss_link))) .one(&ctx.db) @@ -45,6 +48,10 @@ async fn pull_mikan_bangumi_rss(ctx: &AppContext) -> eyre::Result<()> { } async fn init() -> eyre::Result { + tracing_subscriber::fmt() + .with_max_level(tracing::Level::DEBUG) + .with_test_writer() + .init(); let ctx = loco_rs::cli::playground::().await?; let BootResult { app_context: ctx, .. diff --git a/crates/recorder/src/lib.rs b/crates/recorder/src/lib.rs index 5a67965..56955f7 100644 --- a/crates/recorder/src/lib.rs +++ b/crates/recorder/src/lib.rs @@ -1,4 +1,4 @@ -#![feature(duration_constructors, assert_matches)] +#![feature(duration_constructors, assert_matches, unboxed_closures)] pub mod app; pub mod config; diff --git a/crates/recorder/src/migrations/defs.rs b/crates/recorder/src/migrations/defs.rs index 671544b..8204231 100644 --- a/crates/recorder/src/migrations/defs.rs +++ b/crates/recorder/src/migrations/defs.rs @@ -39,6 +39,7 @@ pub enum Bangumi { MikanBangumiId, DisplayName, SubscriptionId, + SubscriberId, RawName, Season, SeasonRaw, @@ -62,6 +63,7 @@ pub enum Episodes { DisplayName, BangumiId, SubscriptionId, + SubscriberId, DownloadId, SavePath, Resolution, diff --git a/crates/recorder/src/migrations/m20220101_000001_init.rs b/crates/recorder/src/migrations/m20220101_000001_init.rs index b12ecac..bc0fde2 100644 --- a/crates/recorder/src/migrations/m20220101_000001_init.rs +++ b/crates/recorder/src/migrations/m20220101_000001_init.rs @@ -90,6 +90,7 @@ impl MigrationTrait for Migration { .col(pk_auto(Bangumi::Id)) .col(text_null(Bangumi::MikanBangumiId)) .col(integer(Bangumi::SubscriptionId)) + .col(integer(Bangumi::SubscriberId)) .col(text(Bangumi::DisplayName)) .col(text(Bangumi::RawName)) .col(integer(Bangumi::Season)) @@ -111,6 +112,14 @@ impl MigrationTrait for Migration { .on_update(ForeignKeyAction::Restrict) .on_delete(ForeignKeyAction::Cascade), ) + .foreign_key( + ForeignKey::create() + .name("fk_bangumi_subscriber_id") + .from(Bangumi::Table, Bangumi::SubscriberId) + .to(Subscribers::Table, Subscribers::Id) + .on_update(ForeignKeyAction::Restrict) + .on_delete(ForeignKeyAction::Cascade), + ) .to_owned(), ) .await?; @@ -150,6 +159,7 @@ impl MigrationTrait for Migration { .col(text(Episodes::DisplayName)) .col(integer(Episodes::BangumiId)) .col(integer(Episodes::SubscriptionId)) + .col(integer(Episodes::SubscriberId)) .col(text_null(Episodes::SavePath)) .col(text_null(Episodes::Resolution)) .col(integer(Episodes::Season)) @@ -178,6 +188,14 @@ impl MigrationTrait for Migration { .on_update(ForeignKeyAction::Restrict) .on_delete(ForeignKeyAction::Cascade), ) + .foreign_key( + ForeignKey::create() + .name("fk_episodes_subscriber_id") + .from(Episodes::Table, Episodes::SubscriberId) + .to(Subscribers::Table, Subscribers::Id) + .on_update(ForeignKeyAction::Restrict) + .on_delete(ForeignKeyAction::Cascade), + ) .to_owned(), ) .await?; diff --git a/crates/recorder/src/models/bangumi.rs b/crates/recorder/src/models/bangumi.rs index af30fc4..6583f85 100644 --- a/crates/recorder/src/models/bangumi.rs +++ b/crates/recorder/src/models/bangumi.rs @@ -6,6 +6,7 @@ pub use super::entities::bangumi::*; impl Model { pub async fn get_or_insert_from_mikan( ctx: &AppContext, + subscriber_id: i32, subscription_id: i32, mikan_bangumi_id: String, mikan_fansub_id: String, @@ -30,6 +31,7 @@ impl Model { mikan_bangumi_id: ActiveValue::Set(Some(mikan_bangumi_id)), mikan_fansub_id: ActiveValue::Set(Some(mikan_fansub_id)), subscription_id: ActiveValue::Set(subscription_id), + subscriber_id: ActiveValue::Set(subscriber_id), ..Default::default() }; f(&mut bgm).await?; diff --git a/crates/recorder/src/models/entities/bangumi.rs b/crates/recorder/src/models/entities/bangumi.rs index 23e2b19..4e3e960 100644 --- a/crates/recorder/src/models/entities/bangumi.rs +++ b/crates/recorder/src/models/entities/bangumi.rs @@ -26,6 +26,7 @@ pub struct Model { pub id: i32, pub mikan_bangumi_id: Option, pub subscription_id: i32, + pub subscriber_id: i32, pub display_name: String, pub raw_name: String, pub season: i32, @@ -50,6 +51,12 @@ pub enum Relation { to = "super::subscriptions::Column::Id" )] Subscription, + #[sea_orm( + belongs_to = "super::subscribers::Entity", + from = "Column::SubscriberId", + to = "super::subscribers::Column::Id" + )] + Subscriber, #[sea_orm(has_many = "super::episodes::Entity")] Episode, } @@ -65,3 +72,9 @@ impl Related for Entity { Relation::Subscription.def() } } + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Subscriber.def() + } +} diff --git a/crates/recorder/src/models/entities/episodes.rs b/crates/recorder/src/models/entities/episodes.rs index ad85b6d..d72ac2a 100644 --- a/crates/recorder/src/models/entities/episodes.rs +++ b/crates/recorder/src/models/entities/episodes.rs @@ -25,6 +25,7 @@ pub struct Model { pub display_name: String, pub bangumi_id: i32, pub subscription_id: i32, + pub subscriber_id: i32, pub download_id: Option, pub save_path: Option, pub resolution: Option, @@ -61,6 +62,12 @@ pub enum Relation { to = "super::subscriptions::Column::Id" )] Subscriptions, + #[sea_orm( + belongs_to = "super::subscribers::Entity", + from = "Column::SubscriberId", + to = "super::subscribers::Column::Id" + )] + Subscriber, } impl Related for Entity { @@ -80,3 +87,9 @@ impl Related for Entity { Relation::Subscriptions.def() } } + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Subscriber.def() + } +} diff --git a/crates/recorder/src/models/entities/subscribers.rs b/crates/recorder/src/models/entities/subscribers.rs index af3620e..3d9ed55 100644 --- a/crates/recorder/src/models/entities/subscribers.rs +++ b/crates/recorder/src/models/entities/subscribers.rs @@ -32,6 +32,10 @@ pub enum Relation { to = "super::downloaders::Column::Id" )] Downloader, + #[sea_orm(has_many = "super::bangumi::Entity")] + Bangumi, + #[sea_orm(has_many = "super::episodes::Entity")] + Episode, } impl Related for Entity { @@ -45,3 +49,15 @@ impl Related for Entity { Relation::Downloader.def() } } + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Bangumi.def() + } +} + +impl Related for Entity { + fn to() -> RelationDef { + Relation::Episode.def() + } +} diff --git a/crates/recorder/src/models/episodes.rs b/crates/recorder/src/models/episodes.rs index 49602c8..08ed798 100644 --- a/crates/recorder/src/models/episodes.rs +++ b/crates/recorder/src/models/episodes.rs @@ -35,6 +35,7 @@ impl Model { .do_nothing() .to_owned(), ) + .on_empty_do_nothing() .exec(db) .await?; @@ -61,6 +62,7 @@ impl ActiveModel { display_name: ActiveValue::Set(item.episode_title.clone()), bangumi_id: ActiveValue::Set(bgm.id), subscription_id: ActiveValue::Set(bgm.subscription_id), + subscriber_id: ActiveValue::Set(bgm.subscriber_id), resolution: ActiveValue::Set(raw_meta.resolution), season: ActiveValue::Set(if raw_meta.season > 0 { raw_meta.season diff --git a/crates/recorder/src/models/subscriptions.rs b/crates/recorder/src/models/subscriptions.rs index 3b85a94..f05672d 100644 --- a/crates/recorder/src/models/subscriptions.rs +++ b/crates/recorder/src/models/subscriptions.rs @@ -123,8 +123,7 @@ impl Model { .iter() .map(|s| Value::from(s.mikan_episode_id.clone())), ); - stmt.expr(Expr::col(episodes::Column::SubscriptionId)) - .and_where(Expr::col(episodes::Column::SubscriptionId).eq(self.id)); + stmt.and_where(Expr::col(episodes::Column::SubscriberId).eq(self.subscriber_id)); let builder = &db.get_database_backend(); @@ -132,7 +131,7 @@ impl Model { .query_all(builder.build(&stmt)) .await? .into_iter() - .flat_map(|qs| qs.try_get_by_index::(0)) + .flat_map(|qs| qs.try_get_by_index(0)) .collect::>(); let new_rss_items = items @@ -173,6 +172,7 @@ impl Model { let bgm = Arc::new( bangumi::Model::get_or_insert_from_mikan( ctx, + self.subscriber_id, self.id, mikan_bangumi_id.to_string(), mikan_fansub_id.to_string(),