Dedup paths on create document
This commit is contained in:
parent
10fd928459
commit
aa3c587002
4 changed files with 48 additions and 19 deletions
24
sync-server/src/utils/find_first_available_path.rs
Normal file
24
sync-server/src/utils/find_first_available_path.rs
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
use crate::app_state::database::models::VaultId;
|
||||
use crate::{app_state::database::Transaction, utils::dedup_paths::dedup_paths};
|
||||
use anyhow::Result;
|
||||
|
||||
pub async fn find_first_available_path(
|
||||
vault_id: &VaultId,
|
||||
sanitized_relative_path: &str,
|
||||
database: &crate::app_state::database::Database,
|
||||
transaction: &mut Transaction<'_>,
|
||||
) -> Result<String> {
|
||||
let mut new_relative_path = String::default();
|
||||
for candidate in dedup_paths(&sanitized_relative_path) {
|
||||
if database
|
||||
.get_latest_document_by_path(&vault_id, &candidate, Some(transaction))
|
||||
.await?
|
||||
.is_none()
|
||||
{
|
||||
new_relative_path = candidate;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Ok(new_relative_path)
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue