Skip to content

Commit 4ad0463

Browse files
committed
chore: Add examples
1 parent 8d017e1 commit 4ad0463

12 files changed

+277
-24
lines changed

README.md

Lines changed: 27 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -31,9 +31,9 @@ let client = Client::new(base_url, api_token);
3131
Then call the `ping` function to check whether the instance is reachable. If it is not, the function will return an error:
3232

3333
```rust
34-
let result = client.ping();
35-
if result.is_err() {
36-
// ...
34+
let result = client.ping().await;
35+
if let Err(err) = result {
36+
// handle error...
3737
}
3838
```
3939

@@ -42,9 +42,9 @@ if result.is_err() {
4242
If you want to verify the API token, call `verify_api_token`. If the token is invalid, the function will return an error:
4343

4444
```rust
45-
let result = client.verify_api_token();
46-
if result.is_err() {
47-
// ...
45+
let result = client.verify_api_token().await;
46+
if let Err(err) = result {
47+
// handle error...
4848
}
4949
```
5050

@@ -68,7 +68,7 @@ let event = EventCandidate::builder()
6868
"author": "Arthur C. Clarke",
6969
"isbn": "978-0756906788",
7070
}))
71-
.build()
71+
.build();
7272

7373
let result = client.write_events(vec![event.clone()], vec![]).await;
7474
match result {
@@ -125,14 +125,17 @@ let result = client
125125
.read_events("/books/42", Some(
126126
ReadEventsRequestOptions {
127127
recursive: false,
128-
..Default::default(),
128+
from_latest_event: None,
129+
order: None,
130+
lower_bound: None,
131+
upper_bound: None,
129132
}
130133
))
131-
.await
134+
.await;
132135

133136
match result {
134137
Err(err) => // ...
135-
Some(stream) => {
138+
Ok(mut stream) => {
136139
while let Some(event) = stream.next().await {
137140
// ...
138141
}
@@ -152,7 +155,7 @@ let result = client
152155
..Default::default(),
153156
}
154157
))
155-
.await
158+
.await;
156159
```
157160

158161
This also allows you to read *all* events ever written. To do so, provide `/` as the subject and set `recursive` to `true`, since all subjects are nested under the root subject.
@@ -170,7 +173,7 @@ let result = client
170173
..Default::default(),
171174
}
172175
))
173-
.await
176+
.await;
174177
```
175178

176179
*Note that you can also use the `Chronological` Ordering to explicitly enforce the default order.*
@@ -197,7 +200,7 @@ let result = client
197200
..Default::default(),
198201
}
199202
))
200-
.await
203+
.await;
201204
```
202205

203206
#### Starting From the Latest Event of a Given Type
@@ -221,7 +224,7 @@ let result = client
221224
..Default::default(),
222225
}
223226
))
224-
.await
227+
.await;
225228
```
226229

227230
*Note that `from_latest_event` and `lower_bound` can not be provided at the same time.*
@@ -233,11 +236,11 @@ To run an EventQL query, call the `run_eventql_query` function and provide the q
233236
```rust
234237
let result = client
235238
.run_eventql_query("FROM e IN events PROJECT INTO e")
236-
.await
239+
.await;
237240

238241
match result {
239242
Err(err) => // ...
240-
Some(stream) => {
243+
Ok(mut stream) => {
241244
while let Some(row) = stream.next().await {
242245
// ...
243246
}
@@ -259,14 +262,15 @@ let result = client
259262
.observe_events("/books/42", Some(
260263
ObserveEventsRequestOptions {
261264
recursive: false,
262-
..Default::default(),
265+
from_latest_event: None,
266+
lower_bound: None,
263267
}
264268
))
265-
.await
269+
.await;
266270

267271
match result {
268272
Err(err) => // ...
269-
Some(stream) => {
273+
Ok(mut stream) => {
270274
while let Some(event) = stream.next().await {
271275
// ...
272276
}
@@ -349,7 +353,7 @@ To register an event schema, call the `register_event_schema` function and hand
349353
```rust
350354
client.register_event_schema(
351355
"io.eventsourcingdb.library.book-acquired",
352-
json!({
356+
&json!({
353357
"type": "object",
354358
"properties": {
355359
"title": { "type": "string" },
@@ -362,7 +366,7 @@ client.register_event_schema(
362366
"isbn",
363367
],
364368
"additionalProperties": false,
365-
}),
369+
}).await;,
366370
)
367371
```
368372

@@ -371,7 +375,7 @@ client.register_event_schema(
371375
To list all subjects, call the `list_subjects` function with `/` as the base subject. The function returns a stream from which you can retrieve one subject at a time:
372376

373377
```rust
374-
let result := client.list_subjects("/");
378+
let result = client.list_subjects(Some("/")).await;
375379
match result {
376380
Ok(subjects) => // ...
377381
Err(err) => // ...
@@ -389,7 +393,7 @@ let result := client.list_subjects("/books");
389393
To list all event types, call the `list_event_types` function. The function returns a stream from which you can retrieve one event type at a time:
390394

391395
```rust
392-
let result := client.list_event_types();
396+
let result := client.list_event_types().await;
393397
match result {
394398
Ok(event_types) => // ...
395399
Err(err) => // ...

clippy.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
doc-valid-idents = ["EventSourcingDB", "EventQL", "CloudEvents", ".."]

examples/event_types.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use eventsourcingdb::client::Client;
2+
use futures::StreamExt;
3+
use url::Url;
4+
5+
#[tokio::main]
6+
async fn main() {
7+
let base_url: Url = "localhost:3000".parse().unwrap();
8+
let api_token = "secret";
9+
let client = Client::new(base_url, api_token);
10+
11+
let result = client.list_event_types().await;
12+
13+
match result {
14+
Err(err) => panic!("{}", err),
15+
Ok(mut event_types) => {
16+
while let Some(Ok(event_type)) = event_types.next().await {
17+
println!("{:?}", event_type)
18+
}
19+
}
20+
}
21+
}

examples/listing_subjects.rs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
use eventsourcingdb::client::Client;
2+
use futures::StreamExt;
3+
use url::Url;
4+
5+
#[tokio::main]
6+
async fn main() {
7+
let base_url: Url = "localhost:3000".parse().unwrap();
8+
let api_token = "secret";
9+
let client = Client::new(base_url, api_token);
10+
11+
let result = client.list_subjects(Some("/")).await;
12+
13+
match result {
14+
Err(err) => panic!("{}", err),
15+
Ok(mut subjects) => {
16+
while let Some(Ok(subject)) = subjects.next().await {
17+
println!("{:?}", subject)
18+
}
19+
}
20+
}
21+
}

examples/observing_events.rs

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
use eventsourcingdb::client::{Client, request_options::ObserveEventsRequestOptions};
2+
use futures::StreamExt;
3+
use url::Url;
4+
5+
#[tokio::main]
6+
async fn main() {
7+
let base_url: Url = "localhost:3000".parse().unwrap();
8+
let api_token = "secret";
9+
let client = Client::new(base_url, api_token);
10+
11+
let result = client
12+
.observe_events(
13+
"/books/42",
14+
Some(ObserveEventsRequestOptions {
15+
recursive: false,
16+
from_latest_event: None,
17+
lower_bound: None,
18+
}),
19+
)
20+
.await;
21+
22+
match result {
23+
Err(err) => panic!("{}", err),
24+
Ok(mut stream) => {
25+
while let Some(Ok(event)) = stream.next().await {
26+
println!("{:?}", event)
27+
}
28+
}
29+
}
30+
}

examples/ping.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
use eventsourcingdb::client::Client;
2+
use url::Url;
3+
4+
#[tokio::main]
5+
async fn main() {
6+
let base_url: Url = "localhost:3000".parse().unwrap();
7+
let api_token = "secret";
8+
let client = Client::new(base_url, api_token);
9+
10+
let result = client.ping().await;
11+
if let Err(err) = result {
12+
// handle error
13+
panic!("{}", err)
14+
}
15+
}

examples/reading_events.rs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
use eventsourcingdb::client::{Client, request_options::ReadEventsRequestOptions};
2+
use futures::StreamExt;
3+
use url::Url;
4+
5+
#[tokio::main]
6+
async fn main() {
7+
let base_url: Url = "localhost:3000".parse().unwrap();
8+
let api_token = "secret";
9+
let client = Client::new(base_url, api_token);
10+
11+
let result = client
12+
.read_events(
13+
"/books/42",
14+
Some(ReadEventsRequestOptions {
15+
recursive: false,
16+
from_latest_event: None,
17+
order: None,
18+
lower_bound: None,
19+
upper_bound: None,
20+
}),
21+
)
22+
.await;
23+
24+
match result {
25+
Err(err) => panic!("{}", err),
26+
Ok(mut stream) => {
27+
while let Some(Ok(event)) = stream.next().await {
28+
println!("{:?}", event)
29+
}
30+
}
31+
}
32+
}
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
use eventsourcingdb::client::Client;
2+
use serde_json::json;
3+
use url::Url;
4+
5+
#[tokio::main]
6+
async fn main() {
7+
let base_url: Url = "localhost:3000".parse().unwrap();
8+
let api_token = "secret";
9+
let client = Client::new(base_url, api_token);
10+
11+
let result = client
12+
.register_event_schema(
13+
"io.eventsourcingdb.library.book-acquired",
14+
&json!({
15+
"type": "object",
16+
"properties": {
17+
"title": { "type": "string" },
18+
"author": { "type": "string" },
19+
"isbn": { "type": "string" },
20+
},
21+
"required": [
22+
"title",
23+
"author",
24+
"isbn",
25+
],
26+
"additionalProperties": false,
27+
}),
28+
)
29+
.await;
30+
31+
if let Err(err) = result {
32+
panic!("{}", err)
33+
}
34+
}

examples/running_eventql.rs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use eventsourcingdb::client::Client;
2+
use futures::StreamExt;
3+
use url::Url;
4+
5+
#[tokio::main]
6+
async fn main() {
7+
let base_url: Url = "localhost:3000".parse().unwrap();
8+
let api_token = "secret";
9+
let client = Client::new(base_url, api_token);
10+
11+
let result = client
12+
.run_eventql_query("FROM e IN events PROJECT INTO e")
13+
.await;
14+
15+
match result {
16+
Err(err) => panic!("{}", err),
17+
Ok(mut stream) => {
18+
while let Some(Ok(row)) = stream.next().await {
19+
println!("{:?}", row)
20+
}
21+
}
22+
}
23+
}

examples/verify_api_token.rs

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
use eventsourcingdb::client::Client;
2+
use url::Url;
3+
4+
#[tokio::main]
5+
async fn main() {
6+
let base_url: Url = "localhost:3000".parse().unwrap();
7+
let api_token = "secret";
8+
let client = Client::new(base_url, api_token);
9+
10+
let result = client.verify_api_token().await;
11+
if let Err(err) = result {
12+
// handle error
13+
panic!("{}", err)
14+
}
15+
}

0 commit comments

Comments
 (0)