fix: fix tests for temp

This commit is contained in:
master 2024-12-29 03:04:28 +08:00
parent c8007078c0
commit 4177efc991
12 changed files with 154 additions and 149 deletions

201
Cargo.lock generated
View File

@ -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]]

View File

@ -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" }

View File

@ -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<AppContext> {
tracing_subscriber::fmt()
.with_max_level(tracing::Level::DEBUG)
.with_test_writer()
.init();
let ctx = loco_rs::cli::playground::<App>().await?;
let BootResult {
app_context: ctx, ..

View File

@ -1,4 +1,4 @@
#![feature(duration_constructors, assert_matches)]
#![feature(duration_constructors, assert_matches, unboxed_closures)]
pub mod app;
pub mod config;

View File

@ -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,

View File

@ -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?;

View File

@ -6,6 +6,7 @@ pub use super::entities::bangumi::*;
impl Model {
pub async fn get_or_insert_from_mikan<F>(
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?;

View File

@ -26,6 +26,7 @@ pub struct Model {
pub id: i32,
pub mikan_bangumi_id: Option<String>,
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<super::subscriptions::Entity> for Entity {
Relation::Subscription.def()
}
}
impl Related<super::subscribers::Entity> for Entity {
fn to() -> RelationDef {
Relation::Subscriber.def()
}
}

View File

@ -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<i32>,
pub save_path: Option<String>,
pub resolution: Option<String>,
@ -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<super::bangumi::Entity> for Entity {
@ -80,3 +87,9 @@ impl Related<super::subscriptions::Entity> for Entity {
Relation::Subscriptions.def()
}
}
impl Related<super::subscribers::Entity> for Entity {
fn to() -> RelationDef {
Relation::Subscriber.def()
}
}

View File

@ -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<super::subscriptions::Entity> for Entity {
@ -45,3 +49,15 @@ impl Related<super::downloaders::Entity> for Entity {
Relation::Downloader.def()
}
}
impl Related<super::bangumi::Entity> for Entity {
fn to() -> RelationDef {
Relation::Bangumi.def()
}
}
impl Related<super::episodes::Entity> for Entity {
fn to() -> RelationDef {
Relation::Episode.def()
}
}

View File

@ -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

View File

@ -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::<String>(0))
.flat_map(|qs| qs.try_get_by_index(0))
.collect::<HashSet<String>>();
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(),