43 lines
787 B
V
43 lines
787 B
V
module main
|
|
|
|
import veb
|
|
import databases
|
|
import os
|
|
|
|
const port = 8082
|
|
|
|
pub struct Context {
|
|
veb.Context
|
|
}
|
|
|
|
struct App {
|
|
veb.StaticHandler
|
|
}
|
|
|
|
pub fn (app &App) before_request(mut ctx Context) {
|
|
println('[veb] before_request: ${ctx.req.method} ${ctx.req.url}')
|
|
}
|
|
|
|
fn main() {
|
|
mut db := databases.create_db_connection() or { panic(err) }
|
|
|
|
sql db {
|
|
create table User
|
|
create table Product
|
|
} or { panic('error on create table: ${err}') }
|
|
|
|
db.close() or { panic(err) }
|
|
|
|
mut app := &App{}
|
|
app.serve_static('/favicon.ico', 'assets/favicon.ico') or { panic(err) }
|
|
app.mount_static_folder_at(os.resource_abs_path('.'), '/') or { panic(err) }
|
|
|
|
veb.run[App, Context](mut app, port)
|
|
}
|
|
|
|
pub fn (mut app App) index(mut ctx Context) veb.Result {
|
|
title := 'veb app'
|
|
|
|
return $veb.html()
|
|
}
|