From b10cef4f2d945b404124c678336d74fc5fa41899 Mon Sep 17 00:00:00 2001 From: David Skrundz Date: Sat, 8 Nov 2025 21:14:37 -0700 Subject: [PATCH] Add scan date on libraries --- Cargo.lock | 475 ++++++++++++++++++++++++++++---- Cargo.toml | 12 +- crates/cli/Cargo.toml | 2 +- crates/cli/src/run/tmdb.rs | 18 +- crates/db/Cargo.toml | 2 +- crates/db/src/entity/content.rs | 8 + crates/flix/Cargo.toml | 2 +- crates/fs/Cargo.toml | 2 +- crates/model/Cargo.toml | 2 +- crates/tmdb/Cargo.toml | 2 +- 10 files changed, 446 insertions(+), 79 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ebc1eac..eb36d53 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,17 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "ahash" +version = "0.7.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "891477e0c6a8957309ee5c45a6368af3ae14bb510732d2684ffa19af310920f9" +dependencies = [ + "getrandom 0.2.16", + "once_cell", + "version_check", +] + [[package]] name = "aho-corasick" version = "1.1.4" @@ -88,6 +99,12 @@ version = "1.0.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" +[[package]] +name = "arrayvec" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" + [[package]] name = "async-stream" version = "0.3.6" @@ -107,7 +124,7 @@ checksum = "c7c24de15d275a1ecfd47a380fb4d5ec9bfe0933f309ed5e705b775596a3574d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -118,7 +135,7 @@ checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -154,6 +171,20 @@ version = "1.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "55248b47b0caf0546f7988906588779981c43bb1bc9d0c44087278f80cdb44ba" +[[package]] +name = "bigdecimal" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "560f42649de9fa436b73517378a147ec21f6c997a546581df4b4b31677828934" +dependencies = [ + "autocfg", + "libm", + "num-bigint", + "num-integer", + "num-traits", + "serde", +] + [[package]] name = "bitflags" version = "2.10.0" @@ -163,6 +194,18 @@ dependencies = [ "serde_core", ] +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "block-buffer" version = "0.10.4" @@ -172,12 +215,57 @@ dependencies = [ "generic-array", ] +[[package]] +name = "borsh" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ad8646f98db542e39fc66e68a20b2144f6a732636df7c2354e74645faaa433ce" +dependencies = [ + "borsh-derive", + "cfg_aliases", +] + +[[package]] +name = "borsh-derive" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdd1d3c0c2f5833f22386f252fe8ed005c7f59fdcddeef025c01b4c3b9fd9ac3" +dependencies = [ + "once_cell", + "proc-macro-crate", + "proc-macro2", + "quote", + "syn 2.0.109", +] + [[package]] name = "bumpalo" version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" +[[package]] +name = "bytecheck" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23cdc57ce23ac53c931e88a43d06d070a6fd142f2617be5855eb75efc9beb1c2" +dependencies = [ + "bytecheck_derive", + "ptr_meta", + "simdutf8", +] + +[[package]] +name = "bytecheck_derive" +version = "0.6.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3db406d29fbcd95542e92559bed4d8ad92636d1ca8b3b72ede10b4bcc010e659" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "byteorder" version = "1.5.0" @@ -192,9 +280,9 @@ checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" [[package]] name = "cc" -version = "1.2.44" +version = "1.2.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37521ac7aabe3d13122dc382493e20c9416f299d2ccd5b3a5340a2570cdeb0f3" +checksum = "35900b6c8d709fb1d854671ae27aeaa9eec2f8b01b364e1619a40da3e6fe2afe" dependencies = [ "find-msvc-tools", "shlex", @@ -255,7 +343,7 @@ dependencies = [ "heck 0.5.0", "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -360,7 +448,7 @@ dependencies = [ "ident_case", "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -371,7 +459,7 @@ checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -385,6 +473,16 @@ dependencies = [ "zeroize", ] +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", + "serde_core", +] + [[package]] name = "derive_more" version = "2.0.1" @@ -402,7 +500,7 @@ checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", "unicode-xid", ] @@ -426,7 +524,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -480,7 +578,7 @@ checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" [[package]] name = "flix" -version = "0.0.13" +version = "0.0.14" dependencies = [ "flix-db", "flix-fs", @@ -490,7 +588,7 @@ dependencies = [ [[package]] name = "flix-cli" -version = "0.0.13" +version = "0.0.14" dependencies = [ "anyhow", "chrono", @@ -507,7 +605,7 @@ dependencies = [ [[package]] name = "flix-db" -version = "0.0.13" +version = "0.0.14" dependencies = [ "chrono", "flix-model", @@ -520,7 +618,7 @@ dependencies = [ [[package]] name = "flix-fs" -version = "0.0.13" +version = "0.0.14" dependencies = [ "async-stream", "flix-model", @@ -532,7 +630,7 @@ dependencies = [ [[package]] name = "flix-model" -version = "0.0.13" +version = "0.0.14" dependencies = [ "seamantic", "serde", @@ -541,7 +639,7 @@ dependencies = [ [[package]] name = "flix-tmdb" -version = "0.0.13" +version = "0.0.14" dependencies = [ "chrono", "flix-model", @@ -588,6 +686,12 @@ dependencies = [ "percent-encoding", ] +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.3.31" @@ -744,6 +848,15 @@ dependencies = [ "web-time", ] +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +dependencies = [ + "ahash", +] + [[package]] name = "hashbrown" version = "0.15.5" @@ -1076,7 +1189,7 @@ checksum = "c727f80bfa4a6c6e2508d2f05b6f4bfce242030bd88ed15ae5331c5b5d30fba7" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -1096,9 +1209,9 @@ checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" [[package]] name = "iri-string" -version = "0.7.8" +version = "0.7.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbc5ebe9c3a1a7a5127f920a418f7585e9e758e911d0466ed004f393b0e380b2" +checksum = "4f867b9d1d896b67beb18518eda36fdb77a32ea590de864f1325b294a6d14397" dependencies = [ "memchr", "serde", @@ -1247,6 +1360,16 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "38bf9645c8b145698bb0b18a4637dcacbc421ea49bef2317e4fd8065a387cf21" +[[package]] +name = "num-bigint" +version = "0.4.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" +dependencies = [ + "num-integer", + "num-traits", +] + [[package]] name = "num-bigint-dig" version = "0.8.5" @@ -1263,6 +1386,12 @@ dependencies = [ "zeroize", ] +[[package]] +name = "num-conv" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" + [[package]] name = "num-integer" version = "0.1.46" @@ -1335,7 +1464,7 @@ dependencies = [ "proc-macro2", "proc-macro2-diagnostics", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -1382,6 +1511,15 @@ version = "2.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" +[[package]] +name = "pgvector" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc58e2d255979a31caa7cabfa7aac654af0354220719ab7a68520ae7a91e8c0b" +dependencies = [ + "serde", +] + [[package]] name = "pin-project-lite" version = "0.2.16" @@ -1436,6 +1574,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "powerfmt" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" + [[package]] name = "ppv-lite86" version = "0.2.21" @@ -1445,6 +1589,15 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "proc-macro-crate" +version = "3.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +dependencies = [ + "toml_edit", +] + [[package]] name = "proc-macro-error-attr2" version = "2.0.0" @@ -1464,7 +1617,7 @@ dependencies = [ "proc-macro-error-attr2", "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -1484,11 +1637,31 @@ checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", "version_check", "yansi", ] +[[package]] +name = "ptr_meta" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0738ccf7ea06b608c10564b31debd4f5bc5e197fc8bfe088f68ae5ce81e7a4f1" +dependencies = [ + "ptr_meta_derive", +] + +[[package]] +name = "ptr_meta_derive" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16b845dbfca988fa33db069c0e230574d15a3088f147a87b64c7589eb662c9ac" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "quinn" version = "0.11.9" @@ -1546,9 +1719,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.41" +version = "1.0.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" +checksum = "a338cc41d27e6cc6dce6cefc13a0729dfbb81c262b1f519331575dd80ef3067f" dependencies = [ "proc-macro2", ] @@ -1559,6 +1732,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "rand" version = "0.8.5" @@ -1656,6 +1835,15 @@ version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" +[[package]] +name = "rend" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "71fe3824f5629716b1589be05dacd749f6aa084c87e00e016714a8cdfccc997c" +dependencies = [ + "bytecheck", +] + [[package]] name = "reqwest" version = "0.12.24" @@ -1708,6 +1896,35 @@ dependencies = [ "windows-sys 0.52.0", ] +[[package]] +name = "rkyv" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9008cd6385b9e161d8229e1f6549dd23c3d022f132a2ea37ac3a10ac4935779b" +dependencies = [ + "bitvec", + "bytecheck", + "bytes", + "hashbrown 0.12.3", + "ptr_meta", + "rend", + "rkyv_derive", + "seahash", + "tinyvec", + "uuid", +] + +[[package]] +name = "rkyv_derive" +version = "0.7.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "503d1d27590a2b0a3a4ca4c94755aa2875657196ecbf401a42eff41d7de532c0" +dependencies = [ + "proc-macro2", + "quote", + "syn 1.0.109", +] + [[package]] name = "rsa" version = "0.9.8" @@ -1728,6 +1945,22 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rust_decimal" +version = "1.39.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "35affe401787a9bd846712274d97654355d21b2a2c092a3139aabe31e9022282" +dependencies = [ + "arrayvec", + "borsh", + "bytes", + "num-traits", + "rand 0.8.5", + "rkyv", + "serde", + "serde_json", +] + [[package]] name = "rustc-hash" version = "2.1.1" @@ -1736,9 +1969,9 @@ checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustls" -version = "0.23.34" +version = "0.23.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a9586e9ee2b4f8fab52a0048ca7334d7024eef48e2cb9407e3497bb7cab7fa7" +checksum = "533f54bc6a7d4f647e46ad909549eda97bf5afc1585190ef692b4286b198bd8f" dependencies = [ "once_cell", "ring", @@ -1797,17 +2030,18 @@ dependencies = [ "proc-macro-error2", "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] name = "sea-orm" -version = "2.0.0-rc.17" +version = "2.0.0-rc.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "296a092e16fbbcc3a9969eae3915ef11024b98a43f3b77ff5199bc626c462d7a" +checksum = "fd92b1f5f1a6bee6f51523dbd030c5f617e65da6caf312f166dabb404806db86" dependencies = [ "async-stream", "async-trait", + "bigdecimal", "chrono", "derive_more", "futures-util", @@ -1815,23 +2049,28 @@ dependencies = [ "itertools", "log", "ouroboros", + "pgvector", + "rust_decimal", "sea-orm-macros", "sea-query", "sea-query-sqlx", "sea-schema", "serde", + "serde_json", "sqlx", "strum", "thiserror", + "time", "tracing", "url", + "uuid", ] [[package]] name = "sea-orm-cli" -version = "2.0.0-rc.17" +version = "2.0.0-rc.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301f7ace977d940474b47a154a5fc453714d13e5d53bdb077330c6fc6212a31b" +checksum = "669479531f1422edde78327b24b32f652a9417f5942935737a7d7c7d31e5a1a9" dependencies = [ "chrono", "glob", @@ -1847,23 +2086,23 @@ dependencies = [ [[package]] name = "sea-orm-macros" -version = "2.0.0-rc.17" +version = "2.0.0-rc.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e56ee8be52d15a801dc62a5a30d83dc718762401f7c7945b7f2730ef385b8b3d" +checksum = "07e65b4d10f02744f19c203f2e02fac65bc718efdd98636ea445f0a8f1ee0c1d" dependencies = [ "heck 0.5.0", "proc-macro2", "quote", "sea-bae", - "syn", + "syn 2.0.109", "unicode-ident", ] [[package]] name = "sea-orm-migration" -version = "2.0.0-rc.17" +version = "2.0.0-rc.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b7444940e5b7db32f55dea6d04cfb312480e45ae07753b1391311eccd5753475" +checksum = "4c70fc91069ee40ebecc35bb671adedbd5fd9352d9b09eeed228490df7934e78" dependencies = [ "async-trait", "sea-orm", @@ -1875,14 +2114,19 @@ dependencies = [ [[package]] name = "sea-query" -version = "1.0.0-rc.16" +version = "1.0.0-rc.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab2bc1fe7bb8366b536efc69a68e48321671a1030c565b206dc1a1a5ce1cf815" +checksum = "30d190945ff6b2914ef0631c1933ef67ee142b15f00b72d40bf241147d24b522" dependencies = [ + "bigdecimal", "chrono", "inherent", "ordered-float", + "rust_decimal", "sea-query-derive", + "serde_json", + "time", + "uuid", ] [[package]] @@ -1895,7 +2139,7 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn", + "syn 2.0.109", "thiserror", ] @@ -1905,18 +2149,23 @@ version = "0.8.0-rc.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68873fa1776b4c25a26e7679f8ee22332978c721168ec1b0b32b6583d5a9381d" dependencies = [ + "bigdecimal", "chrono", + "rust_decimal", "sea-query", + "serde_json", "sqlx", + "time", + "uuid", ] [[package]] name = "sea-schema" -version = "0.17.0-rc.10" +version = "0.17.0-rc.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1403428d34276a93f3eb4401730ba6346bd0d04cbbea8f6973916a35e726286f" +checksum = "09cb79f2d0fe3a3ca7852eb1c61590452674700fdeb9f07656b9eb16f8d1990b" dependencies = [ - "futures", + "async-trait", "sea-query", "sea-query-sqlx", "sea-schema-derive", @@ -1932,9 +2181,15 @@ dependencies = [ "heck 0.4.1", "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] +[[package]] +name = "seahash" +version = "4.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c107b6f4780854c8b126e228ea8869f4d7b71260f962fefb57b996b8959ba6b" + [[package]] name = "seamantic" version = "0.0.10" @@ -1972,7 +2227,7 @@ checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -2065,6 +2320,12 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "simdutf8" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a9fe34e3e7a50316060351f37187a3f546bce95496156754b601a5fa71b76e" + [[package]] name = "slab" version = "0.4.11" @@ -2138,6 +2399,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ee6798b1838b6a0f69c007c133b8df5866302197e404e8b6ee8ed3e3a5e68dc6" dependencies = [ "base64", + "bigdecimal", "bytes", "chrono", "crc", @@ -2155,16 +2417,19 @@ dependencies = [ "memchr", "once_cell", "percent-encoding", + "rust_decimal", "rustls", "serde", "serde_json", "sha2", "smallvec", "thiserror", + "time", "tokio", "tokio-stream", "tracing", "url", + "uuid", "webpki-roots 0.26.11", ] @@ -2178,7 +2443,7 @@ dependencies = [ "quote", "sqlx-core", "sqlx-macros-core", - "syn", + "syn 2.0.109", ] [[package]] @@ -2201,7 +2466,7 @@ dependencies = [ "sqlx-mysql", "sqlx-postgres", "sqlx-sqlite", - "syn", + "syn 2.0.109", "tokio", "url", ] @@ -2214,6 +2479,7 @@ checksum = "aa003f0038df784eb8fecbbac13affe3da23b45194bd57dba231c8f48199c526" dependencies = [ "atoi", "base64", + "bigdecimal", "bitflags", "byteorder", "bytes", @@ -2238,6 +2504,7 @@ dependencies = [ "percent-encoding", "rand 0.8.5", "rsa", + "rust_decimal", "serde", "sha1", "sha2", @@ -2245,7 +2512,9 @@ dependencies = [ "sqlx-core", "stringprep", "thiserror", + "time", "tracing", + "uuid", "whoami", ] @@ -2257,6 +2526,7 @@ checksum = "db58fcd5a53cf07c184b154801ff91347e4c30d17a3562a635ff028ad5deda46" dependencies = [ "atoi", "base64", + "bigdecimal", "bitflags", "byteorder", "chrono", @@ -2274,8 +2544,10 @@ dependencies = [ "log", "md-5", "memchr", + "num-bigint", "once_cell", "rand 0.8.5", + "rust_decimal", "serde", "serde_json", "sha2", @@ -2283,7 +2555,9 @@ dependencies = [ "sqlx-core", "stringprep", "thiserror", + "time", "tracing", + "uuid", "whoami", ] @@ -2308,8 +2582,10 @@ dependencies = [ "serde_urlencoded", "sqlx-core", "thiserror", + "time", "tracing", "url", + "uuid", ] [[package]] @@ -2355,9 +2631,20 @@ checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" [[package]] name = "syn" -version = "2.0.108" +version = "1.0.109" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" +checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "syn" +version = "2.0.109" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f17c7e013e88258aa9543dcbe81aca68a667a9ac37cd69c9fbc07858bfe0e2f" dependencies = [ "proc-macro2", "quote", @@ -2381,9 +2668,15 @@ checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] +[[package]] +name = "tap" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" + [[package]] name = "thiserror" version = "2.0.17" @@ -2401,7 +2694,7 @@ checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -2413,6 +2706,37 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "time" +version = "0.3.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" +dependencies = [ + "deranged", + "itoa", + "num-conv", + "powerfmt", + "serde", + "time-core", + "time-macros", +] + +[[package]] +name = "time-core" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" + +[[package]] +name = "time-macros" +version = "0.2.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" +dependencies = [ + "num-conv", + "time-core", +] + [[package]] name = "tinystr" version = "0.8.2" @@ -2461,7 +2785,7 @@ checksum = "af407857209536a95c8e56f8231ef2c2e2aff839b22e07a1ffcbc617e9db9fa5" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -2507,6 +2831,18 @@ dependencies = [ "serde_core", ] +[[package]] +name = "toml_edit" +version = "0.23.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" +dependencies = [ + "indexmap", + "toml_datetime", + "toml_parser", + "winnow", +] + [[package]] name = "toml_parser" version = "1.0.4" @@ -2581,7 +2917,7 @@ checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -2692,6 +3028,17 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" +[[package]] +name = "uuid" +version = "1.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" +dependencies = [ + "js-sys", + "serde", + "wasm-bindgen", +] + [[package]] name = "vcpkg" version = "0.2.15" @@ -2779,7 +3126,7 @@ dependencies = [ "bumpalo", "proc-macro2", "quote", - "syn", + "syn 2.0.109", "wasm-bindgen-shared", ] @@ -2861,7 +3208,7 @@ checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -2872,7 +3219,7 @@ checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -3126,6 +3473,9 @@ name = "winnow" version = "0.7.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" +dependencies = [ + "memchr", +] [[package]] name = "wit-bindgen" @@ -3139,6 +3489,15 @@ version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "yansi" version = "1.0.1" @@ -3164,7 +3523,7 @@ checksum = "b659052874eb698efe5b9e8cf382204678a0086ebf46982b79d6ca3182927e5d" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", "synstructure", ] @@ -3185,7 +3544,7 @@ checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] [[package]] @@ -3205,7 +3564,7 @@ checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", "synstructure", ] @@ -3245,5 +3604,5 @@ checksum = "eadce39539ca5cb3985590102671f2567e659fca9666581ad3411d59207951f3" dependencies = [ "proc-macro2", "quote", - "syn", + "syn 2.0.109", ] diff --git a/Cargo.toml b/Cargo.toml index 5897b26..8666e85 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -35,12 +35,12 @@ overflow-checks = true strip = "debuginfo" [workspace.dependencies] -flix = { path = "crates/flix", version = "=0.0.13", default-features = false } -flix-cli = { path = "crates/cli", version = "=0.0.13", default-features = false } -flix-db = { path = "crates/db", version = "=0.0.13", default-features = false } -flix-fs = { path = "crates/fs", version = "=0.0.13", default-features = false } -flix-model = { path = "crates/model", version = "=0.0.13", default-features = false } -flix-tmdb = { path = "crates/tmdb", version = "=0.0.13", default-features = false } +flix = { path = "crates/flix", version = "=0.0.14", default-features = false } +flix-cli = { path = "crates/cli", version = "=0.0.14", default-features = false } +flix-db = { path = "crates/db", version = "=0.0.14", default-features = false } +flix-fs = { path = "crates/fs", version = "=0.0.14", default-features = false } +flix-model = { path = "crates/model", version = "=0.0.14", default-features = false } +flix-tmdb = { path = "crates/tmdb", version = "=0.0.14", default-features = false } seamantic = { version = "0.0.10", default-features = false } diff --git a/crates/cli/Cargo.toml b/crates/cli/Cargo.toml index 2fd496c..45f6de6 100644 --- a/crates/cli/Cargo.toml +++ b/crates/cli/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix-cli" -version = "0.0.13" +version = "0.0.14" categories = ["command-line-utilities"] description = "CLI for interacting with a flix database" diff --git a/crates/cli/src/run/tmdb.rs b/crates/cli/src/run/tmdb.rs index 9c085d6..2939e67 100644 --- a/crates/cli/src/run/tmdb.rs +++ b/crates/cli/src/run/tmdb.rs @@ -49,7 +49,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R entity::tmdb::collections::ActiveModel { tmdb_id: Set(id), flix_id: Set(flix.id), - last_update: Set(Utc::now().date_naive()), + last_update: Set(Utc::now().naive_utc().date()), movie_count: Set(collection.movies.len().try_into().unwrap_or(0)), } .insert(txn) @@ -99,7 +99,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R entity::tmdb::movies::ActiveModel { tmdb_id: Set(id), flix_id: Set(flix.id), - last_update: Set(Utc::now().date_naive()), + last_update: Set(Utc::now().naive_utc().date()), runtime: Set(movie.runtime.into()), collection_id: Set(movie.collection.map(|c| c.id)), } @@ -144,7 +144,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R .with_context(|| { format!("seasons().get_details({}, {})", id.into_raw(), season) })?; - if season.air_date > Utc::now().date_naive() { + if season.air_date > Utc::now().naive_utc().date() { eprintln!( "skipping season ({}, {})", id.into_raw(), @@ -198,7 +198,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R entity::tmdb::shows::ActiveModel { tmdb_id: Set(id), flix_id: Set(flix.id), - last_update: Set(Utc::now().date_naive()), + last_update: Set(Utc::now().naive_utc().date()), number_of_seasons: Set(show.number_of_seasons), } .insert(txn) @@ -220,7 +220,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R tmdb_season: Set(season.season_number), flix_show: Set(flix.id), flix_season: Set(season.season_number), - last_update: Set(Utc::now().date_naive()), + last_update: Set(Utc::now().naive_utc().date()), } .insert(txn) .await?; @@ -246,7 +246,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R flix_show: Set(flix.id), flix_season: Set(season), flix_episode: Set(episode.episode_number), - last_update: Set(Utc::now().date_naive()), + last_update: Set(Utc::now().naive_utc().date()), runtime: Set(episode.runtime.into()), } .insert(txn) @@ -338,7 +338,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R tmdb_season: Set(season_number), flix_show: Set(show.flix_id), flix_season: Set(season_number), - last_update: Set(Utc::now().date_naive()), + last_update: Set(Utc::now().naive_utc().date()), } .insert(txn) .await?; @@ -362,7 +362,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R flix_show: Set(show.flix_id), flix_season: Set(season_number), flix_episode: Set(episode.episode_number), - last_update: Set(Utc::now().date_naive()), + last_update: Set(Utc::now().naive_utc().date()), runtime: Set(episode.runtime.into()), } .insert(txn) @@ -453,7 +453,7 @@ pub async fn add(client: Client, db: &DatabaseConnection, command: Command) -> R flix_show: Set(flix_id), flix_season: Set(season), flix_episode: Set(episode_number), - last_update: Set(Utc::now().date_naive()), + last_update: Set(Utc::now().naive_utc().date()), runtime: Set(episode.runtime.into()), } .insert(txn) diff --git a/crates/db/Cargo.toml b/crates/db/Cargo.toml index 6ef87df..6276769 100644 --- a/crates/db/Cargo.toml +++ b/crates/db/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix-db" -version = "0.0.13" +version = "0.0.14" categories = [] description = "Types for storing persistent data about media" diff --git a/crates/db/src/entity/content.rs b/crates/db/src/entity/content.rs index a2aa43b..1615c18 100644 --- a/crates/db/src/entity/content.rs +++ b/crates/db/src/entity/content.rs @@ -6,6 +6,7 @@ pub mod libraries { use seamantic::model::path::PathBytes; + use chrono::NaiveDateTime; use sea_orm::entity::prelude::*; /// The database representation of a library media folder @@ -18,6 +19,8 @@ pub mod libraries { pub id: LibraryId, /// The library's directory pub directory: PathBytes, + /// The library's last scan data + pub last_scan: Option, /// Collections that are part of this library #[sea_orm(has_many, on_update = "Cascade", on_delete = "Cascade")] @@ -312,6 +315,7 @@ pub mod test { $crate::entity::content::libraries::ActiveModel { id: Set(::flix_model::id::LibraryId::from_raw($id)), directory: Set(::std::path::PathBuf::new().into()), + last_scan: Set(None), } .insert($db) .await @@ -427,6 +431,7 @@ mod tests { use flix_model::id::{CollectionId, LibraryId, MovieId, ShowId}; + use chrono::{NaiveDate, NaiveDateTime, NaiveTime}; use sea_orm::ActiveValue::{NotSet, Set}; use sea_orm::entity::prelude::*; use sea_orm::sqlx::error::ErrorKind; @@ -466,6 +471,7 @@ mod tests { assert_eq!(model.id, LibraryId::from_raw($id)); assert_eq!(model.directory, Path::new(concat!("L Directory ", $id)).to_owned().into()); + assert_eq!(model.last_scan, noneable!(last_scan, NaiveDateTime::new(NaiveDate::from_yo_opt($id, 1).expect("from_yo_opt"), NaiveTime::from_hms_opt(1, 1, 1).expect("from_yo_opt")) $(, $($skip),+)?)); }; ($db:expr, $id:literal, $error:ident $(; $($skip:ident),+)?) => { let model = assert_library!(@insert, $db, $id $(; $($skip),+)?) @@ -477,6 +483,7 @@ mod tests { super::libraries::ActiveModel { id: notsettable!(id, LibraryId::from_raw($id) $(, $($skip),+)?), directory: notsettable!(directory, Path::new(concat!("L Directory ", $id)).to_owned().into() $(, $($skip),+)?), + last_scan: notsettable!(last_scan, Some(NaiveDateTime::new(NaiveDate::from_yo_opt($id, 1).expect("from_yo_opt"), NaiveTime::from_hms_opt(1, 1, 1).expect("from_yo_opt"))) $(, $($skip),+)?), }.insert($db).await }; } @@ -486,6 +493,7 @@ mod tests { assert_library!(&db, 2, Success); assert_library!(&db, 3, Success; id); assert_library!(&db, 4, NotNullViolation; directory); + assert_library!(&db, 5, Success; last_scan); } #[tokio::test] diff --git a/crates/flix/Cargo.toml b/crates/flix/Cargo.toml index 949e418..c025c67 100644 --- a/crates/flix/Cargo.toml +++ b/crates/flix/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix" -version = "0.0.13" +version = "0.0.14" categories = [] description = "Mechanisms for interacting with flix media" diff --git a/crates/fs/Cargo.toml b/crates/fs/Cargo.toml index 34fb873..c2d40e3 100644 --- a/crates/fs/Cargo.toml +++ b/crates/fs/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix-fs" -version = "0.0.13" +version = "0.0.14" categories = [] description = "Filesystem scanner for flix media" diff --git a/crates/model/Cargo.toml b/crates/model/Cargo.toml index 0e2568e..0464b89 100644 --- a/crates/model/Cargo.toml +++ b/crates/model/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix-model" -version = "0.0.13" +version = "0.0.14" categories = [] description = "Core types for flix data" diff --git a/crates/tmdb/Cargo.toml b/crates/tmdb/Cargo.toml index 90d8149..944c482 100644 --- a/crates/tmdb/Cargo.toml +++ b/crates/tmdb/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "flix-tmdb" -version = "0.0.13" +version = "0.0.14" categories = [] description = "Clients and models for fetching data from TMDB"