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

View File

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