kdb-connection 0.1.0

kDB connection.
Documentation
//! Convenient API for creating krQL queries

use serde::Serialize;
use serde_with::skip_serializing_none;

use kdb_macros::KRQLQuery;

pub mod agents;
pub mod datasets;
mod sensing;

#[allow(unused)] // False positive KRQLQuery is needed for `kdb_macros::KRQLQuery` to work
pub(crate) trait KRQLQuery: Serialize {}

/// Test query
#[derive(Clone, Default, KRQLQuery)]
pub struct Test
{
    /// A string to print by the kDB Server
    pub print: Option<crate::value::Value>,
    /// A value returned
    #[serde(rename = "return")]
    pub return_value: Option<crate::value::Value>,
}

#[cfg(test)]
mod tests
{
    use super::*;

    #[test]
    fn test_query()
    {
        let t = Test {
            print: Some("Hello".into()),
            ..Default::default()
        };
        assert_eq!(
            serde_saphyr::to_string(&t).unwrap(),
            r#"test:
  print:
    type: literal
    datatype: "http://www.w3.org/2001/XMLSchema#string"
    value: Hello
"#
        );
        let t = Test {
            return_value: Some("world".to_string().into()),
            ..Default::default()
        };
        assert_eq!(
            serde_saphyr::to_string(&t).unwrap(),
            r#"test:
  return:
    type: literal
    datatype: "http://www.w3.org/2001/XMLSchema#string"
    value: world
"#
        );
    }
}