2022-08-11 11:55:23 +00:00
use taos ::* ;
2022-05-21 03:11:57 +00:00
#[ tokio::main ]
2022-08-11 11:55:23 +00:00
async fn main ( ) -> anyhow ::Result < ( ) > {
let taos = TaosBuilder ::from_dsn ( " taos:// " ) ? . build ( ) ? ;
2022-05-21 03:11:57 +00:00
taos . create_database ( " power " ) . await ? ;
taos . use_database ( " power " ) . await ? ;
2022-08-11 11:55:23 +00:00
taos . exec ( " CREATE STABLE IF NOT EXISTS meters (ts TIMESTAMP, current FLOAT, voltage INT, phase FLOAT) TAGS (location BINARY(64), groupId INT) " ) . await ? ;
let mut stmt = Stmt ::init ( & taos ) ? ;
stmt . prepare ( " INSERT INTO ? USING meters TAGS(?, ?) VALUES(?, ?, ?, ?) " ) ? ;
2022-05-21 03:11:57 +00:00
// bind table name and tags
stmt . set_tbname_tags (
" d1001 " ,
2022-11-18 03:43:39 +00:00
& [
Value ::VarChar ( " California.SanFransico " . into ( ) ) ,
Value ::Int ( 2 ) ,
] ,
2022-05-21 03:11:57 +00:00
) ? ;
// bind values.
let values = vec! [
2022-08-11 11:55:23 +00:00
ColumnView ::from_millis_timestamp ( vec! [ 1648432611249 ] ) ,
ColumnView ::from_floats ( vec! [ 10.3 ] ) ,
ColumnView ::from_ints ( vec! [ 219 ] ) ,
ColumnView ::from_floats ( vec! [ 0.31 ] ) ,
2022-05-21 03:11:57 +00:00
] ;
stmt . bind ( & values ) ? ;
// bind one more row
let values2 = vec! [
2022-08-11 11:55:23 +00:00
ColumnView ::from_millis_timestamp ( vec! [ 1648432611749 ] ) ,
ColumnView ::from_floats ( vec! [ 12.6 ] ) ,
ColumnView ::from_ints ( vec! [ 218 ] ) ,
ColumnView ::from_floats ( vec! [ 0.33 ] ) ,
2022-05-21 03:11:57 +00:00
] ;
stmt . bind ( & values2 ) ? ;
2022-11-18 03:43:39 +00:00
2022-08-11 11:55:23 +00:00
stmt . add_batch ( ) ? ;
2022-11-18 03:43:39 +00:00
2022-08-11 11:55:23 +00:00
// execute.
let rows = stmt . execute ( ) ? ;
assert_eq! ( rows , 2 ) ;
2022-05-21 03:11:57 +00:00
Ok ( ( ) )
}