Ensure types can be serialized/deserialized to the datastore
This commit is contained in:
parent
10c0b5c732
commit
63113f83c3
23 changed files with 76 additions and 50 deletions
11
Cargo.lock
generated
11
Cargo.lock
generated
|
@ -2160,6 +2160,7 @@ dependencies = [
|
|||
"sha-1 0.10.0",
|
||||
"sha2",
|
||||
"slug",
|
||||
"surrealdb-derive",
|
||||
"thiserror",
|
||||
"tikv-client",
|
||||
"tokio",
|
||||
|
@ -2169,6 +2170,16 @@ dependencies = [
|
|||
"uuid",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "surrealdb-derive"
|
||||
version = "0.1.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "360979ea6e0588e857878b2578f0b0844d57a732cb7824a6964cb7ea3206cb3f"
|
||||
dependencies = [
|
||||
"quote",
|
||||
"syn",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "syn"
|
||||
version = "1.0.86"
|
||||
|
|
|
@ -19,6 +19,7 @@ async-recursion = "1.0.0"
|
|||
byteorder = "1.4.3"
|
||||
chrono = { version = "0.4.19", features = ["serde"] }
|
||||
dec = { version = "1.21.0", package = "rust_decimal", features = ["maths", "serde-float"] }
|
||||
derive = { version = "0.1.0", package = "surrealdb-derive" }
|
||||
dmp = "0.1.1"
|
||||
echodb = { version = "0.2.0", optional = true }
|
||||
futures = "0.3.21"
|
||||
|
|
|
@ -9,6 +9,12 @@ pub struct Document<'a> {
|
|||
pub(super) initial: Cow<'a, Value>,
|
||||
}
|
||||
|
||||
impl<'a> Into<Vec<u8>> for &Document<'a> {
|
||||
fn into(self) -> Vec<u8> {
|
||||
msgpack::to_vec(&self.current).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Document<'a> {
|
||||
pub fn new(id: Option<Thing>, val: &'a Value) -> Self {
|
||||
Document {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use crate::sql::comment::shouldbespace;
|
||||
use crate::sql::error::IResult;
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
|
@ -7,7 +8,7 @@ use nom::sequence::tuple;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct BeginStatement;
|
||||
|
||||
impl fmt::Display for BeginStatement {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use crate::sql::comment::shouldbespace;
|
||||
use crate::sql::error::IResult;
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
|
@ -7,7 +8,7 @@ use nom::sequence::tuple;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct CancelStatement;
|
||||
|
||||
impl fmt::Display for CancelStatement {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
use crate::sql::comment::shouldbespace;
|
||||
use crate::sql::error::IResult;
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
|
@ -7,7 +8,7 @@ use nom::sequence::tuple;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct CommitStatement;
|
||||
|
||||
impl fmt::Display for CommitStatement {
|
||||
|
|
|
@ -10,13 +10,14 @@ use crate::sql::error::IResult;
|
|||
use crate::sql::output::{output, Output};
|
||||
use crate::sql::timeout::{timeout, Timeout};
|
||||
use crate::sql::value::{whats, Value, Values};
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
use nom::sequence::preceded;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct CreateStatement {
|
||||
pub what: Values,
|
||||
pub data: Option<Data>,
|
||||
|
|
|
@ -17,6 +17,7 @@ use crate::sql::permission::{permissions, Permissions};
|
|||
use crate::sql::strand::strand_raw;
|
||||
use crate::sql::value::{value, values, Value, Values};
|
||||
use crate::sql::view::{view, View};
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::{map, opt};
|
||||
|
@ -25,7 +26,7 @@ use nom::sequence::tuple;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub enum DefineStatement {
|
||||
Namespace(DefineNamespaceStatement),
|
||||
Database(DefineDatabaseStatement),
|
||||
|
@ -94,7 +95,7 @@ pub fn define(i: &str) -> IResult<&str, DefineStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineNamespaceStatement {
|
||||
pub name: String,
|
||||
}
|
||||
|
@ -138,7 +139,7 @@ fn namespace(i: &str) -> IResult<&str, DefineNamespaceStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineDatabaseStatement {
|
||||
pub name: String,
|
||||
}
|
||||
|
@ -182,7 +183,7 @@ fn database(i: &str) -> IResult<&str, DefineDatabaseStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineLoginStatement {
|
||||
pub name: String,
|
||||
pub base: Base,
|
||||
|
@ -280,7 +281,7 @@ fn login_hash(i: &str) -> IResult<&str, DefineLoginOption> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineTokenStatement {
|
||||
pub name: String,
|
||||
pub base: Base,
|
||||
|
@ -350,7 +351,7 @@ fn token(i: &str) -> IResult<&str, DefineTokenStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineScopeStatement {
|
||||
pub name: String,
|
||||
pub session: Option<Duration>,
|
||||
|
@ -472,7 +473,7 @@ fn scope_connect(i: &str) -> IResult<&str, DefineScopeOption> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineTableStatement {
|
||||
pub name: String,
|
||||
pub drop: bool,
|
||||
|
@ -604,7 +605,7 @@ fn table_permissions(i: &str) -> IResult<&str, DefineTableOption> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineEventStatement {
|
||||
pub name: String,
|
||||
pub what: String,
|
||||
|
@ -671,7 +672,7 @@ fn event(i: &str) -> IResult<&str, DefineEventStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineFieldStatement {
|
||||
pub name: Idiom,
|
||||
pub what: String,
|
||||
|
@ -813,7 +814,7 @@ fn field_permissions(i: &str) -> IResult<&str, DefineFieldOption> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DefineIndexStatement {
|
||||
pub name: String,
|
||||
pub what: String,
|
||||
|
|
|
@ -10,6 +10,7 @@ use crate::sql::error::IResult;
|
|||
use crate::sql::output::{output, Output};
|
||||
use crate::sql::timeout::{timeout, Timeout};
|
||||
use crate::sql::value::{whats, Value, Values};
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
use nom::sequence::preceded;
|
||||
|
@ -17,7 +18,7 @@ use nom::sequence::tuple;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct DeleteStatement {
|
||||
pub what: Values,
|
||||
pub cond: Option<Cond>,
|
||||
|
|
|
@ -5,13 +5,14 @@ use crate::err::Error;
|
|||
use crate::sql::comment::shouldbespace;
|
||||
use crate::sql::error::IResult;
|
||||
use crate::sql::value::{value, Value};
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
use nom::multi::separated_list0;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct IfelseStatement {
|
||||
pub exprs: Vec<(Value, Value)>,
|
||||
pub close: Option<Value>,
|
||||
|
|
|
@ -7,12 +7,13 @@ use crate::sql::comment::shouldbespace;
|
|||
use crate::sql::error::IResult;
|
||||
use crate::sql::ident::ident_raw;
|
||||
use crate::sql::value::Value;
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub enum InfoStatement {
|
||||
Namespace,
|
||||
Database,
|
||||
|
|
|
@ -11,6 +11,7 @@ use crate::sql::output::{output, Output};
|
|||
use crate::sql::table::{table, Table};
|
||||
use crate::sql::timeout::{timeout, Timeout};
|
||||
use crate::sql::value::Value;
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
|
@ -18,7 +19,7 @@ use nom::sequence::preceded;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct InsertStatement {
|
||||
pub into: Table,
|
||||
pub data: Data,
|
||||
|
|
|
@ -6,11 +6,12 @@ use crate::sql::comment::shouldbespace;
|
|||
use crate::sql::error::IResult;
|
||||
use crate::sql::ident::{ident, Ident};
|
||||
use crate::sql::value::Value;
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct KillStatement {
|
||||
pub id: Ident,
|
||||
}
|
||||
|
|
|
@ -9,13 +9,14 @@ use crate::sql::fetch::{fetch, Fetchs};
|
|||
use crate::sql::field::{fields, Fields};
|
||||
use crate::sql::value::Value;
|
||||
use crate::sql::value::{whats, Values};
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
use nom::sequence::preceded;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct LiveStatement {
|
||||
pub expr: Fields,
|
||||
pub what: Values,
|
||||
|
|
|
@ -2,6 +2,7 @@ use crate::sql::comment::mightbespace;
|
|||
use crate::sql::comment::shouldbespace;
|
||||
use crate::sql::error::IResult;
|
||||
use crate::sql::ident::{ident, Ident};
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
|
@ -10,7 +11,7 @@ use nom::sequence::tuple;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct OptionStatement {
|
||||
pub name: Ident,
|
||||
pub what: bool,
|
||||
|
|
|
@ -5,11 +5,12 @@ use crate::err::Error;
|
|||
use crate::sql::comment::shouldbespace;
|
||||
use crate::sql::error::IResult;
|
||||
use crate::sql::value::{value, Value};
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct OutputStatement {
|
||||
pub what: Value,
|
||||
}
|
||||
|
|
|
@ -12,6 +12,7 @@ use crate::sql::output::{output, Output};
|
|||
use crate::sql::table::{table, Table};
|
||||
use crate::sql::timeout::{timeout, Timeout};
|
||||
use crate::sql::value::{whats, Value, Values};
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
|
@ -20,7 +21,7 @@ use nom::sequence::preceded;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RelateStatement {
|
||||
pub kind: Table,
|
||||
pub from: Values,
|
||||
|
|
|
@ -8,6 +8,7 @@ use crate::sql::comment::shouldbespace;
|
|||
use crate::sql::error::IResult;
|
||||
use crate::sql::ident::ident_raw;
|
||||
use crate::sql::value::Value;
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::{map, opt};
|
||||
|
@ -15,7 +16,7 @@ use nom::sequence::tuple;
|
|||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub enum RemoveStatement {
|
||||
Namespace(RemoveNamespaceStatement),
|
||||
Database(RemoveDatabaseStatement),
|
||||
|
@ -84,7 +85,7 @@ pub fn remove(i: &str) -> IResult<&str, RemoveStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveNamespaceStatement {
|
||||
pub name: String,
|
||||
}
|
||||
|
@ -128,7 +129,7 @@ fn namespace(i: &str) -> IResult<&str, RemoveNamespaceStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveDatabaseStatement {
|
||||
pub name: String,
|
||||
}
|
||||
|
@ -172,7 +173,7 @@ fn database(i: &str) -> IResult<&str, RemoveDatabaseStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveLoginStatement {
|
||||
pub name: String,
|
||||
pub base: Base,
|
||||
|
@ -226,7 +227,7 @@ fn login(i: &str) -> IResult<&str, RemoveLoginStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveTokenStatement {
|
||||
pub name: String,
|
||||
pub base: Base,
|
||||
|
@ -280,7 +281,7 @@ fn token(i: &str) -> IResult<&str, RemoveTokenStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveScopeStatement {
|
||||
pub name: String,
|
||||
}
|
||||
|
@ -324,7 +325,7 @@ fn scope(i: &str) -> IResult<&str, RemoveScopeStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveTableStatement {
|
||||
pub name: String,
|
||||
}
|
||||
|
@ -368,7 +369,7 @@ fn table(i: &str) -> IResult<&str, RemoveTableStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveEventStatement {
|
||||
pub name: String,
|
||||
pub what: String,
|
||||
|
@ -419,7 +420,7 @@ fn event(i: &str) -> IResult<&str, RemoveEventStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveFieldStatement {
|
||||
pub name: String,
|
||||
pub what: String,
|
||||
|
@ -470,7 +471,7 @@ fn field(i: &str) -> IResult<&str, RemoveFieldStatement> {
|
|||
// --------------------------------------------------
|
||||
// --------------------------------------------------
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct RemoveIndexStatement {
|
||||
pub name: String,
|
||||
pub what: String,
|
||||
|
|
|
@ -17,13 +17,14 @@ use crate::sql::start::{start, Start};
|
|||
use crate::sql::timeout::{timeout, Timeout};
|
||||
use crate::sql::value::{selects, Value, Values};
|
||||
use crate::sql::version::{version, Version};
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
use nom::sequence::preceded;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct SelectStatement {
|
||||
pub expr: Fields,
|
||||
pub what: Values,
|
||||
|
|
|
@ -7,13 +7,14 @@ use crate::sql::comment::shouldbespace;
|
|||
use crate::sql::error::IResult;
|
||||
use crate::sql::ident::ident_raw;
|
||||
use crate::sql::value::{value, Value};
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::sequence::preceded;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct SetStatement {
|
||||
pub name: String,
|
||||
pub what: Value,
|
||||
|
|
|
@ -11,13 +11,14 @@ use crate::sql::error::IResult;
|
|||
use crate::sql::output::{output, Output};
|
||||
use crate::sql::timeout::{timeout, Timeout};
|
||||
use crate::sql::value::{whats, Value, Values};
|
||||
use derive::Store;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use nom::combinator::opt;
|
||||
use nom::sequence::preceded;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct UpdateStatement {
|
||||
pub what: Values,
|
||||
pub data: Option<Data>,
|
||||
|
|
|
@ -1,12 +1,13 @@
|
|||
use crate::sql::comment::shouldbespace;
|
||||
use crate::sql::error::IResult;
|
||||
use crate::sql::ident::ident_raw;
|
||||
use derive::Store;
|
||||
use nom::branch::alt;
|
||||
use nom::bytes::complete::tag_no_case;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::fmt;
|
||||
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize)]
|
||||
#[derive(Clone, Debug, Default, Eq, PartialEq, Serialize, Deserialize, Store)]
|
||||
pub struct UseStatement {
|
||||
pub ns: Option<String>,
|
||||
pub db: Option<String>,
|
||||
|
|
|
@ -25,6 +25,7 @@ use crate::sql::thing::{thing, Thing};
|
|||
use async_recursion::async_recursion;
|
||||
use chrono::{DateTime, Utc};
|
||||
use dec::Decimal;
|
||||
use derive::Store;
|
||||
use fuzzy_matcher::skim::SkimMatcherV2;
|
||||
use fuzzy_matcher::FuzzyMatcher;
|
||||
use geo::Point;
|
||||
|
@ -74,7 +75,7 @@ pub fn whats(i: &str) -> IResult<&str, Values> {
|
|||
Ok((i, Values(v)))
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Deserialize)]
|
||||
#[derive(Clone, Debug, PartialEq, PartialOrd, Deserialize, Store)]
|
||||
pub enum Value {
|
||||
None,
|
||||
Void,
|
||||
|
@ -386,18 +387,6 @@ impl From<Option<String>> for Value {
|
|||
}
|
||||
}
|
||||
|
||||
impl Into<Vec<u8>> for Value {
|
||||
fn into(self) -> Vec<u8> {
|
||||
msgpack::to_vec(&self).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Vec<u8>> for Value {
|
||||
fn from(v: Vec<u8>) -> Self {
|
||||
msgpack::from_slice::<Value>(&v).unwrap()
|
||||
}
|
||||
}
|
||||
|
||||
impl Value {
|
||||
// -----------------------------------
|
||||
// Initial record value
|
||||
|
|
Loading…
Reference in a new issue