Refactor Store into SessionStore; move domain SQL onto User/Question/Answer.
This commit is contained in:
+10
-8
@@ -2,6 +2,7 @@ package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"database/sql"
|
||||
"errors"
|
||||
"log"
|
||||
"net/http"
|
||||
@@ -22,29 +23,30 @@ import (
|
||||
func main() {
|
||||
_ = godotenv.Load()
|
||||
|
||||
st := openStore()
|
||||
defer st.Close()
|
||||
db, sessions := openDB()
|
||||
defer db.Close()
|
||||
defer sessions.Close()
|
||||
|
||||
uploader := blob.FromEnv()
|
||||
handler := newHandler(st, uploader)
|
||||
handler := newHandler(db, sessions, uploader)
|
||||
run(&http.Server{Addr: listenAddr(), Handler: handler})
|
||||
}
|
||||
|
||||
func openStore() *store.Store {
|
||||
func openDB() (*sql.DB, *store.SessionStore) {
|
||||
databaseURL := strings.TrimSpace(os.Getenv("DATABASE_URL"))
|
||||
if databaseURL == "" {
|
||||
log.Fatal("DATABASE_URL is required")
|
||||
}
|
||||
st, err := store.OpenPostgres(databaseURL, plumber.SchemaSQL)
|
||||
db, sessions, err := store.OpenPostgres(databaseURL, plumber.SchemaSQL)
|
||||
if err != nil {
|
||||
log.Fatalf("database: %v", err)
|
||||
}
|
||||
log.Printf("database: postgres")
|
||||
return st
|
||||
return db, sessions
|
||||
}
|
||||
|
||||
func newHandler(st *store.Store, uploader blob.Uploader) http.Handler {
|
||||
srv, err := web.New(st, st.SessionStore(), plumber.TemplateFS, plumber.StaticFS, web.Config{
|
||||
func newHandler(db *sql.DB, sessions *store.SessionStore, uploader blob.Uploader) http.Handler {
|
||||
srv, err := web.New(db, sessions.Store(), plumber.TemplateFS, plumber.StaticFS, web.Config{
|
||||
AdminUsername: os.Getenv("ADMIN_USERNAME"),
|
||||
SecureCookie: os.Getenv("SECURE_COOKIE") == "1",
|
||||
Blob: uploader,
|
||||
|
||||
Reference in New Issue
Block a user