All checks were successful
release-tag / release-image (push) Successful in 2m30s
53 lines
1.8 KiB
Go
53 lines
1.8 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"))
|
|
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("/departments", am.Require(http.HandlerFunc(app.Departments)))
|
|
mux.Handle("/departments/", am.Require(http.HandlerFunc(app.DepartmentQuests)))
|
|
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))
|
|
}
|