-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathsimple.rs
62 lines (53 loc) · 1.77 KB
/
simple.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
use skytable::{query, Config};
/// a dummy function to fetch username and password from a request
fn dummy_web_fetch_username_password() -> (String, String) {
("rickastley".into(), "rick123".into())
}
fn dummy_respond_to_request(_followers: u64) {}
fn main() {
let mut db = Config::new_default("username", "password")
.connect()
.unwrap();
// set up schema
// create space
db.query_parse::<()>(&query!("create space myspace"))
.unwrap();
// create model
db.query_parse::<()>(&query!(
"create model myspace.mymodel(username: string, password: string, followers: uint64)"
))
.unwrap();
// manipulate data
let (form_username, form_pass) = dummy_web_fetch_username_password();
// insert some data
db.query_parse::<()>(&query!(
"insert into myspace.mymodel(?, ?, ?)",
&form_username,
form_pass,
100_000_000u64
))
.unwrap();
// get it back
let (password, followers): (String, u64) = db
.query_parse(&query!(
"select password, followers FROM myspace.mymodel WHERE username = ?",
&form_username
))
.unwrap();
assert_eq!(password, "rick123", "password changed!");
// send to our client
dummy_respond_to_request(followers);
// update followers to account for huge numbers who were angry after being rickrolled
db.query_parse::<()>(&query!(
"update myspace.mymodel SET followers -= ? WHERE username = ?",
50_000_000u64,
&form_username
))
.unwrap();
// alright, everyone is tired from being rickrolled so we'll have to ban rick's account
db.query_parse::<()>(&query!(
"delete from myspace.mymodel where username = ?",
&form_username
))
.unwrap();
}