main.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. package main
  2. import (
  3. "fmt"
  4. "kng_feed_api/controller"
  5. cronjob "kng_feed_api/cron-job"
  6. "kng_feed_api/database"
  7. "kng_feed_api/model"
  8. "log"
  9. "github.com/gin-gonic/gin"
  10. "github.com/joho/godotenv"
  11. "github.com/robfig/cron"
  12. )
  13. func main() {
  14. loadEnv()
  15. loadDatabase()
  16. startCronJob()
  17. serveApplication()
  18. }
  19. func startCronJob() {
  20. cron := cron.New()
  21. cron.AddFunc("@every 15s", cronjob.CreateXMLFeed)
  22. cron.Start()
  23. }
  24. func loadDatabase() {
  25. database.Connect()
  26. database.Database.AutoMigrate(&model.User{})
  27. database.Database.AutoMigrate(model.Product{})
  28. }
  29. func loadEnv() {
  30. err := godotenv.Load(".env.local")
  31. if err != nil {
  32. log.Fatal("Error loading .env file")
  33. }
  34. }
  35. func serveApplication() {
  36. router := gin.Default()
  37. router.StaticFile("/feed.xml", "./feed.xml") //filepath.Join(helper.RootDir()))
  38. publicRoutes := router.Group("/auth")
  39. publicRoutes.POST("/register", controller.Register)
  40. publicRoutes.POST("/login", controller.Login)
  41. feedRoutes := router.Group("/feed")
  42. feedRoutes.POST("/products", controller.LoadProductsInfo)
  43. feedRoutes.GET("/", controller.SendFileToClient)
  44. router.Run(":8000")
  45. fmt.Println("Server running on port 8000")
  46. }