1
0
mirror of https://github.com/vlang/v.git synced 2023-08-10 21:13:21 +03:00
v/examples/database/pg/customer.v

65 lines
1.5 KiB
V
Raw Normal View History

module main
import pg
const dash = '----------------------------------------------------------------'
struct Customer {
id int
name string
nr_orders int
country string
}
fn main() {
2019-12-05 22:31:56 +03:00
db := pg.connect(pg.Config{
host: 'localhost' //'127.0.0.1'
user: 'postgres'
dbname: 'customerdb'
}) or {
println('failed to connect')
println(err)
return
}
nr_customers := db.select count from Customer
println('Total customers: $nr_customers')
2019-12-05 22:31:56 +03:00
// V syntax can be used to build queries
println(dash)
2019-12-10 00:06:24 +03:00
bg_country := 'Bulgaria'
bg_customers := db.select from Customer where country == bg_country && id != 2
for customer in bg_customers {
println('$customer.country | $customer.id - $customer.name')
}
2019-12-05 22:31:56 +03:00
println(dash)
ru_customers := db.select from Customer where country == 'Russia'
for customer in ru_customers {
println('$customer.country | $customer.id - $customer.name')
}
2019-12-05 22:31:56 +03:00
// by adding `limit 1` we tell V that there will be only one object
println(dash)
2019-12-05 22:31:56 +03:00
existing := db.select from Customer where id == 1 limit 1 or { panic(err) }
println('Existing customer name: $existing.name')
println('Existing customer full information:')
println(existing)
2019-12-05 22:31:56 +03:00
println(dash)
2019-12-05 22:31:56 +03:00
q := Customer{}
// It's easy to handle queries that don't return any data
if anon := db.select from Customer where id == 12345 && name == q.name &&
nr_orders > q.nr_orders limit 1 {
println('Non existing customer name: $anon.name')
}
2019-12-05 22:31:56 +03:00
// Insert a new customer
nc := Customer{
name: 'John Doe'
nr_orders: 10
}
db.insert(nc)
}