main.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "github.com/gin-gonic/gin"
  6. "note-manager/config"
  7. "note-manager/handler"
  8. "note-manager/repository"
  9. "note-manager/router"
  10. "note-manager/service"
  11. )
  12. func main() {
  13. // 加载配置
  14. cfg := config.Load()
  15. // 初始化数据库
  16. repo, err := repository.NewNoteRepository(cfg.DBPath)
  17. if err != nil {
  18. log.Fatalf("初始化数据库失败: %v", err)
  19. }
  20. // 初始化各层
  21. noteService := service.NewNoteService(repo, cfg.PageSize)
  22. noteHandler := handler.NewNoteHandler(noteService)
  23. adminHandler := handler.NewAdminHandler(noteService, cfg)
  24. imageHandler := handler.NewImageHandler(cfg.UploadDir)
  25. // 初始化图片上传目录
  26. if err := imageHandler.Init(); err != nil {
  27. log.Fatalf("初始化上传目录失败: %v", err)
  28. }
  29. // 初始化 Gin(设置模板目录)
  30. gin.SetMode(gin.ReleaseMode)
  31. engine := gin.Default()
  32. // 加载 HTML 模板(使用 Gin 的 LoadHTMLGlob 会自动处理路径)
  33. engine.LoadHTMLGlob("./web/admin/*.html")
  34. // 加载静态文件服务
  35. engine.Static("/assets", "./web/admin")
  36. // 初始化路由
  37. router.Setup(engine, noteHandler, adminHandler, imageHandler, cfg)
  38. // 启动服务
  39. addr := fmt.Sprintf(":%s", cfg.Port)
  40. log.Printf("云笔记服务启动成功,监听端口 %s", cfg.Port)
  41. log.Printf("前台展示: http://localhost%s/", addr)
  42. log.Printf("后台管理: http://localhost%s/admin/", addr)
  43. log.Printf("图片上传目录: %s", cfg.UploadDir)
  44. log.Printf("默认密码: %s", cfg.AdminPass)
  45. if err := engine.Run(addr); err != nil {
  46. log.Fatalf("启动服务失败: %v", err)
  47. }
  48. }