mirror of
https://github.com/storytold/artcraft.git
synced 2026-11-09 11:31:27 +00:00
inner payload for media files
This commit is contained in:
1 parent
2a4a693466
commit
6fda5cc12c
5 files changed
+64
No files matched your search
+39
@@ -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;
|
||||
Reference in new issue
Block a user