filecloud.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. import (
  3. "flag"
  4. "log"
  5. "github.com/gin-gonic/gin"
  6. swaggerFiles "github.com/swaggo/files"
  7. ginSwagger "github.com/swaggo/gin-swagger"
  8. "filecloud/internal/database"
  9. "filecloud/internal/handler"
  10. "filecloud/service"
  11. _ "filecloud/docs" // 取消注释,启用 Swagger 文档
  12. )
  13. var (
  14. configPath = flag.String("file", "./config.toml", "config file")
  15. )
  16. // @title FileCloud API
  17. // @version 1.0
  18. // @description FileCloud API documentation
  19. // @host localhost:8080
  20. // @BasePath /api
  21. func main() {
  22. flag.Parse()
  23. logger := service.InitLogger("log", "filecloud")
  24. service.LoadConfig(*configPath)
  25. // Initialize database
  26. if err := database.InitDB(); err != nil {
  27. log.Fatal(err)
  28. }
  29. r := gin.Default()
  30. // 静态文件服务用 /static 前缀
  31. r.Static("/static", "./public")
  32. // API routes
  33. api := r.Group("/api")
  34. {
  35. api.POST("/files", handler.UploadFile)
  36. api.GET("/files", handler.ListFiles)
  37. }
  38. // Swagger documentation
  39. r.GET("/swagger/*any", ginSwagger.WrapHandler(swaggerFiles.Handler))
  40. service.Launch()
  41. logger.Info("stop")
  42. service.Stop()
  43. log.Fatal(r.Run(":8080"))
  44. }