use config::define_config;
use config_derive::ConfigOption;
use serde::{Deserialize, Serialize};
use std::path::PathBuf;

define_config! {
    Language(Language),
    MusicPath(MusicPath),
    PlaylistDatabasePath(PlaylistDatabasePath),
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, ConfigOption)]
pub struct Language(String);

impl std::ops::Deref for Language {
    type Target = String;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, ConfigOption)]
pub struct MusicPath(PathBuf);

impl std::ops::Deref for MusicPath {
    type Target = PathBuf;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}

#[derive(Clone, Debug, PartialEq, Serialize, Deserialize, ConfigOption)]
pub struct PlaylistDatabasePath(PathBuf);

impl std::ops::Deref for PlaylistDatabasePath {
    type Target = PathBuf;
    fn deref(&self) -> &Self::Target {
        &self.0
    }
}