Skip to content

Commit d5f93dc

Browse files
authored
example(basic): replicate rust's driver basic.rs example (#32)
closes #31 Signed-off-by: Daniel Boll <danielboll.academico@gmail.com>
1 parent ee55a44 commit d5f93dc

File tree

2 files changed

+38
-1
lines changed

2 files changed

+38
-1
lines changed

examples/basic.mts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { Cluster, } from "../index.js"
2+
3+
const nodes = process.env.CLUSTER_NODES?.split(",") ?? ["127.0.0.1:9042"];
4+
5+
console.log(`Connecting to ${nodes}`);
6+
7+
const cluster = new Cluster({ nodes });
8+
const session = await cluster.connect();
9+
10+
await session.execute("CREATE KEYSPACE IF NOT EXISTS basic WITH REPLICATION = { 'class' : 'SimpleStrategy', 'replication_factor' : 1 }");
11+
await session.useKeyspace("basic");
12+
13+
await session.execute("CREATE TABLE IF NOT EXISTS basic (a int, b int, c text, primary key (a, b))");
14+
15+
await session.execute("INSERT INTO basic (a, b, c) VALUES (1, 2, 'abc')");
16+
await session.execute("INSERT INTO basic (a, b, c) VALUES (?, ?, ?)", [3, 4, "def"]);
17+
18+
const prepared = await session.prepare("INSERT INTO basic (a, b, c) VALUES (?, 7, ?)");
19+
await session.execute(prepared, [42, "I'm prepared!"]);
20+
await session.execute(prepared, [43, "I'm prepared 2!"]);
21+
await session.execute(prepared, [44, "I'm prepared 3!"]);
22+
23+
interface RowData {
24+
a: number;
25+
b: number;
26+
c: string;
27+
}
28+
const result = await session.execute<RowData>("SELECT a, b, c FROM basic");
29+
console.log(result);
30+
31+
const metrics = session.metrics();
32+
console.log(`Queries requested: ${metrics.getQueriesNum()}`);
33+
console.log(`Iter queries requested: ${metrics.getQueriesIterNum()}`);
34+
console.log(`Errors occurred: ${metrics.getErrorsNum()}`);
35+
console.log(`Iter errors occurred: ${metrics.getErrorsIterNum()}`);
36+
console.log(`Average latency: ${metrics.getLatencyAvgMs()}`);
37+
console.log(`99.9 latency percentile: ${metrics.getLatencyPercentileMs(99.9)}`);

index.d.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ export class Metrics {
121121
}
122122
export class ScyllaSession {
123123
metrics(): Metrics
124-
execute(query: string | Query | PreparedStatement, parameters?: Array<number | string | Uuid> | undefined | null): Promise<any>
124+
execute<T = unknown>(query: string | Query | PreparedStatement, parameters?: Array<number | string | Uuid> | undefined | null): Promise<T>
125125
query(scyllaQuery: Query, parameters?: Array<number | string | Uuid> | undefined | null): Promise<any>
126126
prepare(query: string): Promise<PreparedStatement>
127127
batch(batch: BatchStatement, parameters: Array<Array<number | string | Uuid> | undefined | null>): Promise<any>

0 commit comments

Comments
 (0)