aboutsummaryrefslogtreecommitdiff
path: root/src/models.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/models.rs')
-rw-r--r--src/models.rs50
1 files changed, 18 insertions, 32 deletions
diff --git a/src/models.rs b/src/models.rs
index 99ee203..734ece5 100644
--- a/src/models.rs
+++ b/src/models.rs
@@ -9,7 +9,7 @@ use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use crate::models::paging::PagingCursor;
-use crate::Identifiable;
+use crate::AsIdentifier;
pub use chrono::{DateTime, Utc};
pub use serde_json::value::Number;
use std::fmt::{Display, Formatter};
@@ -32,14 +32,6 @@ impl DatabaseId {
}
}
-impl Identifiable for DatabaseId {
- type Type = DatabaseId;
-
- fn id(&self) -> &Self::Type {
- self
- }
-}
-
impl Display for DatabaseId {
fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
self.0.fmt(f)
@@ -68,11 +60,9 @@ pub struct Database {
properties: HashMap<String, PropertyConfiguration>,
}
-impl Identifiable for Database {
- type Type = DatabaseId;
-
- fn id(&self) -> &Self::Type {
- &self.id
+impl AsIdentifier<DatabaseId> for Database {
+ fn id(&self) -> DatabaseId {
+ self.id.clone()
}
}
@@ -222,10 +212,8 @@ pub enum Block {
Unsupported,
}
-impl Identifiable for Block {
- type Type = BlockId;
-
- fn id(&self) -> &Self::Type {
+impl AsIdentifier<BlockId> for Block {
+ fn id(&self) -> BlockId {
use Block::*;
match self {
Paragraph { common, .. }
@@ -236,7 +224,7 @@ impl Identifiable for Block {
| NumberedListItem { common, .. }
| ToDo { common, .. }
| Toggle { common, .. }
- | ChildPage { common, .. } => &common.id,
+ | ChildPage { common, .. } => common.id.clone(),
Unsupported {} => {
panic!("Trying to reference identifier for unsupported block!")
}
@@ -244,11 +232,15 @@ impl Identifiable for Block {
}
}
-impl Identifiable for Page {
- type Type = PageId;
+impl AsIdentifier<PageId> for Page {
+ fn id(&self) -> PageId {
+ self.id.clone()
+ }
+}
- fn id(&self) -> &Self::Type {
- &self.id
+impl AsIdentifier<BlockId> for Page {
+ fn id(&self) -> BlockId {
+ self.id.clone().into()
}
}
@@ -286,17 +278,11 @@ impl BlockId {
pub fn id(&self) -> &str {
&self.0
}
-
- pub fn from(page_id: &PageId) -> Self {
- BlockId(page_id.clone().0)
- }
}
-impl Identifiable for BlockId {
- type Type = BlockId;
-
- fn id(&self) -> &Self::Type {
- self
+impl From<PageId> for BlockId {
+ fn from(page_id: PageId) -> Self {
+ BlockId(page_id.0.clone())
}
}