1extern crate alloc;
39
40pub mod convert;
41pub mod database;
42pub mod expr;
43pub mod query_builder;
44pub mod query_engine;
45pub mod reactive_bridge;
46pub mod table;
47pub mod transaction;
48pub mod binary_protocol;
49
50pub use convert::{js_to_row, js_to_value, row_to_js, value_to_js};
51pub use database::Database;
52pub use expr::{Column, Expr};
53pub use query_builder::{DeleteBuilder, InsertBuilder, SelectBuilder, UpdateBuilder};
54pub use reactive_bridge::{JsChangesStream, JsObservableQuery};
55pub use table::{JsTable, JsTableBuilder};
56pub use transaction::JsTransaction;
57pub use binary_protocol::{BinaryResult, SchemaLayout};
58
59use wasm_bindgen::prelude::*;
60
61#[wasm_bindgen(start)]
63pub fn init() {
64 }
66
67#[wasm_bindgen]
69#[derive(Clone, Copy, Debug, PartialEq, Eq)]
70pub enum JsDataType {
71 Boolean = 0,
72 Int32 = 1,
73 Int64 = 2,
74 Float64 = 3,
75 String = 4,
76 DateTime = 5,
77 Bytes = 6,
78 Jsonb = 7,
79}
80
81impl From<JsDataType> for cynos_core::DataType {
82 fn from(dt: JsDataType) -> Self {
83 match dt {
84 JsDataType::Boolean => cynos_core::DataType::Boolean,
85 JsDataType::Int32 => cynos_core::DataType::Int32,
86 JsDataType::Int64 => cynos_core::DataType::Int64,
87 JsDataType::Float64 => cynos_core::DataType::Float64,
88 JsDataType::String => cynos_core::DataType::String,
89 JsDataType::DateTime => cynos_core::DataType::DateTime,
90 JsDataType::Bytes => cynos_core::DataType::Bytes,
91 JsDataType::Jsonb => cynos_core::DataType::Jsonb,
92 }
93 }
94}
95
96impl From<cynos_core::DataType> for JsDataType {
97 fn from(dt: cynos_core::DataType) -> Self {
98 match dt {
99 cynos_core::DataType::Boolean => JsDataType::Boolean,
100 cynos_core::DataType::Int32 => JsDataType::Int32,
101 cynos_core::DataType::Int64 => JsDataType::Int64,
102 cynos_core::DataType::Float64 => JsDataType::Float64,
103 cynos_core::DataType::String => JsDataType::String,
104 cynos_core::DataType::DateTime => JsDataType::DateTime,
105 cynos_core::DataType::Bytes => JsDataType::Bytes,
106 cynos_core::DataType::Jsonb => JsDataType::Jsonb,
107 }
108 }
109}
110
111#[wasm_bindgen]
113#[derive(Clone, Copy, Debug, PartialEq, Eq)]
114pub enum JsSortOrder {
115 Asc = 0,
116 Desc = 1,
117}
118
119impl From<JsSortOrder> for cynos_query::ast::SortOrder {
120 fn from(order: JsSortOrder) -> Self {
121 match order {
122 JsSortOrder::Asc => cynos_query::ast::SortOrder::Asc,
123 JsSortOrder::Desc => cynos_query::ast::SortOrder::Desc,
124 }
125 }
126}
127
128#[wasm_bindgen]
130pub fn col(name: &str) -> Column {
131 Column::new_simple(name)
132}