Pass ConnectionManager to Worker constructor to enable WebSocket broadcasting capabilities. Updated: - main.go: server initialization - test_helpers.go: test setup - commonhandlers.go: handler initialization This change enables Worker to broadcast job updates to connected clients.
71 lines
2.0 KiB
Go
71 lines
2.0 KiB
Go
package handlers
|
|
|
|
import (
|
|
"bookhoard/internal/config"
|
|
"bookhoard/internal/database"
|
|
"bookhoard/internal/services"
|
|
wsync "bookhoard/internal/sync"
|
|
"context"
|
|
"sync"
|
|
"time"
|
|
|
|
"github.com/labstack/echo/v4"
|
|
)
|
|
|
|
type Handler struct {
|
|
db *database.Queries
|
|
scanner *services.MediaScanner
|
|
worker *services.Worker
|
|
queueProcessor *wsync.SyncQueueProcessor
|
|
queueCtx context.Context
|
|
queueCancel context.CancelFunc
|
|
ctx context.Context
|
|
cancel context.CancelFunc
|
|
mu sync.Mutex
|
|
watchModeCtx context.Context
|
|
watchModeCancel context.CancelFunc
|
|
watchingLibraries map[string]bool
|
|
connManager *wsync.ConnectionManager
|
|
cleanupTaskCancel context.CancelFunc
|
|
config *config.Config
|
|
}
|
|
|
|
func NewHandler(db *database.Queries, connManager *wsync.ConnectionManager, queueProcessor *wsync.SyncQueueProcessor, cfg *config.Config) *Handler {
|
|
ctx, cancel := context.WithCancel(context.Background())
|
|
worker := services.NewWorker(3, connManager)
|
|
|
|
queueCtx, queueCancel := context.WithCancel(context.Background())
|
|
|
|
watchCtx, watchCancel := context.WithCancel(context.Background())
|
|
|
|
return &Handler{
|
|
db: db,
|
|
scanner: services.NewMediaScanner(db),
|
|
worker: worker,
|
|
queueProcessor: queueProcessor,
|
|
queueCtx: queueCtx,
|
|
queueCancel: queueCancel,
|
|
ctx: ctx,
|
|
cancel: cancel,
|
|
watchModeCtx: watchCtx,
|
|
watchModeCancel: watchCancel,
|
|
watchingLibraries: make(map[string]bool),
|
|
connManager: connManager,
|
|
}
|
|
}
|
|
|
|
// parseDate parses a date string in YYYY-MM-DD format
|
|
func parseDate(dateStr string) time.Time {
|
|
if dateStr == "" {
|
|
return time.Time{}
|
|
}
|
|
if t, err := time.Parse("2006-01-02", dateStr); err == nil {
|
|
return t
|
|
}
|
|
return time.Time{}
|
|
}
|
|
|
|
func SetupRoutes(g *echo.Group, db *database.Queries, connManager *wsync.ConnectionManager, queueProcessor *wsync.SyncQueueProcessor, cfg *config.Config) *Handler {
|
|
return NewHandler(db, connManager, queueProcessor, cfg)
|
|
}
|