package main import ( "database/sql" "os" "screenmark/screenmark/agents/client" "screenmark/screenmark/auth" "screenmark/screenmark/images" "screenmark/screenmark/limits" "screenmark/screenmark/models" "screenmark/screenmark/processor" "screenmark/screenmark/stacks" ourmiddleware "screenmark/screenmark/middleware" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" ) type TestAiClient struct { ImageInfo client.ImageMessageContent } func (client TestAiClient) GetImageInfo(imageName string, imageData []byte) (client.ImageMessageContent, error) { return client.ImageInfo, nil } func setupRouter(db *sql.DB, jwtManager *ourmiddleware.JwtManager) chi.Router { limitsManager := limits.CreateLimitsManager(db) imageModel := models.NewImageModel(db) imageProcessorLogger := createLogger("Image Processor", os.Stdout) imageProcessor := processor.NewImageProcessor(imageProcessorLogger, imageModel) go imageProcessor.Processor.Work() stackHandler := stacks.CreateStackHandler(db, limitsManager, jwtManager) authHandler := auth.CreateAuthHandler(db, jwtManager) imageHandler := images.CreateImageHandler(db, limitsManager, jwtManager, imageProcessor.Processor) notifier := NewNotifier[Notification](10) r := chi.NewRouter() r.Use(middleware.Logger) r.Use(ourmiddleware.CorsMiddleware) r.Route("/stacks", stackHandler.CreateRoutes) r.Route("/auth", authHandler.CreateRoutes) r.Route("/images", imageHandler.CreateRoutes) r.Route("/notifications", func(r chi.Router) { r.Use(ourmiddleware.GetUserIdFromUrl(jwtManager)) r.Get("/", CreateEventsHandler(¬ifier)) }) return r }