main.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package main
  2. import (
  3. "fmt"
  4. "log"
  5. "net/http"
  6. "os"
  7. "github.com/gorilla/handlers"
  8. "github.com/jinzhu/gorm"
  9. "gogs.carducci-dante.gov.it/karmen/core/api"
  10. "gogs.carducci-dante.gov.it/karmen/core/config"
  11. "gogs.carducci-dante.gov.it/karmen/core/renderer"
  12. "gogs.carducci-dante.gov.it/karmen/orm"
  13. )
  14. func regenerateRelations(db *gorm.DB) error {
  15. var activities []orm.Activity
  16. if err := db.Find(&activities).Error; err != nil {
  17. return err
  18. }
  19. defer func() {
  20. if err := recover(); err != nil {
  21. log.Print(err)
  22. }
  23. }()
  24. for _, a := range activities {
  25. err := db.Save(&a).Error
  26. if err != nil {
  27. panic(err)
  28. }
  29. }
  30. return nil
  31. }
  32. func main() {
  33. log.Println("Starting karmen...")
  34. db, err := orm.New(fmt.Sprintf("%s?%s", config.DBConnection, config.DBConnectionOpts))
  35. if err != nil {
  36. panic(err)
  37. }
  38. orm.Use(db)
  39. if config.ResetOnBoot {
  40. log.Print("Resetting the DB...")
  41. orm.Reset()
  42. }
  43. if config.AutoMigrateOnBoot {
  44. log.Print("Automigrating...")
  45. orm.AutoMigrate()
  46. }
  47. if config.RegenerateOnBoot {
  48. log.Print("Regenerate relations...")
  49. if err := regenerateRelations(db); err != nil {
  50. panic(err)
  51. }
  52. }
  53. rend, err := renderer.NewHTMLRenderer("templates/")
  54. if err != nil {
  55. panic(err)
  56. }
  57. renderer.Use(rend)
  58. log.Println("karmen is listening to port 3000...")
  59. if err := http.ListenAndServe(":3000", handlers.LoggingHandler(os.Stdout, api.Handlers())); err != nil {
  60. panic(err)
  61. }
  62. }