refactor(API): Relspect integration
Some checks failed
CI / Test (1.23) (push) Failing after -22m46s
CI / Test (1.22) (push) Failing after -22m32s
CI / Build (push) Failing after -23m30s
CI / Lint (push) Failing after -23m12s

This commit is contained in:
Hein
2026-02-05 13:39:43 +02:00
parent 71f26c214f
commit f9773bd07f
33 changed files with 7512 additions and 58 deletions

View File

@@ -0,0 +1,88 @@
package main
import (
"context"
"fmt"
"git.warky.dev/wdevs/whatshooked/pkg/api"
"git.warky.dev/wdevs/whatshooked/pkg/config"
"git.warky.dev/wdevs/whatshooked/pkg/logging"
"git.warky.dev/wdevs/whatshooked/pkg/storage"
"github.com/rs/zerolog/log"
)
// Example: Initialize Phase 2 components and start the API server
func main() {
// Setup logging
logging.Init("info")
// Load configuration
cfg, err := config.Load("config.json")
if err != nil {
log.Fatal().Err(err).Msg("Failed to load configuration")
}
// Check if database configuration is provided
if cfg.Database.Type == "" {
log.Warn().Msg("No database configuration found, using SQLite default")
cfg.Database.Type = "sqlite"
cfg.Database.SQLitePath = "./data/whatshooked.db"
}
// Initialize database
log.Info().
Str("type", cfg.Database.Type).
Msg("Initializing database")
if err := storage.Initialize(&cfg.Database); err != nil {
log.Fatal().Err(err).Msg("Failed to initialize database")
}
defer storage.Close()
db := storage.GetDB()
// Create tables using BUN
log.Info().Msg("Creating database tables")
if err := storage.CreateTables(context.Background()); err != nil {
log.Fatal().Err(err).Msg("Failed to create tables")
}
// Seed default data (creates admin user if not exists)
log.Info().Msg("Seeding default data")
if err := storage.SeedData(context.Background()); err != nil {
log.Fatal().Err(err).Msg("Failed to seed data")
}
// Ensure API config is present
if !cfg.API.Enabled {
log.Warn().Msg("API server not enabled in config, enabling with defaults")
cfg.API.Enabled = true
}
// Create API server
log.Info().Msg("Creating API server with ResolveSpec")
server, err := api.NewServer(cfg, db)
if err != nil {
log.Fatal().Err(err).Msg("Failed to create API server")
}
// Start server
addr := fmt.Sprintf("%s:%d", cfg.API.Host, cfg.API.Port)
log.Info().
Str("address", addr).
Msg("Starting API server")
log.Info().Msg("Default admin credentials: username=admin, password=admin123")
log.Info().Msg("⚠️ Please change the default password after first login!")
log.Info().Msg("")
log.Info().Msg("API Endpoints:")
log.Info().Msgf(" - POST %s/api/v1/auth/login - Login to get JWT token", addr)
log.Info().Msgf(" - POST %s/api/v1/auth/logout - Logout and invalidate token", addr)
log.Info().Msgf(" - GET %s/api/v1/users - List users (requires auth)", addr)
log.Info().Msgf(" - GET %s/api/v1/hooks - List hooks (requires auth)", addr)
log.Info().Msgf(" - GET %s/health - Health check", addr)
// Start the server (blocking call)
if err := server.Start(); err != nil {
log.Fatal().Err(err).Msg("API server error")
}
}