diff --git a/docs/en/05-develop/01-connect/04-rust.md b/docs/en/05-develop/01-connect/04-rust.md index 3de50a62c9c914c61fb6c34511c9fd6dbae351ae..32a6c30095012ed04c344d5c64d64b87b2c2e9a9 100644 --- a/docs/en/05-develop/01-connect/04-rust.md +++ b/docs/en/05-develop/01-connect/04-rust.md @@ -6,13 +6,18 @@ pagination_next: develop/insert-data import Tabs from '@theme/Tabs'; import TabItem from '@theme/TabItem'; +## Create Project + +``` +cargo new cloud_example +``` ## Add Dependency Add dependency to `Cargo.toml`. ```toml title="Cargo.toml" [dependencies] -libtaos = { version = "0.4.2"} +libtaos = { version="*", feature=["rest"]} ``` ## Config @@ -59,15 +64,7 @@ To obtain the value of cloud token and URL, please log in [TDengine Cloud](https Copy following code to `main.rs`. ```rust title="main.rs" -use libtaos::*; - -fn main() { - let token = std::env::var("TDENGINE_CLOUD_TOKEN").unwrap(); - let url = std::env::var("TDENGINE_CLOUD_URL").unwrap(); - let dsn = url + "?token=" + &token; - let taos = Taos::from_dsn(dsn)?; - println!("connected"); -} +{{#include docs/examples/rust/cloud_example/src/main.rs}} ``` Then you can execute `cargo run` to test the connection. \ No newline at end of file diff --git a/docs/examples/go/connectexample/main.go b/docs/examples/go/connectexample/main.go index 00736fd0194906fa231aadecb17f5c2e8b27a010..22d171d875ee4874fb6d6ec978a9ebd38b1858de 100644 --- a/docs/examples/go/connectexample/main.go +++ b/docs/examples/go/connectexample/main.go @@ -15,11 +15,12 @@ func main() { fmt.Println(err) return } - _, err = taos.Query("select server_version()") + defer taos.Close() + rows, err := taos.Query("select server_version()") if err != nil { fmt.Println(err) return } + rows.Close() fmt.Println("connect success") - defer taos.Close() } diff --git a/docs/examples/rust/Cargo.toml b/docs/examples/rust/Cargo.toml deleted file mode 100644 index 114407e69edcb94fdeef77e6ae581569c5451160..0000000000000000000000000000000000000000 --- a/docs/examples/rust/Cargo.toml +++ /dev/null @@ -1,2 +0,0 @@ -[workspace] -members = ["restexample", "nativeexample", "schemalessexample"] diff --git a/docs/examples/rust/nativeexample/Cargo.toml b/docs/examples/rust/cloud_example/Cargo.toml similarity index 50% rename from docs/examples/rust/nativeexample/Cargo.toml rename to docs/examples/rust/cloud_example/Cargo.toml index 64fd10a3e915a39c321b56b6f38be51417d8d18e..b4b2066b232b6f67ce9da5c56d415c8ffc443cd2 100644 --- a/docs/examples/rust/nativeexample/Cargo.toml +++ b/docs/examples/rust/cloud_example/Cargo.toml @@ -1,10 +1,11 @@ [package] -name = "nativeexample" +name = "cloud_example" version = "0.1.0" edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + + [dependencies] -libtaos = { version = "0.4.3" } -tokio = { version = "*", features = ["rt", "macros", "rt-multi-thread"] } -bstr = { version = "*" } +libtaos = { version="0.4.5-alpha.0", feature=["rest"]} +tokio = { version = "1", features = ["full"]} diff --git a/docs/examples/rust/cloud_example/src/main.rs b/docs/examples/rust/cloud_example/src/main.rs new file mode 100644 index 0000000000000000000000000000000000000000..faeedff9978275d55dd5b7e57fa1fefb477c296a --- /dev/null +++ b/docs/examples/rust/cloud_example/src/main.rs @@ -0,0 +1,9 @@ +use libtaos::*; + +fn main() { + let token = std::env::var("TDENGINE_CLOUD_TOKEN").unwrap(); + let url = std::env::var("TDENGINE_CLOUD_URL").unwrap(); + let dsn = url + "?token=" + &token; + let taos = TaosCfg::from_dsn(dsn)?; + println!("connected"); +} \ No newline at end of file diff --git a/docs/examples/rust/nativeexample/examples/connect.rs b/docs/examples/rust/nativeexample/examples/connect.rs deleted file mode 100644 index 8e27458de5d428479668a0e5133ca904cf27c213..0000000000000000000000000000000000000000 --- a/docs/examples/rust/nativeexample/examples/connect.rs +++ /dev/null @@ -1,19 +0,0 @@ -use libtaos::*; - -fn taos_connect() -> Result { - TaosCfgBuilder::default() - .ip("localhost") - .user("root") - .pass("taosdata") - // .db("log") // remove comment if you want to connect to database log by default. - .port(6030u16) - .build() - .expect("TaosCfg builder error") - .connect() -} - -fn main() { - #[allow(unused_variables)] - let taos = taos_connect().unwrap(); - println!("Connected") -} diff --git a/docs/examples/rust/nativeexample/examples/stmt_example.rs b/docs/examples/rust/nativeexample/examples/stmt_example.rs deleted file mode 100644 index 190f8c1ef6d50a8e9c925178c1a9d31c22e3d4df..0000000000000000000000000000000000000000 --- a/docs/examples/rust/nativeexample/examples/stmt_example.rs +++ /dev/null @@ -1,38 +0,0 @@ -use bstr::BString; -use libtaos::*; - -#[tokio::main] -async fn main() -> Result<(), Error> { - let taos = TaosCfg::default().connect().expect("fail to connect"); - taos.create_database("power").await?; - taos.use_database("power").await?; - taos.exec("CREATE STABLE meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT)").await?; - let mut stmt = taos.stmt("INSERT INTO ? USING meters TAGS(?, ?) VALUES(?, ?, ?, ?)")?; - // bind table name and tags - stmt.set_tbname_tags( - "d1001", - [ - Field::Binary(BString::from("California.SanFrancisco")), - Field::Int(2), - ], - )?; - // bind values. - let values = vec![ - Field::Timestamp(Timestamp::new(1648432611249, TimestampPrecision::Milli)), - Field::Float(10.3), - Field::Int(219), - Field::Float(0.31), - ]; - stmt.bind(&values)?; - // bind one more row - let values2 = vec![ - Field::Timestamp(Timestamp::new(1648432611749, TimestampPrecision::Milli)), - Field::Float(12.6), - Field::Int(218), - Field::Float(0.33), - ]; - stmt.bind(&values2)?; - // execute - stmt.execute()?; - Ok(()) -} diff --git a/docs/examples/rust/nativeexample/examples/subscribe_demo.rs b/docs/examples/rust/nativeexample/examples/subscribe_demo.rs deleted file mode 100644 index 4febff9be7bd5771db449fbfb184a9f208e61d8a..0000000000000000000000000000000000000000 --- a/docs/examples/rust/nativeexample/examples/subscribe_demo.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - -} \ No newline at end of file diff --git a/docs/examples/rust/nativeexample/src/main.rs b/docs/examples/rust/nativeexample/src/main.rs deleted file mode 100644 index e7a11a969c037e00a796aafeff6258501ec15e9a..0000000000000000000000000000000000000000 --- a/docs/examples/rust/nativeexample/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} diff --git a/docs/examples/rust/restexample/Cargo.toml b/docs/examples/rust/restexample/Cargo.toml deleted file mode 100644 index a5f89f8a3be3baabd298a70947f6c5d3df088aae..0000000000000000000000000000000000000000 --- a/docs/examples/rust/restexample/Cargo.toml +++ /dev/null @@ -1,8 +0,0 @@ -[package] -name = "restexample" -version = "0.1.0" -edition = "2021" - -[dependencies] -libtaos = { version = "0.4.3", features = ["rest"] } -tokio = { version = "*", features = ["rt", "macros", "rt-multi-thread"] } diff --git a/docs/examples/rust/restexample/examples/connect.rs b/docs/examples/rust/restexample/examples/connect.rs deleted file mode 100644 index b3718342c4a142786572a7eec46d6fa36f651566..0000000000000000000000000000000000000000 --- a/docs/examples/rust/restexample/examples/connect.rs +++ /dev/null @@ -1,20 +0,0 @@ -use libtaos::*; - -fn taos_connect() -> Result { - TaosCfgBuilder::default() - .ip("localhost") - .user("root") - .pass("taosdata") - // .db("log") // remove comment if you want to connect to database log by default. - .port(6030u16) - .build() - .expect("TaosCfg builder error") - .connect() -} - -#[tokio::main] -async fn main() { - #[allow(unused_variables)] - let taos = taos_connect().expect("connect error"); - println!("Connected") -} diff --git a/docs/examples/rust/restexample/examples/insert_example.rs b/docs/examples/rust/restexample/examples/insert_example.rs deleted file mode 100644 index 9261536f627c297fc707708f88f57eed647dbf3e..0000000000000000000000000000000000000000 --- a/docs/examples/rust/restexample/examples/insert_example.rs +++ /dev/null @@ -1,18 +0,0 @@ -use libtaos::*; - -#[tokio::main] -async fn main() -> Result<(), Error> { - let taos = TaosCfg::default().connect().expect("fail to connect"); - taos.create_database("power").await?; - taos.exec("CREATE STABLE power.meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT)").await?; - let sql = "INSERT INTO power.d1001 USING power.meters TAGS(California.SanFrancisco, 2) VALUES ('2018-10-03 14:38:05.000', 10.30000, 219, 0.31000) ('2018-10-03 14:38:15.000', 12.60000, 218, 0.33000) ('2018-10-03 14:38:16.800', 12.30000, 221, 0.31000) - power.d1002 USING power.meters TAGS(California.SanFrancisco, 3) VALUES ('2018-10-03 14:38:16.650', 10.30000, 218, 0.25000) - power.d1003 USING power.meters TAGS(California.LosAngeles, 2) VALUES ('2018-10-03 14:38:05.500', 11.80000, 221, 0.28000) ('2018-10-03 14:38:16.600', 13.40000, 223, 0.29000) - power.d1004 USING power.meters TAGS(California.LosAngeles, 3) VALUES ('2018-10-03 14:38:05.000', 10.80000, 223, 0.29000) ('2018-10-03 14:38:06.500', 11.50000, 221, 0.35000)"; - let result = taos.query(sql).await?; - println!("{:?}", result); - Ok(()) -} - -// output: -// TaosQueryData { column_meta: [ColumnMeta { name: "affected_rows", type_: Int, bytes: 4 }], rows: [[Int(8)]] } diff --git a/docs/examples/rust/restexample/examples/query_example.rs b/docs/examples/rust/restexample/examples/query_example.rs deleted file mode 100644 index bbe0cfaabf0d3b078606e823dd504be4153832e7..0000000000000000000000000000000000000000 --- a/docs/examples/rust/restexample/examples/query_example.rs +++ /dev/null @@ -1,39 +0,0 @@ -use libtaos::*; - -fn taos_connect() -> Result { - TaosCfgBuilder::default() - .ip("localhost") - .user("root") - .pass("taosdata") - .db("power") - .port(6030u16) - .build() - .expect("TaosCfg builder error") - .connect() -} - -#[tokio::main] -async fn main() -> Result<(), Error> { - let taos = taos_connect().expect("connect error"); - let result = taos.query("SELECT ts, current FROM meters LIMIT 2").await?; - // print column names - let meta: Vec = result.column_meta; - for column in meta { - print!("{}\t", column.name) - } - println!(); - // print rows - let rows: Vec> = result.rows; - for row in rows { - for field in row { - print!("{}\t", field); - } - println!(); - } - Ok(()) -} - -// output: -// ts current -// 2022-03-28 09:56:51.249 10.3 -// 2022-03-28 09:56:51.749 12.6 diff --git a/docs/examples/rust/restexample/src/main.rs b/docs/examples/rust/restexample/src/main.rs deleted file mode 100644 index e7a11a969c037e00a796aafeff6258501ec15e9a..0000000000000000000000000000000000000000 --- a/docs/examples/rust/restexample/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -} diff --git a/docs/examples/rust/schemalessexample/Cargo.toml b/docs/examples/rust/schemalessexample/Cargo.toml deleted file mode 100644 index 32c6a122318d16f488210da54f1600ba8f6a8b7c..0000000000000000000000000000000000000000 --- a/docs/examples/rust/schemalessexample/Cargo.toml +++ /dev/null @@ -1,7 +0,0 @@ -[package] -name = "schemalessexample" -version = "0.1.0" -edition = "2021" - -[dependencies] -libtaos = { version = "0.4.3" } diff --git a/docs/examples/rust/schemalessexample/examples/influxdb_line_example.rs b/docs/examples/rust/schemalessexample/examples/influxdb_line_example.rs deleted file mode 100644 index 64d1a3c9ac6037c16e3e1c3be0258e19cce632a0..0000000000000000000000000000000000000000 --- a/docs/examples/rust/schemalessexample/examples/influxdb_line_example.rs +++ /dev/null @@ -1,22 +0,0 @@ -use libtaos::schemaless::*; -use libtaos::*; - -fn main() { - let taos = TaosCfg::default().connect().expect("fail to connect"); - taos.raw_query("CREATE DATABASE test").unwrap(); - taos.raw_query("USE test").unwrap(); - let lines = ["meters,location=California.LosAngeles,groupid=2 current=11.8,voltage=221,phase=0.28 1648432611249", - "meters,location=California.LosAngeles,groupid=2 current=13.4,voltage=223,phase=0.29 1648432611250", - "meters,location=California.LosAngeles,groupid=3 current=10.8,voltage=223,phase=0.29 1648432611249", - "meters,location=California.LosAngeles,groupid=3 current=11.3,voltage=221,phase=0.35 1648432611250"]; - let affected_rows = taos - .schemaless_insert( - &lines, - TSDB_SML_LINE_PROTOCOL, - TSDB_SML_TIMESTAMP_MILLISECONDS, - ) - .unwrap(); - println!("affected_rows={}", affected_rows); -} - -// run with: cargo run --example influxdb_line_example diff --git a/docs/examples/rust/schemalessexample/examples/opentsdb_json_example.rs b/docs/examples/rust/schemalessexample/examples/opentsdb_json_example.rs deleted file mode 100644 index e61691596704c8aaf979081429802df6e5aa86f9..0000000000000000000000000000000000000000 --- a/docs/examples/rust/schemalessexample/examples/opentsdb_json_example.rs +++ /dev/null @@ -1,25 +0,0 @@ -use libtaos::schemaless::*; -use libtaos::*; - -fn main() { - let taos = TaosCfg::default().connect().expect("fail to connect"); - taos.raw_query("CREATE DATABASE test").unwrap(); - taos.raw_query("USE test").unwrap(); - let lines = [ - r#"[{"metric": "meters.current", "timestamp": 1648432611249, "value": 10.3, "tags": {"location": "California.SanFrancisco", "groupid": 2}}, - {"metric": "meters.voltage", "timestamp": 1648432611249, "value": 219, "tags": {"location": "California.LosAngeles", "groupid": 1}}, - {"metric": "meters.current", "timestamp": 1648432611250, "value": 12.6, "tags": {"location": "California.SanFrancisco", "groupid": 2}}, - {"metric": "meters.voltage", "timestamp": 1648432611250, "value": 221, "tags": {"location": "California.LosAngeles", "groupid": 1}}]"#, - ]; - - let affected_rows = taos - .schemaless_insert( - &lines, - TSDB_SML_JSON_PROTOCOL, - TSDB_SML_TIMESTAMP_NOT_CONFIGURED, - ) - .unwrap(); - println!("affected_rows={}", affected_rows); // affected_rows=4 -} - -// run with: cargo run --example opentsdb_json_example diff --git a/docs/examples/rust/schemalessexample/examples/opentsdb_telnet_example.rs b/docs/examples/rust/schemalessexample/examples/opentsdb_telnet_example.rs deleted file mode 100644 index c8cab7655a24806e5c7659af80e83da383539c55..0000000000000000000000000000000000000000 --- a/docs/examples/rust/schemalessexample/examples/opentsdb_telnet_example.rs +++ /dev/null @@ -1,28 +0,0 @@ -use libtaos::schemaless::*; -use libtaos::*; - -fn main() { - let taos = TaosCfg::default().connect().expect("fail to connect"); - taos.raw_query("CREATE DATABASE test").unwrap(); - taos.raw_query("USE test").unwrap(); - let lines = [ - "meters.current 1648432611249 10.3 location=California.SanFrancisco groupid=2", - "meters.current 1648432611250 12.6 location=California.SanFrancisco groupid=2", - "meters.current 1648432611249 10.8 location=California.LosAngeles groupid=3", - "meters.current 1648432611250 11.3 location=California.LosAngeles groupid=3", - "meters.voltage 1648432611249 219 location=California.SanFrancisco groupid=2", - "meters.voltage 1648432611250 218 location=California.SanFrancisco groupid=2", - "meters.voltage 1648432611249 221 location=California.LosAngeles groupid=3", - "meters.voltage 1648432611250 217 location=California.LosAngeles groupid=3", - ]; - let affected_rows = taos - .schemaless_insert( - &lines, - TSDB_SML_TELNET_PROTOCOL, - TSDB_SML_TIMESTAMP_NOT_CONFIGURED, - ) - .unwrap(); - println!("affected_rows={}", affected_rows); // affected_rows=8 -} - -// run with: cargo run --example opentsdb_telnet_example diff --git a/docs/examples/rust/schemalessexample/src/main.rs b/docs/examples/rust/schemalessexample/src/main.rs deleted file mode 100644 index e7a11a969c037e00a796aafeff6258501ec15e9a..0000000000000000000000000000000000000000 --- a/docs/examples/rust/schemalessexample/src/main.rs +++ /dev/null @@ -1,3 +0,0 @@ -fn main() { - println!("Hello, world!"); -}