fix: filter database that is in trash

This commit is contained in:
Zack Fu Zi Xiang 2024-11-27 18:46:09 +08:00
parent 7457371208
commit 50586b1ea7
No known key found for this signature in database
2 changed files with 23 additions and 17 deletions

View File

@ -447,21 +447,27 @@ pub async fn list_database(
)
.await?;
let trash = folder
.get_all_trash_sections()
.into_iter()
.map(|s| s.id)
.collect::<HashSet<_>>();
let mut af_databases = Vec::with_capacity(db_metas.len());
for db_meta in db_metas {
let id = db_meta.database_id;
let views: Vec<FolderViewMinimal> = db_meta
.linked_views
.into_iter()
.map(|view_id| {
folder
.get_view(&view_id)
.map(|view| to_dto_folder_view_miminal(&view))
.unwrap_or_default()
})
.collect();
let mut views: Vec<FolderViewMinimal> = Vec::new();
for linked_view_id in db_meta.linked_views {
if !trash.contains(&linked_view_id) {
if let Some(folder_view) = folder.get_view(&linked_view_id) {
views.push(to_dto_folder_view_miminal(&folder_view));
};
}
}
if !views.is_empty() {
af_databases.push(AFDatabase { id, views });
}
}
Ok(af_databases)
}
@ -822,7 +828,7 @@ fn type_options_serde(
match field_type {
FieldType::SingleSelect | FieldType::MultiSelect | FieldType::Media => {
if let yrs::Any::String(arc_str) = value {
if let Ok(serde_value) = serde_json::from_str::<serde_json::Value>(&arc_str) {
if let Ok(serde_value) = serde_json::from_str::<serde_json::Value>(arc_str) {
result.insert(key.clone(), serde_value);
}
}

View File

@ -35,8 +35,8 @@ async fn workspace_list_database() {
.unwrap();
// convert to hashset to check for equeality
let actual = db_fields.sort_by(|a, b| a.id.cmp(&b.id));
let expected = vec![
db_fields.sort_by(|a, b| a.id.cmp(&b.id));
let mut expected = vec![
AFDatabaseField {
id: "wdX8DG".to_string(),
name: "Multiselect".to_string(),
@ -118,9 +118,9 @@ async fn workspace_list_database() {
},
is_primary: false,
},
]
.sort_by(|a, b| a.id.cmp(&b.id));
assert_eq!(actual, expected, "{:#?}", db_fields);
];
expected.sort_by(|a, b| a.id.cmp(&b.id));
assert_eq!(db_fields, expected, "{:#?}", db_fields);
}
{
let db_row_ids = c