Add details for building
This commit is contained in:
@ -1,9 +1,8 @@
|
||||
use crate::listenbrainz;
|
||||
use crate::listenbrainz::StatsRange;
|
||||
use crate::models::TrackedPlaylist;
|
||||
use crate::subsonic::Subsonic;
|
||||
use crate::{listenbrainz, CONFIG};
|
||||
use sqlx::postgres::PgPool;
|
||||
use std::env;
|
||||
use std::time::Duration;
|
||||
use thiserror::Error;
|
||||
use tokio::time::{interval, MissedTickBehavior};
|
||||
@ -21,11 +20,19 @@ pub async fn update_playlists_daemon(
|
||||
) -> Result<(), Box<dyn std::error::Error>> {
|
||||
println!("Playlist daemon starting...");
|
||||
|
||||
let database = PgPool::connect(&env::var("DATABASE_URL").unwrap())
|
||||
.await
|
||||
.unwrap();
|
||||
let database = PgPool::connect(
|
||||
CONFIG
|
||||
.get()
|
||||
.unwrap()
|
||||
.get::<String>("database.url")?
|
||||
.as_str(),
|
||||
)
|
||||
.await
|
||||
.unwrap();
|
||||
|
||||
let mut ticker = interval(Duration::from_secs(env::var("UPDATE_INTERVAL")?.parse()?));
|
||||
let mut ticker = interval(Duration::from_secs(
|
||||
CONFIG.get().unwrap().get::<u64>("daemon.interval")?,
|
||||
));
|
||||
ticker.set_missed_tick_behavior(MissedTickBehavior::Skip);
|
||||
|
||||
loop {
|
||||
|
36
src/main.rs
36
src/main.rs
@ -11,28 +11,40 @@ use crate::subsonic::SubsonicBuilder;
|
||||
use axum::extract::State;
|
||||
use axum::routing::{get, put};
|
||||
use axum::{extract, Json, Router};
|
||||
use config::Config;
|
||||
use serde::Serialize;
|
||||
use sqlx::postgres::PgPool;
|
||||
use sqlx::Error;
|
||||
use std::collections::HashMap;
|
||||
use std::env;
|
||||
use std::sync::Arc;
|
||||
use tokio::sync::RwLock;
|
||||
use std::sync::OnceLock;
|
||||
|
||||
#[derive(Clone)]
|
||||
struct TrackState {
|
||||
tracks: Arc<RwLock<HashMap<String, String>>>,
|
||||
}
|
||||
pub static CONFIG: OnceLock<Config> = OnceLock::new();
|
||||
|
||||
#[tokio::main]
|
||||
async fn main() -> Result<(), Box<dyn std::error::Error>> {
|
||||
let database = PgPool::connect(&env::var("DATABASE_URL")?).await?;
|
||||
CONFIG
|
||||
.set(
|
||||
Config::builder()
|
||||
.add_source(config::File::with_name("/etc/playlistd").required(false))
|
||||
.add_source(config::Environment::default().separator("_"))
|
||||
.build()
|
||||
.unwrap(),
|
||||
)
|
||||
.unwrap();
|
||||
|
||||
let database = PgPool::connect(
|
||||
CONFIG
|
||||
.get()
|
||||
.unwrap()
|
||||
.get::<String>("database.url")?
|
||||
.as_str(),
|
||||
)
|
||||
.await?;
|
||||
sqlx::migrate!().run(&database).await?;
|
||||
|
||||
let media_client = SubsonicBuilder::new()
|
||||
.base(env::var("SUBSONIC_BASE")?)
|
||||
.username(env::var("SUBSONIC_USERNAME")?)
|
||||
.password(env::var("SUBSONIC_PASSWORD")?)
|
||||
.base(CONFIG.get().unwrap().get::<String>("subsonic.base")?)
|
||||
.username(CONFIG.get().unwrap().get::<String>("subsonic.username")?)
|
||||
.password(CONFIG.get().unwrap().get::<String>("subsonic.password")?)
|
||||
.build()?;
|
||||
|
||||
tokio::spawn(async move {
|
||||
|
Reference in New Issue
Block a user