use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ThreadSearchRequest {
#[serde(rename = "ids", skip_serializing_if = "Option::is_none")]
pub ids: Option<Vec<uuid::Uuid>>,
#[serde(rename = "metadata", skip_serializing_if = "Option::is_none")]
pub metadata: Option<serde_json::Value>,
#[serde(rename = "values", skip_serializing_if = "Option::is_none")]
pub values: Option<serde_json::Value>,
#[serde(rename = "status", skip_serializing_if = "Option::is_none")]
pub status: Option<Status>,
#[serde(rename = "limit", skip_serializing_if = "Option::is_none")]
pub limit: Option<i32>,
#[serde(rename = "offset", skip_serializing_if = "Option::is_none")]
pub offset: Option<i32>,
#[serde(rename = "sort_by", skip_serializing_if = "Option::is_none")]
pub sort_by: Option<SortBy>,
#[serde(rename = "sort_order", skip_serializing_if = "Option::is_none")]
pub sort_order: Option<SortOrder>,
#[serde(rename = "select", skip_serializing_if = "Option::is_none")]
pub select: Option<Vec<Select>>,
}
impl ThreadSearchRequest {
pub fn new() -> ThreadSearchRequest {
ThreadSearchRequest {
ids: None,
metadata: None,
values: None,
status: None,
limit: None,
offset: None,
sort_by: None,
sort_order: None,
select: None,
}
}
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum Status {
#[serde(rename = "idle")]
#[default]
Idle,
#[serde(rename = "busy")]
Busy,
#[serde(rename = "interrupted")]
Interrupted,
#[serde(rename = "error")]
Error,
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum SortBy {
#[serde(rename = "thread_id")]
#[default]
ThreadId,
#[serde(rename = "status")]
Status,
#[serde(rename = "created_at")]
CreatedAt,
#[serde(rename = "updated_at")]
UpdatedAt,
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum SortOrder {
#[serde(rename = "asc")]
#[default]
Asc,
#[serde(rename = "desc")]
Desc,
}
#[derive(
Clone, Copy, Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize,
)]
pub enum Select {
#[serde(rename = "thread_id")]
#[default]
ThreadId,
#[serde(rename = "created_at")]
CreatedAt,
#[serde(rename = "updated_at")]
UpdatedAt,
#[serde(rename = "metadata")]
Metadata,
#[serde(rename = "config")]
Config,
#[serde(rename = "context")]
Context,
#[serde(rename = "status")]
Status,
#[serde(rename = "values")]
Values,
#[serde(rename = "interrupts")]
Interrupts,
}