use chrono::{DateTime, Utc}; use serde::{Deserialize, Serialize}; use serde_json::Value; pub use crate::database::{SortField, WhereClause, WhereCondition}; #[derive(Debug, Clone, Serialize, Deserialize, sqlx::FromRow)] #[serde(rename_all = "camelCase")] pub struct Record { pub uri: String, pub cid: String, pub did: String, pub collection: String, pub json: Value, pub indexed_at: DateTime, pub slice_uri: Option, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct IndexedRecord { pub uri: String, pub cid: String, pub did: String, pub collection: String, pub value: Value, pub indexed_at: String, } #[derive(Debug, Clone, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct BulkSyncParams { pub collections: Option>, pub external_collections: Option>, pub repos: Option>, pub limit_per_repo: Option, pub skip_validation: Option, pub max_repos: Option, } #[derive(Debug, Clone, Serialize, Deserialize, sqlx::FromRow)] #[serde(rename_all = "camelCase")] pub struct Actor { pub did: String, pub handle: Option, pub slice_uri: String, pub indexed_at: String, } #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct CollectionStats { pub collection: String, pub record_count: i64, pub unique_actors: i64, } #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SliceRecordsParams { pub slice: String, pub limit: Option, pub cursor: Option, #[serde(rename = "where")] pub where_clause: Option, pub sort_by: Option>, } #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SliceRecordsOutput { pub records: Vec, pub cursor: Option, } #[derive(Debug, Clone, Serialize, Deserialize, sqlx::FromRow)] #[serde(rename_all = "camelCase")] pub struct OAuthClient { pub id: i32, pub slice_uri: String, pub client_id: String, pub registration_access_token: Option, pub created_at: DateTime, pub created_by_did: String, } #[derive(Debug, Serialize, Deserialize)] #[serde(rename_all = "camelCase")] pub struct SparklinePoint { pub timestamp: String, pub count: i64, }