feat(api): add movie CRUD API (#56)
ci / web (push) Successful in 8s
e2e / e2e (push) Successful in 1m21s
ci / rust (push) Successful in 3m53s

This commit was merged in pull request #56.
This commit is contained in:
2026-08-22 20:40:31 +01:00
parent 302b7cfe72
commit 99ac79373d
18 changed files with 1271 additions and 4 deletions
+2
View File
@@ -12,9 +12,11 @@ path = "src/main.rs"
[dependencies]
arr-api = { workspace = true }
arr-db = { workspace = true }
axum = { workspace = true }
reqwest = { workspace = true }
serde = { workspace = true }
sqlx = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
toml = { workspace = true }
+9 -1
View File
@@ -5,6 +5,7 @@ mod config;
use std::process::ExitCode;
use arr_api::{AppState, Upstreams};
use arr_db::Db;
use config::Config;
use tower_http::trace::TraceLayer;
@@ -54,6 +55,10 @@ enum Error {
Config(#[from] config::ConfigError),
#[error("http client: {0}")]
HttpClient(#[from] reqwest::Error),
#[error("database: {0}")]
Database(#[from] sqlx::Error),
#[error("database migration: {0}")]
Migration(#[from] sqlx::migrate::MigrateError),
#[error("bind {addr}: {source}")]
Bind {
addr: std::net::SocketAddr,
@@ -65,12 +70,15 @@ enum Error {
async fn run() -> Result<(), Error> {
let config = Config::load()?;
let database = Db::connect(&config.database_path).await?;
database.migrate().await?;
let state = AppState::new(
Upstreams::new(config.prowlarr_url, config.transmission_url)
.with_prowlarr_api_key(config.prowlarr_api_key)
.with_tmdb_api_key(config.tmdb_api_key),
)?;
)?
.with_database(database);
let app = arr_api::router(state).layer(TraceLayer::new_for_http());