https://github.com/go-martini/martini
https://github.com/martini-contrib/sessions
sessionsのmoduleが必要
$ go get github.com/martini-contrib/sessions
store := sessions.NewCookieStore([]byte("secret123"))
m := martini.Classic()
m.Use(sessions.Sessions("my_session", store))
m.Get("/set", func(session sessions.Session) string {
session.Set("user", "ok")
return "OK"
})
m.Run()
bindingのmoduleが必要。
$ go get github.com/martini-contrib/binding
type LoginForm struct {
Uuid string `form:"uuid"`
Name string `form:"name"`
PostData time.Time
}
m.Post("/login", binding.Bind(LoginForm{}),
func(form LoginForm, session sessions.Session) string {
session.Set("uuid", form.Uuid)
return "OK"
})
m.Use(render.Renderer(render.Options{
Directory: "templates", // Specify what path to load the templates from.
Extensions: []string{".tmpl", ".html"}, // Specify extensions to load for templates.
}))
https://github.com/martini-contrib/render
$ go get github.com/martini-contrib/render
https://github.com/martini-contrib/render
ちょっとハマったのでメモ
{{with $name := .Name}}
{{ .Name}} // エラー
{{ $name}} // OK
{{else}}
{{end}}
AccountというstructにEmpty()
というメソッドがあると
そのままtemplate上で呼び出せる
func (a *Account) Empty() bool {
return true
}
{{if .Account.Empty}}
not account
{{else}}
{{ .Account.Name}}
{{end}}
m.Post("/logout", func(r render.Render, session sessions.Session) {
session.Clear()
r.Redirect("/")
})
- levelDB
- PostgreSql
- SQLite
m := martini.Classic()
m.Map(SetupDB())
func SetupDB() *sql.DB {
dbUrl := os.Getenv("DATABASE_URL")
db, err := sql.Open("postgres", dbUrl)
if err != nil {
log.Fatalf("データベースの接続に失敗しました。: %v", err)
}
return db
}
生SQL書くの辛いのでいい感じのO/Rマッパーとかに変える予定。
なんかconfigとかで処理すればよさそう。 めんどくさかったらローカルもDATABASE_URLにURL設定しちゃえば良さそう。
m := martini.Classic()
m.Map(SetupDB())
func SetupDB() *sql.DB {
dbUrl = "user=kyokomi password=kyokomi host=localhost port=5432 dbname=roguegame sslmode=disable"
db, err := sql.Open("postgres", dbUrl)
if err != nil {
log.Fatalf("データベースの接続に失敗しました。: %v", err)
}
return db
}
https://github.com/go-xorm/xorm
structベースでdatabaseが操作できる。
https://github.com/go-xorm/cmd/blob/master/README.md
※まだ
※まだ
※まだ
普通に引数に追加すればMartiniのlogに乗っかれる
m.Get("/", func (l *log.Logger) {
})