Gonçalo Rodrigues 13b7149614 First Commit
2026-06-13 11:25:23 +01:00

55 lines
1.5 KiB
Go

package main
import (
"context"
"log/slog"
"net/http"
"homelab/pkg/logger"
"homelab/pkg/mongo"
"homelab/pkg/setup"
"homelab/pkg/trace"
)
func main() {
logger.Init()
defer trace.Init(context.Background(), "users")()
db, err := mongo.Connect(context.Background())
if err != nil {
slog.Error("mongo connect", "err", err)
return
}
defer db.Close(context.Background())
h := NewHandler(db)
if err := h.SeedAdmin(context.Background()); err != nil {
slog.Error("seed admin", "err", err)
}
if err := h.SeedRoles(context.Background()); err != nil {
slog.Error("seed roles", "err", err)
}
mux := http.NewServeMux()
mux.HandleFunc("POST /register", h.Register)
mux.HandleFunc("GET /users/{id}", h.GetUser)
mux.HandleFunc("GET /users/email/{email}", h.GetUserByEmail)
mux.HandleFunc("POST /invites", h.CreateInvite)
mux.HandleFunc("POST /verify-password", h.VerifyPassword)
mux.HandleFunc("GET /admin/roles", h.AdminListRoles)
mux.HandleFunc("POST /admin/roles", h.AdminCreateRole)
mux.HandleFunc("GET /admin/roles/{id}", h.AdminGetRole)
mux.HandleFunc("PUT /admin/roles/{id}", h.AdminUpdateRole)
mux.HandleFunc("DELETE /admin/roles/{id}", h.AdminDeleteRole)
mux.HandleFunc("GET /admin/users", h.AdminListUsers)
mux.HandleFunc("POST /admin/users", h.AdminCreateUser)
mux.HandleFunc("PUT /admin/users/{id}", h.AdminUpdateUser)
mux.HandleFunc("POST /admin/invites", h.CreateInvite)
srv := setup.Default("users", mux)
if err := srv.Run(context.Background()); err != nil {
slog.Error("server exited", "err", err)
}
}