melors 0.2.2

Keyboard-first terminal MP3 player with queue, search, and tag editing
use std::collections::HashSet;

use anyhow::Result;
use rusqlite::{Connection, OptionalExtension, params};

use crate::core::model::{PlaybackState, RepeatMode, Track, TrackInput};

mod migrations;
mod playback;
mod playlists;
mod queue;
mod tracks;
pub use playlists::{Playlist, PlaylistItem};

pub struct Storage {
    conn: Connection,
}

impl Storage {
    pub fn open(db_path: &std::path::Path) -> Result<Self> {
        let conn = Connection::open(db_path)?;
        conn.execute_batch("PRAGMA foreign_keys = ON;")?;
        let storage = Self { conn };
        storage.run_migrations()?;
        Ok(storage)
    }
}