package main import ( "embed" "flag" "log" "net/http" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" ginSwagger "github.com/swaggo/gin-swagger" "filecloud/internal/database" "filecloud/internal/handler" // _ "filecloud/docs" ) var ( configPath = flag.String("file", "./config.toml", "config file") ) //go:embed public/* var publicFS embed.FS // @title FileCloud API // @version 1.0 // @description FileCloud API documentation // @host localhost:8080 // @BasePath /api func main() { flag.Parse() logger := service.InitLogger("log", "filecloud") service.LoadConfig(*configPath) // Initialize database if err := database.InitDB(); err != nil { log.Fatal(err) } r := gin.Default() // Serve static files from embedded frontend r.StaticFS("/", http.FS(publicFS)) // API routes api := r.Group("/api") { api.POST("/files", handler.UploadFile) api.GET("/files", handler.ListFiles) } // Swagger documentation r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler)) service.Launch() logger.Info("stop") service.Stop() log.Fatal(r.Run(":8080")) }