forked from ralscha/blog
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsimple.html
133 lines (111 loc) · 3.1 KB
/
simple.html
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
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
<!doctype html>
<html>
<head>
<meta charset="utf-8" />
<title>Simple Lovefield Example</title>
<script src="https://cdnjs.cloudflare.com/ajax/libs/lovefield/2.1.12/lovefield.js"></script>
</head>
<body>
<script>
var schemaBuilder = lf.schema.create('users', 1);
schemaBuilder.createTable('User').
addColumn('id', lf.Type.INTEGER).
addColumn('username', lf.Type.STRING).
addColumn('email', lf.Type.STRING).
addColumn('note', lf.Type.STRING).
addColumn('age', lf.Type.INTEGER).
addColumn('active', lf.Type.BOOLEAN).
addColumn('created', lf.Type.DATE_TIME).
addNullable(['note']).
addPrimaryKey(['id'], true).
addIndex('idxEmail', ['email'], false, lf.Order.ASC);
let userDb;
let user;
const outFunc = rows => {
console.log('=======================');
rows.forEach(row => console.log(row));
};
const observerFunc = changes => {
console.log(changes);
};
schemaBuilder.connect()
.then(db => {
userDb = db;
user = db.getSchema().table('User');
return userDb.delete().from(user).exec();
})
.then(() => {
const newRows = [];
let row = user.createRow({
username: 'john',
email: '[email protected]',
age: 27,
active: true,
created: new Date()
});
newRows.push(row);
row = user.createRow({
username: 'ralph',
email: '[email protected]',
age: 32,
active: true,
created: new Date(),
note: 'the admin'
});
newRows.push(row);
row = user.createRow({
username: 'jodie',
email: '[email protected]',
age: 23,
active: false,
created: new Date()
});
newRows.push(row);
return userDb.insertOrReplace().into(user).values(newRows).exec();
//Constraint error: (202) Attempted to insert NULL value to non-nullable field User.created.
})
//select all users
.then(() => userDb.select().from(user).exec())
.then(outFunc)
//select usernames
.then(() => userDb.select(user.username)
.from(user)
.orderBy(user.username, lf.Order.DESC)
.exec())
.then(outFunc)
//select all active users
.then(() => userDb.select()
.from(user)
.where(user.active.eq(true))
.exec())
.then(outFunc)
//aggregate functions
.then(() => userDb.select(lf.fn.avg(user.age), lf.fn.count(user.id))
.from(user)
.exec())
.then(outFunc)
//group by
.then(() => userDb.select(lf.fn.count(user.id), user.active)
.from(user)
.groupBy(user.active)
.exec())
.then(outFunc)
//update
.then(() => userDb.update(user)
.set(user.active, true)
.where(user.active.eq(false))
.exec())
.then(() => userDb.select().from(user).where(user.active.eq(true)).exec())
.then(outFunc)
//explain
.then(() => console.log(userDb.select(user.id)
.from(user)
.where(user.username.eq('john'))
.explain()))
.then(() => console.log(userDb.select(user.id)
.from(user)
.where(user.email.eq('[email protected]'))
.explain()));
</script>
</body>
</html>