This commit is contained in:
parent
5cb53cbe72
commit
08a140054e
2 changed files with 61 additions and 6 deletions
|
|
@ -245,6 +245,49 @@ pub async fn update_video_in_db(
|
||||||
.to_str()
|
.to_str()
|
||||||
.map(std::string::ToString::to_string)
|
.map(std::string::ToString::to_string)
|
||||||
.unwrap_or_default();
|
.unwrap_or_default();
|
||||||
|
let mut db = db.detach();
|
||||||
|
let id = video.id.clone();
|
||||||
|
if let Err(e) = query!("SELECT id FROM videos where id = $1", id)
|
||||||
|
.fetch_one(&mut db)
|
||||||
|
.await
|
||||||
|
{
|
||||||
|
if let Ok(ids) =
|
||||||
|
query!("SELECT id FROM videos").fetch_all(&mut db).await
|
||||||
|
{
|
||||||
|
let Some(mut max) = ids.iter().map(|r| r.id).max() else {
|
||||||
|
return Err(miette::miette!("cannot find max id"));
|
||||||
|
};
|
||||||
|
debug!(?e, "Video not found");
|
||||||
|
max += 1;
|
||||||
|
let result = query!(
|
||||||
|
r#"INSERT into videos VALUES($1, $2, $3, $4, $5, $6)"#,
|
||||||
|
max,
|
||||||
|
video.title,
|
||||||
|
path,
|
||||||
|
video.start_time,
|
||||||
|
video.end_time,
|
||||||
|
video.looping,
|
||||||
|
)
|
||||||
|
.execute(&mut db)
|
||||||
|
.await
|
||||||
|
.into_diagnostic();
|
||||||
|
|
||||||
|
return match result {
|
||||||
|
Ok(_) => {
|
||||||
|
debug!("should have been updated");
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
Err(e) => {
|
||||||
|
error! {?e};
|
||||||
|
Err(e)
|
||||||
|
}
|
||||||
|
};
|
||||||
|
} else {
|
||||||
|
return Err(miette::miette!("cannot find ids"));
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
debug!(?video, "should be been updated");
|
||||||
let result = query!(
|
let result = query!(
|
||||||
r#"UPDATE videos SET title = $2, file_path = $3, start_time = $4, end_time = $5, loop = $6 WHERE id = $1"#,
|
r#"UPDATE videos SET title = $2, file_path = $3, start_time = $4, end_time = $5, loop = $6 WHERE id = $1"#,
|
||||||
video.id,
|
video.id,
|
||||||
|
|
@ -254,11 +297,14 @@ pub async fn update_video_in_db(
|
||||||
video.end_time,
|
video.end_time,
|
||||||
video.looping,
|
video.looping,
|
||||||
)
|
)
|
||||||
.execute(&mut db.detach())
|
.execute(&mut db)
|
||||||
.await.into_diagnostic();
|
.await.into_diagnostic();
|
||||||
|
|
||||||
match result {
|
match result {
|
||||||
Ok(_) => Ok(()),
|
Ok(_) => {
|
||||||
|
debug!("should have been updated");
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
error! {?e};
|
error! {?e};
|
||||||
Err(e)
|
Err(e)
|
||||||
|
|
|
||||||
|
|
@ -90,18 +90,27 @@ impl VideoEditor {
|
||||||
return Action::UpdateVideo(video);
|
return Action::UpdateVideo(video);
|
||||||
}
|
}
|
||||||
Message::PickVideo => {
|
Message::PickVideo => {
|
||||||
let task =
|
let video_id = self
|
||||||
Task::perform(pick_video(), |video_result| {
|
.core_video
|
||||||
|
.as_ref()
|
||||||
|
.map(|v| v.id)
|
||||||
|
.unwrap_or_default()
|
||||||
|
.clone();
|
||||||
|
let task = Task::perform(
|
||||||
|
pick_video(),
|
||||||
|
move |video_result| {
|
||||||
if let Ok(video) = video_result {
|
if let Ok(video) = video_result {
|
||||||
let video =
|
let mut video =
|
||||||
crate::core::videos::Video::from(
|
crate::core::videos::Video::from(
|
||||||
video,
|
video,
|
||||||
);
|
);
|
||||||
|
video.id = video_id;
|
||||||
Message::ChangeVideo(video)
|
Message::ChangeVideo(video)
|
||||||
} else {
|
} else {
|
||||||
Message::None
|
Message::None
|
||||||
}
|
}
|
||||||
});
|
},
|
||||||
|
);
|
||||||
return Action::Task(task);
|
return Action::Task(task);
|
||||||
}
|
}
|
||||||
Message::None => (),
|
Message::None => (),
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue