From fa85eb7182471a0fa15b7268e4c9adac326756f8 Mon Sep 17 00:00:00 2001 From: Jake Swenson Date: Sun, 16 May 2021 09:37:52 -0700 Subject: fix: Fixes issue #3, search can return objects (#5) --- src/models.rs | 29 +++++++++++++++++++++++------ 1 file changed, 23 insertions(+), 6 deletions(-) (limited to 'src/models.rs') diff --git a/src/models.rs b/src/models.rs index 2581e13..4051787 100644 --- a/src/models.rs +++ b/src/models.rs @@ -8,13 +8,14 @@ use crate::models::text::RichText; use serde::{Deserialize, Serialize}; use std::collections::HashMap; +use crate::models::paging::PagingCursor; use crate::Identifiable; pub use chrono::{DateTime, Utc}; pub use serde_json::value::Number; use std::fmt::{Display, Formatter}; #[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Copy, Clone)] -#[serde(rename_all = "lowercase")] +#[serde(rename_all = "snake_case")] enum ObjectType { Database, List, @@ -77,9 +78,9 @@ impl Identifiable for Database { #[derive(Serialize, Deserialize, Eq, PartialEq, Debug, Clone)] pub struct ListResponse { - results: Vec, - next_cursor: Option, - has_more: bool, + pub results: Vec, + pub next_cursor: Option, + pub has_more: bool, } impl ListResponse { @@ -136,17 +137,33 @@ pub struct Page { #[derive(Serialize, Deserialize, Debug, Eq, PartialEq, Clone)] pub struct Block {} -#[derive(Serialize, Deserialize, Clone)] +#[derive(Serialize, Deserialize, Clone, Debug, Eq, PartialEq)] #[serde(tag = "object")] +#[serde(rename_all = "snake_case")] pub enum Object { Database { #[serde(flatten)] database: Database, }, - Page {}, + Page { + #[serde(flatten)] + page: Page, + }, List { + #[serde(flatten)] list: ListResponse, }, + User { + #[serde(flatten)] + user: User, + }, + Block {}, +} + +impl Object { + pub fn is_database(&self) -> bool { + matches!(self, Object::Database { .. }) + } } /// A zero-cost wrapper type around a Page ID -- cgit v1.2.3