2.0.2 • Published 2 years ago

@qians/levitas_client_wasm v2.0.2

Weekly downloads
-
License
GPL-3.0-only
Repository
-
Last release
2 years ago

Levitas Client

Author: qians Date: 2022/5/1 WasmVersion: 1.0.0

Request

Create

let d1 = js_sys::Map::new()
    .set(&JsValue::from_str("t-name"), &JsValue::from_str("h"))
    .set(&JsValue::from_str("t-age"), &JsValue::from_f64(10.0));
let d1 = JsValue::from(d1);
let d2 = js_sys::Map::new()
    .set(&JsValue::from_str("t-name"), &JsValue::from_str("hhh"))
    .set(&JsValue::from_str("t-age"), &JsValue::from_f64(10.0));
let d2 = JsValue::from(d2);
let req = Request::project("project".to_string())
    .table("table".to_string())
    .create()
    .create_one(d1)
    .create_one(d2)
    .done()
    .to_string();

let reqj = serde_json::json!({
    "project": "project",
    "table": "table",
    "data":[
        {
            "t-name": "h",
            "t-age": 10
        },
        {
            "t-name": "hhh",
            "t-age": 10
        }
    ]
})
.to_string();
assert_eq!(req, reqj)

Query

let req = Request::project("project".to_string())
    .table("table".to_string())
    .query(
        Query::new().and(
            ClauseBuilder::new()
                .gt("t-id".to_string(), JsValue::from_f64(1.1))
                .query(
                    Query::new()
                        .and(
                            ClauseBuilder::new()
                                .lt("t-id".to_string(), JsValue::from_f64(1.1)),
                        )
                        .or(ClauseBuilder::new()
                            .eq("t-id".to_string(), JsValue::from_str("qians"))),
                ),
        ),
    )
    .desc("t-id".to_string())
    .field("t-id".to_string())
    .field("t-name".to_string())
    .aggs(Aggs::new().aggr("space".to_string(), |b| {
        b.terms("path_code".to_string()).aggs(
            Aggs::new().aggr("receiver".to_string(), |b| b.terms("receiver".to_string())),
        )
    }))
    .pagination(1, 4)
    .done()
    .to_string();

let reqj = serde_json::json!({
    "project": "project",
    "table": "table",
    "conditions": {
        "pagination": {
            "page": 1,
            "pageSize": 4
        },
        "order": {
            "t-id": "desc"
        },
        "fields": ["t-id", "t-name"],
        "query": {
            "and": [
                {"range": {"t-id": {"gt": 1.1}}},
                {"query": {
                    "and": [
                        {"range": {"t-id": {"lt": 1.1}}}
                    ],
                    "or": [
                        {"match": {"t-id": "qians"}}
                    ]
                }}
            ]
        },
        "aggs": {
            "space": {
                "terms": {
                    "field": "path_code"
                },
                "aggs": {
                    "receiver": {
                        "terms": {
                            "field": "receiver"
                        }
                    }
                }
            }
        }
    }
})
.to_string();
assert_eq!(req, reqj);

UpdateByQuery

let data = js_sys::Map::new()
    .set(&JsValue::from_str("t-name"), &JsValue::from_str("hhh"))
    .set(&JsValue::from_str("t-age"), &JsValue::from_f64(10.0));
let data = JsValue::from(data);
let req = Request::project("project".to_string())
    .table("table".to_string())
    .update_by_query(
        Query::new().and(ClauseBuilder::new().eq("id".to_string(), JsValue::from_str("2"))),
    )
    .done(data)
    .to_string();

let qv = serde_json::json!({
    "project": "project",
    "table": "table",
    "query": {
        "and": [
            {"match": {"id": "2"}}
        ]
    },
    "data": {
        "t-name": "hhh",
        "t-age": 10
    }
})
.to_string();
assert_eq!(req, qv);