package main import ( "log" "net/http" "screenmark/screenmark/agents/client" "screenmark/screenmark/auth" "screenmark/screenmark/images" "screenmark/screenmark/models" "screenmark/screenmark/stacks" ourmiddleware "screenmark/screenmark/middleware" "github.com/go-chi/chi/v5" "github.com/go-chi/chi/v5/middleware" "github.com/joho/godotenv" ) type TestAiClient struct { ImageInfo client.ImageMessageContent } func (client TestAiClient) GetImageInfo(imageName string, imageData []byte) (client.ImageMessageContent, error) { return client.ImageInfo, nil } func main() { err := godotenv.Load() if err != nil { panic(err) } db, err := models.InitDatabase() if err != nil { panic(err) } imageModel := models.NewImageModel(db) stackHandler := stacks.CreateStackHandler(db) authHandler := auth.CreateAuthHandler(db) imageHandler := images.CreateImageHandler(db) notifier := NewNotifier[Notification](10) go ListenNewImageEvents(db, ¬ifier) go ListenProcessingImageStatus(db, imageModel, ¬ifier) go ListenNewStackEvents(db) 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) r.Get("/", CreateEventsHandler(¬ifier)) }) logWriter := DatabaseWriter{ dbPool: db, } r.Route("/logs", createLogHandler(&logWriter)) log.Println("Listening and serving on port 3040.") if err := http.ListenAndServe(":3040", r); err != nil { log.Println(err) return } }