package main import ( "embed" "log" "os" "strconv" "github.com/getsentry/sentry-go" "github.com/joho/godotenv" "gorm.io/driver/postgres" "gorm.io/gorm" "github.com/rjNemo/rentease/config" "github.com/rjNemo/rentease/internal/booking" "github.com/rjNemo/rentease/internal/pdf" "github.com/rjNemo/rentease/internal/server" ) //go:embed assets var static embed.FS func init() { if os.Getenv("ENV") != "PROD" { err := godotenv.Load(".env") if err != nil { log.Fatalln("Error loading .env file") } } } func main() { if err := sentry.Init(sentry.ClientOptions{ Dsn: os.Getenv("SENTRY_DSN"), TracesSampleRate: 1.0, }); err != nil { log.Fatalf("error initializing sentry: %s", err) } db, err := gorm.Open(postgres.Open(os.Getenv("DATABASE_URL")), &gorm.Config{}) if err != nil { log.Fatalf("error connecting to the database %s\n", err) } err = db.AutoMigrate(&booking.Booking{}, &booking.BookingRequest{}, &booking.Item{}) if err != nil { log.Fatalf("error migrating the database %s\n", err) } ps, err := pdf.NewPdfService() if err != nil { log.Fatal(err) } p := os.Getenv("PORT") port, err := strconv.Atoi(p) if err != nil { log.Fatal(err) } srv, err := server.New(&static, booking.NewService(db), ps, config.NewHost(), server.WithPort(port)) if err != nil { log.Fatal(err) } srv.Start() }