A decentralized music tracking and discovery platform built on AT Protocol 馃幍
at fix/track-metadata 44 lines 858 B view raw
1use std::{ 2 env, 3 sync::{Arc, Mutex}, 4}; 5 6use anyhow::Error; 7use duckdb::Connection; 8use sqlx::postgres::PgPoolOptions; 9 10use crate::core::create_tables; 11 12pub mod cmd; 13pub mod core; 14pub mod handlers; 15pub mod subscriber; 16pub mod types; 17pub mod xata; 18 19pub async fn serve() -> Result<(), Error> { 20 let conn = Connection::open("./rocksky-analytics.ddb")?; 21 22 create_tables(&conn).await?; 23 24 let conn = Arc::new(Mutex::new(conn)); 25 cmd::serve::serve(conn).await?; 26 27 Ok(()) 28} 29 30pub async fn sync() -> Result<(), Error> { 31 let pool = PgPoolOptions::new() 32 .max_connections(5) 33 .connect(&env::var("XATA_POSTGRES_URL")?) 34 .await?; 35 36 let conn = Connection::open("./rocksky-analytics.ddb")?; 37 create_tables(&conn).await?; 38 39 let conn = Arc::new(Mutex::new(conn)); 40 41 cmd::sync::sync(conn, &pool).await?; 42 43 Ok(()) 44}