1mod 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#[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#[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}