1use crate::imp::{artifact::Artifact, core::*, prelude::*};
2
3#[derive(Debug, Clone)]
4pub(crate) struct Video {
5 artifact: Weak<Artifact>
6}
7
8impl Video {
9 pub(crate) fn new(artifact: Weak<Artifact>) -> Self { Self { artifact } }
10
11 pub(crate) fn path(&self) -> Result<PathBuf, Error> {
12 Ok(upgrade(&self.artifact)?.absolute_path.as_str().into())
13 }
14
15 pub(crate) async fn save_as<P: AsRef<Path>>(&self, path: P) -> ArcResult<()> {
16 upgrade(&self.artifact)?.save_as(path).await
17 }
18
19 pub(crate) async fn delete(&self) -> ArcResult<()> { upgrade(&self.artifact)?.delete().await }
20}