reifydb_client/
lib.rs

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