@@ -0,0 +1,50 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"context"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"trading-tool/internal/auth"
|
||||
"trading-tool/internal/db"
|
||||
"trading-tool/internal/handlers"
|
||||
)
|
||||
|
||||
func env(k, d string) string {
|
||||
if v := os.Getenv(k); v != "" {
|
||||
return v
|
||||
}
|
||||
return d
|
||||
}
|
||||
func main() {
|
||||
ctx := context.Background()
|
||||
database, err := db.Open(ctx, env("DATABASE_URL", "trading:trading@tcp(127.0.0.1:3306)/trading?parseTime=true&multiStatements=true"))
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
if err := db.Migrate(ctx, database); err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
am, err := auth.New(ctx, database)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
app := handlers.New(database)
|
||||
mux := http.NewServeMux()
|
||||
mux.HandleFunc("/login", app.LoginPage)
|
||||
mux.HandleFunc("/auth/login", am.Login)
|
||||
mux.HandleFunc("/auth/callback", am.Callback)
|
||||
mux.HandleFunc("/logout", auth.Logout)
|
||||
mux.Handle("/", am.Require(http.HandlerFunc(app.Home)))
|
||||
mux.Handle("/requests/new", am.Require(http.HandlerFunc(app.NewRequest)))
|
||||
mux.Handle("/quests/update", am.Require(http.HandlerFunc(app.UpdateQuest)))
|
||||
mux.Handle("/admin", am.RequireAdmin(http.HandlerFunc(app.Admin)))
|
||||
mux.Handle("/admin/departments", am.RequireAdmin(http.HandlerFunc(app.AdminDepartment)))
|
||||
mux.Handle("/admin/items", am.RequireAdmin(http.HandlerFunc(app.AdminItem)))
|
||||
mux.Handle("/admin/settings", am.RequireAdmin(http.HandlerFunc(app.AdminSetting)))
|
||||
mux.Handle("/admin/statuses", am.RequireAdmin(http.HandlerFunc(app.AdminStatus)))
|
||||
mux.Handle("/admin/workflow-rules", am.RequireAdmin(http.HandlerFunc(app.AdminWorkflowRule)))
|
||||
mux.Handle("/admin/quest-templates", am.RequireAdmin(http.HandlerFunc(app.AdminQuestTemplate)))
|
||||
log.Println("listening", env("APP_ADDR", ":8080"))
|
||||
log.Fatal(http.ListenAndServe(env("APP_ADDR", ":8080"), mux))
|
||||
}
|
||||
Reference in New Issue
Block a user