extern crate alloc;
#[cfg(not(feature = "std"))]
use alloc::{format, string::{String, ToString}, vec::Vec};
#[cfg(feature = "std")]
use alloc::{format, string::String, vec::Vec};
use midds_types_codegen::{midds_collection, midds_string};
#[cfg(feature = "js")]
use wasm_bindgen::prelude::*;
use frame_support::sp_runtime::RuntimeDebug;
use parity_scale_codec::{Decode, DecodeWithMemTracking, Encode, MaxEncodedLen};
use scale_info::TypeInfo;
use crate::MiddsId;
use crate::track::{TrackTitle, TrackTitleAliases};
#[midds_string(13)]
pub struct Ean;
pub type ReleaseTitle = TrackTitle;
pub type ReleaseTitleAliases = TrackTitleAliases;
#[midds_collection(MiddsId, 256)]
pub struct ReleaseProducers;
#[midds_collection(MiddsId, 1024)]
pub struct ReleaseTracks;
#[midds_string(256)]
pub struct ReleaseDistributor;
#[midds_string(256)]
pub struct ReleaseManufacturer;
#[midds_string(256)]
pub struct ReleaseCoverContributor;
#[midds_collection(ReleaseCoverContributor, 64)]
pub struct ReleaseCoverContributors;
#[repr(u8)]
#[derive(
Clone,
Copy,
PartialEq,
Eq,
Encode,
Decode,
DecodeWithMemTracking,
TypeInfo,
MaxEncodedLen,
RuntimeDebug,
)]
#[cfg_attr(feature = "js", wasm_bindgen)]
pub enum ReleaseType {
Lp = 0,
DoubleLp = 1,
Ep = 2,
Single = 3,
Mixtape = 4,
}
#[repr(u8)]
#[derive(
Clone,
Copy,
PartialEq,
Eq,
Encode,
Decode,
DecodeWithMemTracking,
TypeInfo,
MaxEncodedLen,
RuntimeDebug,
)]
#[cfg_attr(feature = "js", wasm_bindgen)]
pub enum ReleaseFormat {
Cd = 0,
DoubleCd = 1,
Vynil7 = 2,
Vinyl10 = 3,
Cassette = 4,
AudioDvd = 5,
}
#[repr(u8)]
#[derive(
Clone,
Copy,
PartialEq,
Eq,
Encode,
Decode,
DecodeWithMemTracking,
TypeInfo,
MaxEncodedLen,
RuntimeDebug,
)]
#[cfg_attr(feature = "js", wasm_bindgen)]
pub enum ReleasePackaging {
Digipack = 0,
JewelCase = 1,
SnapCase = 2,
}
#[repr(u8)]
#[derive(
Clone,
Copy,
PartialEq,
Eq,
Encode,
Decode,
DecodeWithMemTracking,
TypeInfo,
MaxEncodedLen,
RuntimeDebug,
)]
#[cfg_attr(feature = "js", wasm_bindgen)]
pub enum ReleaseStatus {
Official = 0,
Promotional = 1,
ReRelease = 2,
SpecialEdition = 3,
Remastered = 4,
Bootleg = 5,
PseudoRelease = 6,
Withdrawn = 7,
Expunged = 8,
Cancelled = 9,
}