1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/vlib/db/sqlite/sqlite_test.v

93 lines
2.1 KiB
V
Raw Normal View History

import db.sqlite
2019-10-28 10:40:41 +03:00
type Connection = sqlite.DB
struct User {
pub:
id int [primary; sql: serial]
name string
}
type Content = []u8 | string
struct Host {
pub:
db Connection
}
fn (back Host) get_users() []User {
return []
}
fn create_host(db Connection) !Host {
sql db {
create table User
}!
return Host{
db: db
}
}
2019-10-28 00:10:39 +03:00
fn test_sqlite() {
2020-04-21 06:52:44 +03:00
$if !linux {
return
}
mut db := sqlite.connect(':memory:') or { panic(err) }
assert db.is_open
2020-10-19 21:11:04 +03:00
db.exec('drop table if exists users')
2019-10-28 11:45:27 +03:00
db.exec("create table users (id integer primary key, name text default '');")
db.exec("insert into users (name) values ('Sam')")
assert db.last_insert_rowid() == 1
2022-11-14 17:23:42 +03:00
assert db.get_affected_rows_count() == 1
2019-10-28 11:45:27 +03:00
db.exec("insert into users (name) values ('Peter')")
assert db.last_insert_rowid() == 2
2019-10-28 11:45:27 +03:00
db.exec("insert into users (name) values ('Kate')")
assert db.last_insert_rowid() == 3
2019-10-28 11:45:27 +03:00
nr_users := db.q_int('select count(*) from users')
assert nr_users == 3
2019-10-28 11:45:27 +03:00
name := db.q_string('select name from users where id = 1')
assert name == 'Sam'
2022-11-14 17:23:42 +03:00
// this insert will be rejected due to duplicated id
db.exec("insert into users (id,name) values (1,'Sam')")
assert db.get_affected_rows_count() == 0
users, mut code := db.exec('select * from users')
2019-10-28 11:45:27 +03:00
assert users.len == 3
assert code == 101
code = db.exec_none('vacuum')
assert code == 101
user := db.exec_one('select * from users where id = 3') or { panic(err) }
2021-05-16 04:28:11 +03:00
println(user)
assert user.vals.len == 2
2022-11-14 17:23:42 +03:00
db.exec("update users set name='zzzz' where name='qqqq'")
assert db.get_affected_rows_count() == 0
db.exec("update users set name='Peter1' where name='Peter'")
assert db.get_affected_rows_count() == 1
db.exec("delete from users where name='qqqq'")
assert db.get_affected_rows_count() == 0
db.exec("delete from users where name='Sam'")
assert db.get_affected_rows_count() == 1
db.close() or { panic(err) }
assert !db.is_open
}
2021-11-17 05:45:50 +03:00
fn test_can_access_sqlite_result_consts() {
assert sqlite.sqlite_ok == 0
assert sqlite.sqlite_error == 1
2022-07-27 00:59:32 +03:00
// assert sqlite.misuse == 21
2021-11-17 05:45:50 +03:00
assert sqlite.sqlite_row == 100
assert sqlite.sqlite_done == 101
}
fn test_alias_db() {
create_host(sqlite.connect(':memory:')!)!
assert true
}