fix: filter database that is in trash
This commit is contained in:
parent
7457371208
commit
50586b1ea7
|
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -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
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue