structFoo { id int [primary; sql: serial] name string [nonull] created_at time.Time [sql_type: 'DATETIME'] updated_at string [sql_type: 'DATETIME'] deleted_at time.Time children []Child [fkey: 'parent_id']}structChild { id int [primary; sql: serial] parent_id int name string}
struct User {
// id int [primary; sql: serial]
id string [default: 'gen_random_uuid()'; primary; sql_type: 'uuid']
name string [nonull; unique]
age int
created_at string [default: 'CURRENT_TIMESTAMP'; sql_type: 'TIMESTAMP']
}
import db.sqlite
mut db := sqlite.connect('./database.sqlite') or { panic(err) }
sql db { //db就是创建连接返回的变量
create table Foo
}
sql db {
drop table Foo
}
var := Foo{
name: 'abc'
created_at: time.now()
updated_at: time.now().str()
deleted_at: time.now()
children: [
Child{
name: 'abc'
},
Child{
name: 'def'
},
]
}
//结构体名作为表名,变量作为数据插入,编译器根据结构体定义跟表结构对应起来
sql db {
insert var into Foo //使用的是结构体名Foo,而不是表名
}
sql db {
update Foo set name = 'cde', updated_at = time.now() where name == 'abc'
}
sql db {
delete from Foo where id > 10
}
result := sql db {
select from Foo where id == 1
}
println(typeof(result).name) //单条记录返回User对象,多条记录返回[]User数组
result := sql db {
select from Foo where id > 1 && name != 'lasanha' limit 5
}
result := sql db {
select from Foo where id > 1 order by id
}
result := sql db {
select id,name from User //暂不支持
}
users := sql db {
select from User where id == 1
} or { println('there is an error: ${err}') }
import db.pg
struct Member {
id string [default: 'gen_random_uuid()'; primary; sql_type: 'uuid']
name string
created_at string [default: 'CURRENT_TIMESTAMP'; sql_type: 'TIMESTAMP']
}
fn main() {
db := pg.connect(pg.Config{
host: 'localhost'
port: 5432
user: 'user'
password: 'password'
dbname: 'dbname'
}) or {
println(err)
return
}
defer {
db.close()
}
sql db {
create table Member
}
new_member := Member{
name: 'John Doe'
}
sql db {
insert new_member into Member
}
selected_member := sql db {
select from Member where name == 'John Doe' limit 1
}
sql db {
update Member set name = 'Hitalo' where id == selected_member.id
}
}
db.exec('drop table if exists User') or {panic(err)}
db.exec('select id,name from User') or {panic(err)}