v2 / examples / veb_fullstack / main.v
42 lines · 30 sloc · 787 bytes · b474aa0faf8d055aaced80ed0687ac354d0864a0
Raw
1module main
2
3import veb
4import databases
5import os
6
7const port = 8082
8
9pub struct Context {
10 veb.Context
11}
12
13struct App {
14 veb.StaticHandler
15}
16
17pub fn (app &App) before_request(mut ctx Context) {
18 println('[veb] before_request: ${ctx.req.method} ${ctx.req.url}')
19}
20
21fn main() {
22 mut db := databases.create_db_connection() or { panic(err) }
23
24 sql db {
25 create table User
26 create table Product
27 } or { panic('error on create table: ${err}') }
28
29 db.close() or { panic(err) }
30
31 mut app := &App{}
32 app.serve_static('/favicon.ico', 'assets/favicon.ico') or { panic(err) }
33 app.mount_static_folder_at(os.resource_abs_path('.'), '/') or { panic(err) }
34
35 veb.run[App, Context](mut app, port)
36}
37
38pub fn (mut app App) index(mut ctx Context) veb.Result {
39 title := 'veb app'
40
41 return $veb.html()
42}
43