use serde::{Deserialize, Serialize};
use utoipa::ToSchema;
#[derive(Debug, Clone, Serialize, Deserialize, ToSchema)]
pub struct CourseIdentifier {
pub property_id: IdentifierType,
pub value: String,
#[serde(default)]
pub name: Option<String>,
#[serde(default)]
pub url: Option<String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, ToSchema)]
pub enum IdentifierType {
LmsCourseId,
CourseCode,
PlatformSlug,
Oer,
Doi,
Lom,
Wikidata,
Isced,
Ror,
Uri,
Uuid,
Custom(String),
}
impl IdentifierType {
pub fn is_deterministic(&self) -> bool {
matches!(
self,
IdentifierType::Doi
| IdentifierType::Wikidata
| IdentifierType::Lom
| IdentifierType::Uri
| IdentifierType::Uuid
| IdentifierType::Oer
)
}
}