use super::*;
#[cfg(feature = "stage_graph")]
use crate::stage::AssetStage;
#[async_trait]
pub trait AssetExt: DynClone + fmt::Debug + Send + Sync {
async fn assignees(
&mut self,
project: &Project,
asset: &ProductionAsset,
) -> Result<Vec<Staff>, DatabaseError>;
async fn statuses(
&mut self,
project: &Project,
asset: &ProductionAsset,
) -> Result<Vec<AssetStatus>, DatabaseError>;
async fn status_action_mut(
&mut self,
project: &Project,
asset: &ProductionAsset,
action: StatusAction,
) -> Result<(), ModificationError>;
fn clear_cache(&mut self) {}
}
dyn_clone::clone_trait_object!(AssetExt);
#[cfg(feature = "stage_graph")]
pub trait TrackedAsset: AssetExt + AssetStage {}
#[cfg(not(feature = "stage_graph"))]
pub trait TrackedAsset: AssetExt {}
dyn_clone::clone_trait_object!(TrackedAsset);