Files
startrading/cmd/server/main.go
jbergner 309e94d362
All checks were successful
release-tag / release-image (push) Successful in 2m40s
init
2026-05-27 02:34:11 +02:00

51 lines
1.7 KiB
Go

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))
}