diff --git a/core/src/api/search.rs b/core/src/api/search.rs index bc5157d0d..98e9efb39 100644 --- a/core/src/api/search.rs +++ b/core/src/api/search.rs @@ -155,13 +155,30 @@ impl ObjectSearchOrdering { } } +#[derive(Deserialize, Type, Debug, Default)] +#[serde(rename_all = "camelCase")] +enum ObjectHiddenFilter { + #[default] + Exclude, + Include, +} + +impl Into> for ObjectHiddenFilter { + fn into(self) -> Option { + match self { + Self::Exclude => Some(object::hidden::not(true)), + Self::Include => None, + } + } +} + #[derive(Deserialize, Type, Debug, Default)] #[serde(rename_all = "camelCase")] struct ObjectFilterArgs { #[specta(optional)] favorite: Option, - #[specta(optional)] - hidden: Option, + #[serde(default)] + hidden: ObjectHiddenFilter, #[specta(optional)] date_accessed: Option>>>, #[serde(default)] @@ -175,8 +192,8 @@ impl ObjectFilterArgs { chain_optional_iter( [], [ + self.hidden.into(), self.favorite.map(object::favorite::equals), - self.hidden.map(object::hidden::equals), self.date_accessed .map(|date| date.into_prisma(object::date_accessed::equals)), (!self.kind.is_empty()) diff --git a/packages/client/src/core.ts b/packages/client/src/core.ts index 9d1dfaab2..0709c7e75 100644 --- a/packages/client/src/core.ts +++ b/packages/client/src/core.ts @@ -243,7 +243,9 @@ export type Nonce = { XChaCha20Poly1305: number[] } | { Aes256Gcm: number[] } export type Object = { id: number; pub_id: number[]; kind: number; key_id: number | null; hidden: boolean; favorite: boolean; important: boolean; has_thumbnail: boolean; has_thumbstrip: boolean; has_video_preview: boolean; ipfs_id: string | null; note: string | null; date_created: string; date_accessed: string | null } -export type ObjectFilterArgs = { favorite?: boolean | null; hidden?: boolean | null; dateAccessed?: MaybeNot | null; kind?: number[]; tags?: number[] } +export type ObjectFilterArgs = { favorite?: boolean | null; hidden?: ObjectHiddenFilter; dateAccessed?: MaybeNot | null; kind?: number[]; tags?: number[] } + +export type ObjectHiddenFilter = "exclude" | "include" export type ObjectSearchArgs = { take?: number | null; order?: ObjectSearchOrdering | null; cursor?: number[] | null; filter?: ObjectFilterArgs }