reifydb_client/
lib.rs

1// Copyright (c) reifydb.com 2025
2// This file is licensed under the MIT
3
4mod client;
5pub mod http;
6pub mod session;
7mod utils;
8pub mod ws;
9
10pub use client::Client;
11pub use http::{HttpBlockingSession, HttpCallbackSession, HttpChannelSession, HttpClient, HttpResponseMessage};
12pub use reifydb_client_derive::FromFrame;
13pub use reifydb_type as r#type;
14use reifydb_type::diagnostic::Diagnostic;
15pub use reifydb_type::{
16	Frame, FrameColumn, FrameColumnData, FrameError, FrameRow, FrameRows, FromFrameError, FromValueError,
17	OrderedF32, OrderedF64, Params, TryFromValue, TryFromValueCoerce, Type, Value,
18};
19use serde::{Deserialize, Serialize};
20pub use session::{CommandResult, QueryResult};
21pub use ws::{
22	ChannelResponse, ResponseMessage, WsBlockingSession, WsCallbackSession, WsChannelSession, client::WsClient,
23};
24
25// ============================================================================
26// Request Types (matching server)
27// ============================================================================
28
29#[derive(Debug, Serialize, Deserialize)]
30pub struct Request {
31	pub id: String,
32	#[serde(flatten)]
33	pub payload: RequestPayload,
34}
35
36#[derive(Debug, Serialize, Deserialize)]
37#[serde(tag = "type", content = "payload")]
38pub enum RequestPayload {
39	Auth(AuthRequest),
40	Command(CommandRequest),
41	Query(QueryRequest),
42}
43
44#[derive(Debug, Serialize, Deserialize)]
45pub struct AuthRequest {
46	pub token: Option<String>,
47}
48
49#[derive(Debug, Serialize, Deserialize)]
50pub struct CommandRequest {
51	pub statements: Vec<String>,
52	pub params: Option<Params>,
53}
54
55#[derive(Debug, Serialize, Deserialize)]
56pub struct QueryRequest {
57	pub statements: Vec<String>,
58	pub params: Option<Params>,
59}
60
61// ============================================================================
62// Response Types (matching server)
63// ============================================================================
64
65#[derive(Debug, Serialize, Deserialize)]
66pub struct Response {
67	pub id: String,
68	#[serde(flatten)]
69	pub payload: ResponsePayload,
70}
71
72#[derive(Debug, Serialize, Deserialize)]
73#[serde(tag = "type", content = "payload")]
74pub enum ResponsePayload {
75	Auth(AuthResponse),
76	Err(ErrResponse),
77	Command(CommandResponse),
78	Query(QueryResponse),
79}
80
81#[derive(Debug, Serialize, Deserialize)]
82pub struct AuthResponse {}
83
84#[derive(Debug, Serialize, Deserialize)]
85pub struct ErrResponse {
86	pub diagnostic: Diagnostic,
87}
88
89#[derive(Debug, Serialize, Deserialize)]
90pub struct CommandResponse {
91	pub frames: Vec<WebsocketFrame>,
92}
93
94#[derive(Debug, Serialize, Deserialize)]
95pub struct QueryResponse {
96	pub frames: Vec<WebsocketFrame>,
97}
98
99#[derive(Debug, Clone, Serialize, Deserialize)]
100pub struct WebsocketFrame {
101	pub row_numbers: Vec<u64>,
102	pub columns: Vec<WebsocketColumn>,
103}
104
105#[derive(Debug, Clone, Serialize, Deserialize)]
106pub struct WebsocketColumn {
107	pub namespace: Option<String>,
108	pub store: Option<String>,
109	pub name: String,
110	pub r#type: Type,
111	pub data: Vec<String>,
112}