2023-08-13 23:58:53 +02:00
|
|
|
use std::io::{Read, Write};
|
|
|
|
|
|
|
|
use crate::load::ToFromBytes;
|
|
|
|
|
|
|
|
use super::{AlbumId, ArtistId, CoverId, GeneralData, SongId};
|
|
|
|
|
|
|
|
#[derive(Clone, Debug)]
|
|
|
|
pub struct Album {
|
|
|
|
pub id: AlbumId,
|
|
|
|
pub name: String,
|
2023-09-11 18:50:22 +02:00
|
|
|
pub artist: ArtistId,
|
2023-08-13 23:58:53 +02:00
|
|
|
pub cover: Option<CoverId>,
|
|
|
|
pub songs: Vec<SongId>,
|
|
|
|
pub general: GeneralData,
|
|
|
|
}
|
|
|
|
|
|
|
|
impl ToFromBytes for Album {
|
|
|
|
fn to_bytes<T>(&self, s: &mut T) -> Result<(), std::io::Error>
|
|
|
|
where
|
|
|
|
T: Write,
|
|
|
|
{
|
|
|
|
self.id.to_bytes(s)?;
|
|
|
|
self.name.to_bytes(s)?;
|
|
|
|
self.artist.to_bytes(s)?;
|
|
|
|
self.songs.to_bytes(s)?;
|
|
|
|
self.cover.to_bytes(s)?;
|
|
|
|
self.general.to_bytes(s)?;
|
|
|
|
Ok(())
|
|
|
|
}
|
|
|
|
fn from_bytes<T>(s: &mut T) -> Result<Self, std::io::Error>
|
|
|
|
where
|
|
|
|
T: Read,
|
|
|
|
{
|
|
|
|
Ok(Self {
|
|
|
|
id: ToFromBytes::from_bytes(s)?,
|
|
|
|
name: ToFromBytes::from_bytes(s)?,
|
|
|
|
artist: ToFromBytes::from_bytes(s)?,
|
|
|
|
songs: ToFromBytes::from_bytes(s)?,
|
|
|
|
cover: ToFromBytes::from_bytes(s)?,
|
|
|
|
general: ToFromBytes::from_bytes(s)?,
|
|
|
|
})
|
|
|
|
}
|
|
|
|
}
|