mirror of
https://github.com/vlang/v.git
synced 2025-08-04 02:07:28 -04:00
46 lines
768 B
V
46 lines
768 B
V
// vtest build: present_sqlite3?
|
|
module main
|
|
|
|
import db.sqlite
|
|
|
|
@[table: 'blog']
|
|
pub struct Blog {
|
|
id int @[primary; sql: serial]
|
|
slug string
|
|
language string
|
|
}
|
|
|
|
fn records_by_field[T](db sqlite.DB, fieldname string, value string) ![]T {
|
|
$for field in T.fields {
|
|
if field.name == fieldname {
|
|
entries := sql db {
|
|
select from Blog where field.name == value
|
|
} or { return err }
|
|
return entries
|
|
}
|
|
}
|
|
return error('fieldname not found')
|
|
}
|
|
|
|
fn test_main() {
|
|
mut db := sqlite.connect(':memory:')!
|
|
sql db {
|
|
create table Blog
|
|
}!
|
|
|
|
row := Blog{
|
|
slug: 'Test'
|
|
language: 'v'
|
|
}
|
|
|
|
sql db {
|
|
insert row into Blog
|
|
}!
|
|
rows := records_by_field[Blog](db, 'language', 'v') or {
|
|
println(err)
|
|
return
|
|
}
|
|
assert rows.len == 1
|
|
db.close()!
|
|
}
|