inner payload for media files

This commit is contained in:
Brandon Thomas committed 2024-08-16 20:05:02 -04:00
1 parent 2a4a693466
commit 6fda5cc12c
5 files changed
+64

No files matched your search

@@ -0,0 +1,39 @@
use tokens::tokens::media_files::MediaFileToken;
/// For things that don't fit in the schema
#[derive(Clone, Debug, Default, Serialize, Deserialize, PartialEq, Eq)]
pub struct LivePortraitVideoExtraInfo {
/// The portrait image or video (main source)
#[serde(rename = "p")] // NB: DO NOT CHANGE. It could break live jobs. Renamed to be fewer bytes.
#[serde(skip_serializing_if = "Option::is_none")]
pub maybe_portrait_media_token: Option<MediaFileToken>,
/// The driver video (face animation driver)
#[serde(rename = "d")] // NB: DO NOT CHANGE. It could break live jobs. Renamed to be fewer bytes.
#[serde(skip_serializing_if = "Option::is_none")]
pub maybe_driver_video_media_token: Option<MediaFileToken>,
}
#[cfg(test)]
mod tests {
use tokens::tokens::media_files::MediaFileToken;
use crate::payloads::media_file_extra_info::inner_payloads::live_portrait_video_extra_info::LivePortraitVideoExtraInfo;
use crate::payloads::media_file_extra_info::media_file_extra_info::MediaFileExtraInfo;
#[test]
fn base_case() {
let payload = MediaFileExtraInfo::L(LivePortraitVideoExtraInfo {
maybe_portrait_media_token: Some(MediaFileToken::new_from_str("portrait")),
maybe_driver_video_media_token: Some(MediaFileToken::new_from_str("driver")),
});
let json = r#"{"L":{"p":"portrait","d":"driver"}}"#;
let serialized = payload.to_string().unwrap();
assert_eq!(&serialized, json);
let deserialized = MediaFileExtraInfo::from_str(&json).unwrap();
assert_eq!(deserialized, payload);
}
}
@@ -0,0 +1 @@
pub mod live_portrait_video_extra_info;
@@ -0,0 +1,21 @@
use errors::AnyhowResult;
use crate::payloads::media_file_extra_info::inner_payloads::live_portrait_video_extra_info::LivePortraitVideoExtraInfo;
/// For things that don't fit in the schema
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq)]
pub enum MediaFileExtraInfo {
/// Live Portrait Video
/// NB: Enum variant is short to conserve DB space.
/// NB: DO NOT CHANGE. It could break live jobs.
L(LivePortraitVideoExtraInfo),
}
impl MediaFileExtraInfo {
pub fn from_str(value: &str) -> AnyhowResult<Self> {
Ok(serde_json::from_str(value)?)
}
pub fn to_string(&self) -> AnyhowResult<String> {
Ok(serde_json::to_string(self)?)
}
}
@@ -0,0 +1,2 @@
pub mod inner_payloads;
pub mod media_file_extra_info;
@@ -2,5 +2,6 @@
pub mod email_sender_jobs;
pub mod generic_inference_args;
pub mod media_file_extra_info;
pub mod media_upload_modification_details;
pub mod prompt_args;