main.go 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. cron.AddFunc(os.Getenv("CRON_XML_FEED"), cronjob.CreateXMLFeed)
  23. cron.AddFunc(os.Getenv("CRON_CSV_DELTA"), cronjob.CreateCSVDeltaFeed)
  24. cron.Start()
  25. }
  26. func loadDatabase() {
  27. database.Connect()
  28. database.Database.AutoMigrate(&model.User{})
  29. database.Database.AutoMigrate(&model.Product{})
  30. database.Database.AutoMigrate(&model.Category{})
  31. }
  32. func loadEnv() {
  33. err := godotenv.Load(".env.local")
  34. if err != nil {
  35. log.Fatal("Error loading .env file")
  36. }
  37. }
  38. func serveApplication() {
  39. router := gin.Default()
  40. router.StaticFile("/feed.xml", "./feed.xml") //filepath.Join(helper.RootDir()))
  41. router.StaticFile("/delta.csv", "./delta.csv") //filepath.Join(helper.RootDir()))
  42. publicRoutes := router.Group("/auth")
  43. publicRoutes.POST("/register", controller.Register)
  44. publicRoutes.POST("/login", controller.Login)
  45. feedRoutes := router.Group("/feed")
  46. feedRoutes.POST("/products", controller.LoadProductsInfo)
  47. feedRoutes.POST("/categories", controller.CreateUpdateCategories)
  48. feedRoutes.GET("/", controller.SendXmlFeedToClient)
  49. deltaRoutes := router.Group("/delta")
  50. deltaRoutes.POST("/availability", controller.LoadAvailabilityInfo)
  51. deltaRoutes.GET("/", controller.SendCsvDeltaToClient)
  52. router.Run(":3005")
  53. fmt.Println("Server running on port 3005")
  54. }