main.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  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 6h", 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. database.Database.AutoMigrate(&model.Category{})
  29. }
  30. func loadEnv() {
  31. err := godotenv.Load(".env.local")
  32. if err != nil {
  33. log.Fatal("Error loading .env file")
  34. }
  35. }
  36. func serveApplication() {
  37. router := gin.Default()
  38. router.StaticFile("/feed.xml", "./feed.xml") //filepath.Join(helper.RootDir()))
  39. publicRoutes := router.Group("/auth")
  40. publicRoutes.POST("/register", controller.Register)
  41. publicRoutes.POST("/login", controller.Login)
  42. feedRoutes := router.Group("/feed")
  43. feedRoutes.POST("/products", controller.LoadProductsInfo)
  44. feedRoutes.POST("/categories", controller.CreateUpdateCategories)
  45. feedRoutes.GET("/", controller.SendFileToClient)
  46. router.Run(":3005")
  47. fmt.Println("Server running on port 8000")
  48. }