# @qians/levitas_client_wasm

> levitas's wasm client

Latest version **2.0.2** (published 2022-11-02) · GPL-3.0-only license · 0 weekly downloads

## Install

```sh
npm install @qians/levitas_client_wasm
pnpm add @qians/levitas_client_wasm
yarn add @qians/levitas_client_wasm
bun add @qians/levitas_client_wasm
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 2.0.2 |
| Published | 2022-11-02 |
| First published | 2022-11-02 |
| Weekly downloads | 0 |
| License | GPL-3.0-only |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 209.9 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | qians |
| Keywords | levitas, wasm, sdk |

## Links

- npm: https://www.npmjs.com/package/@qians/levitas_client_wasm
- Repository: https://quakegit.cn/Qians/levitas_client_wasm/
- npm.io page: https://npm.io/package/@qians/levitas_client_wasm

## Recent versions

- 2.0.2 (latest) — 2022-11-02
- 2.0.1 — 2022-11-02
- 2.0.0 — 2022-11-02

## README

# Levitas Client
Author: qians
Date: 2022/5/1
WasmVersion: 1.0.0

## Request
### Create
```rust
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
```rust
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
```rust
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);
```

---
_Source: https://npm.io/package/@qians/levitas_client_wasm · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
