main.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  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. "os"
  10. "github.com/gin-gonic/gin"
  11. "github.com/joho/godotenv"
  12. "github.com/robfig/cron"
  13. )
  14. func main() {
  15. loadEnv()
  16. loadDatabase()
  17. startCronJob()
  18. serveApplication()
  19. }
  20. func startCronJob() {
  21. cron := cron.New()
  22. fmt.Println(os.Getenv("CRON_XML_FEED"))
  23. fmt.Println(os.Getenv("CRON_CSV_DELTA"))
  24. cron.AddFunc(os.Getenv("CRON_XML_FEED"), cronjob.CreateXMLFeed)
  25. cron.AddFunc(os.Getenv("CRON_CSV_DELTA"), cronjob.CreateCSVDeltaFeed)
  26. cron.Start()
  27. }
  28. func loadDatabase() {
  29. database.Connect()
  30. database.Database.AutoMigrate(&model.User{})
  31. database.Database.AutoMigrate(&model.Product{})
  32. database.Database.AutoMigrate(&model.Category{})
  33. database.Database.AutoMigrate(&model.Availability{})
  34. }
  35. func loadEnv() {
  36. err := godotenv.Load(".env.local")
  37. if err != nil {
  38. log.Fatal("Error loading .env file")
  39. }
  40. }
  41. func serveApplication() {
  42. router := gin.Default()
  43. router.StaticFile("/feed.xml", "./feed.xml") //filepath.Join(helper.RootDir()))
  44. router.StaticFile("/delta.csv", "./delta.csv") //filepath.Join(helper.RootDir()))
  45. publicRoutes := router.Group("/auth")
  46. publicRoutes.POST("/register", controller.Register)
  47. publicRoutes.POST("/login", controller.Login)
  48. feedRoutes := router.Group("/feed")
  49. feedRoutes.POST("/products", controller.LoadProductsInfo)
  50. feedRoutes.POST("/categories", controller.CreateUpdateCategories)
  51. feedRoutes.GET("/", controller.SendXmlFeedToClient)
  52. deltaRoutes := router.Group("/delta")
  53. deltaRoutes.POST("/availability", controller.LoadAvailabilityInfo)
  54. deltaRoutes.GET("/availability", controller.SendCsvDeltaToClient)
  55. serviceRoutes := router.Group("/service")
  56. serviceRoutes.GET("/working", controller.HealthCheck)
  57. router.Run(":3005")
  58. fmt.Println("Server running on port 3005")
  59. }