v / vlib / orm / orm_custom_operators_test.v
58 lines · 47 sloc · 1.06 KB · 99be39cbd15d4bbb5ab14d2f870199908c00bc8d
Raw
1// vtest retry: 3
2import db.sqlite
3
4struct User {
5 id int @[primary; sql: serial]
6 name string
7 country string
8}
9
10// like is an example function for checking that V allows using the `like` keyword as an identifier.
11fn like() {}
12
13fn test_like_operator() {
14 like()
15 db := sqlite.connect(':memory:')!
16
17 sql db {
18 create table User
19 }!
20
21 luke := User{
22 name: 'Luke'
23 country: 'US'
24 }
25 sql db {
26 insert luke into User
27 }!
28
29 james := User{
30 name: 'James'
31 country: 'UK'
32 }
33 sql db {
34 insert james into User
35 }!
36
37 lukas := User{
38 name: 'Lucas'
39 country: 'DE'
40 }
41 sql db {
42 insert lukas into User
43 }!
44
45 users_with_name_starting_with_letter_l := sql db {
46 select from User where name like 'L%'
47 }!
48
49 assert users_with_name_starting_with_letter_l.len == 2
50 assert users_with_name_starting_with_letter_l.filter(it.name.starts_with('L')).len == 2
51
52 users_with_name_with_second_letter_a := sql db {
53 select from User where name like '_a%'
54 }!
55
56 assert users_with_name_with_second_letter_a.len == 1
57 assert users_with_name_with_second_letter_a.first().name == james.name
58}
59