Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 7 additions & 6 deletions collab/src/database/database.rs
Original file line number Diff line number Diff line change
Expand Up @@ -384,14 +384,14 @@ impl Database {
}
}

pub fn get_all_views(&self) -> Vec<DatabaseView> {
pub fn get_all_views(&self, include_embedded: bool) -> Vec<DatabaseView> {
let txn = self.collab.transact();
self
.body
.views
.get_all_views(&txn)
.get_all_views(&txn, include_embedded)
.into_iter()
.filter(|view| !view.is_inline)
.filter(|view| !view.is_inline && !view.embedded)
.collect()
}

Expand Down Expand Up @@ -1492,7 +1492,7 @@ impl Database {

let database_id = self.body.get_database_id(&txn)?;
let inline_view_id = self.body.get_inline_view_id(&txn);
let views = self.get_all_views();
let views = self.get_all_views(true);
let fields = self.body.get_fields_in_view(&txn, &inline_view_id, None);
let rows_stream = self.get_all_rows(chunk_size, None, auto_fetch).await?;
let rows: Vec<Row> = rows_stream
Expand Down Expand Up @@ -1571,7 +1571,7 @@ impl Database {
self
.body
.views
.get_all_views(&txn)
.get_all_views(&txn, false)
.first()
.map(|result| result.id.to_string())
}
Expand Down Expand Up @@ -1773,7 +1773,7 @@ where
.get_with_path::<_, _, MapRef>(&txn, [DATABASE, VIEWS])
{
let views = DatabaseViews::new(origin, container, None);
let mut reset_views = views.get_all_views(&txn);
let mut reset_views = views.get_all_views(&txn, true);

reset_views.iter_mut().for_each(f);
for view in reset_views {
Expand Down Expand Up @@ -2214,6 +2214,7 @@ impl DatabaseBody {
created_at: params.created_at,
modified_at: params.modified_at,
is_inline: false,
embedded: params.embedded,
};

trace!(
Expand Down
1 change: 1 addition & 0 deletions collab/src/database/database_remapper.rs
Original file line number Diff line number Diff line change
Expand Up @@ -163,6 +163,7 @@ impl DatabaseCollabRemapper {
group_settings: view.group_settings,
sorts: view.sorts,
field_settings: view.field_settings,
embedded: view.embedded,
created_at: timestamp,
modified_at: timestamp,
..Default::default()
Expand Down
7 changes: 7 additions & 0 deletions collab/src/database/entity.rs
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,8 @@ pub struct DatabaseView {
pub modified_at: i64,
#[serde(default)]
pub is_inline: bool,
#[serde(default)]
pub embedded: bool,
}

impl DatabaseView {
Expand Down Expand Up @@ -100,6 +102,7 @@ pub struct DatabaseViewMeta {
pub id: DatabaseViewId,
pub name: String,
pub is_inline: bool,
pub embedded: bool,
}

#[derive(Debug, Clone, Default, Serialize, Deserialize)]
Expand All @@ -123,6 +126,8 @@ pub struct CreateViewParams {
/// Each new field in `deps_fields` must also have an associated FieldSettings
/// that will be inserted into each view according to the view's layout type
pub deps_field_setting: Vec<HashMap<DatabaseLayout, FieldSettingsMap>>,
#[serde(default)]
pub embedded: bool,
}

impl CreateViewParams {
Expand Down Expand Up @@ -195,6 +200,7 @@ impl From<DatabaseView> for CreateViewParams {
group_settings: view.group_settings,
sorts: view.sorts,
field_settings: view.field_settings,
embedded: view.embedded,
..Default::default()
}
}
Expand Down Expand Up @@ -265,6 +271,7 @@ impl CreateDatabaseParams {
group_settings: view.group_settings,
sorts: view.sorts,
field_settings: view.field_settings,
embedded: view.embedded,
created_at: timestamp,
modified_at: timestamp,
..Default::default()
Expand Down
1 change: 1 addition & 0 deletions collab/src/database/template/util.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,7 @@ pub(crate) fn create_database_params_from_template(
modified_at: timestamp,
deps_fields: vec![],
deps_field_setting: vec![],
embedded: false,
});
}

Expand Down
1 change: 1 addition & 0 deletions collab/src/database/views/define.rs
Original file line number Diff line number Diff line change
Expand Up @@ -12,4 +12,5 @@ pub const DATABASE_VIEW_FIELD_ORDERS: &str = "field_orders";
pub const VIEW_CREATE_AT: &str = "created_at";
pub const VIEW_MODIFY_AT: &str = "modified_at";
pub const IS_INLINE: &str = "is_inline";
pub const EMBEDDED: &str = "embedded";
pub const VIEW_CALCULATIONS: &str = "calculations";
9 changes: 9 additions & 0 deletions collab/src/database/views/view.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,11 @@ impl<'a, 'b> DatabaseViewUpdate<'a, 'b> {
self
}

pub fn set_embedded(self, embedded: bool) -> Self {
self.map_ref.insert(self.txn, EMBEDDED, embedded);
self
}

pub fn set_database_id<T: AsRef<str>>(self, value: T) -> Self {
self
.map_ref
Expand Down Expand Up @@ -473,11 +478,13 @@ pub fn view_meta_from_value<T: ReadTxn>(value: YrsValue, txn: &T) -> Option<Data
let id: String = map_ref.get_with_txn(txn, VIEW_ID)?;
let name: String = map_ref.get_with_txn(txn, VIEW_NAME).unwrap_or_default();
let is_inline = map_ref.get_with_txn(txn, IS_INLINE).unwrap_or_default();
let embedded = map_ref.get_with_txn(txn, EMBEDDED).unwrap_or_default();
Some(DatabaseViewMeta {
id: crate::entity::uuid_validation::try_parse_database_view_id(&id)
.unwrap_or_else(crate::entity::uuid_validation::generate_database_view_id),
name,
is_inline,
embedded,
})
}

Expand Down Expand Up @@ -603,6 +610,7 @@ pub fn view_from_map_ref<T: ReadTxn>(map_ref: &MapRef, txn: &T) -> Option<Databa
.unwrap_or_default();

let is_inline: bool = map_ref.get_with_txn(txn, IS_INLINE).unwrap_or(false);
let embedded: bool = map_ref.get_with_txn(txn, EMBEDDED).unwrap_or(false);

Some(DatabaseView {
id: crate::entity::uuid_validation::try_parse_database_view_id(&id)
Expand All @@ -621,6 +629,7 @@ pub fn view_from_map_ref<T: ReadTxn>(map_ref: &MapRef, txn: &T) -> Option<Databa
created_at,
modified_at,
is_inline,
embedded,
})
}

Expand Down
6 changes: 4 additions & 2 deletions collab/src/database/views/view_map.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,8 @@ impl DatabaseViews {
.set_sorts(view.sorts)
.set_field_orders(view.field_orders)
.set_row_orders(view.row_orders)
.set_is_inline(view.is_inline);
.set_is_inline(view.is_inline)
.set_embedded(view.embedded);
});
}

Expand Down Expand Up @@ -159,11 +160,12 @@ impl DatabaseViews {
view_from_map_ref(&map_ref, txn)
}

pub fn get_all_views<T: ReadTxn>(&self, txn: &T) -> Vec<DatabaseView> {
pub fn get_all_views<T: ReadTxn>(&self, txn: &T, include_embedded: bool) -> Vec<DatabaseView> {
self
.container
.iter(txn)
.flat_map(|(_k, v)| view_from_value(v, txn))
.filter(|view| include_embedded || !view.embedded)
.collect::<Vec<_>>()
}

Expand Down
2 changes: 1 addition & 1 deletion collab/src/importer/notion/page.rs
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ impl NotionPage {
let mut resources = vec![content.resource];
let view_ids = content
.database
.get_all_views()
.get_all_views(false)
.into_iter()
.map(|view| view.id)
.collect::<Vec<_>>();
Expand Down
2 changes: 1 addition & 1 deletion collab/tests/importer/notion_test/import_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -521,7 +521,7 @@ async fn check_task_database(linked_view: &NotionPage) {

let csv_file = parse_csv(linked_view.notion_file.file_path().unwrap());
let database = linked_view.as_database().await.unwrap().database;
let views = database.get_all_views();
let views = database.get_all_views(true);
assert_eq!(views.len(), 1);
assert_eq!(linked_view.view_id, views[0].id.to_string());

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ async fn test_parse_real_database_json() {
assert_eq!(database.get_database_id().unwrap(), new_database_id);
}

let views = database.get_all_views();
let views = database.get_all_views(true);
assert_eq!(views.len(), 2);

for view in &views {
Expand Down
Loading