rentease/main.go
2024-04-06 13:34:33 +02:00

72 lines
1.5 KiB
Go

package main
import (
"embed"
"flag"
"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
var envFile = flag.String("env", ".env", "env file name")
func init() {
flag.Parse()
if os.Getenv("ENV") != "PROD" {
log.Printf("Loading env file: %q", *envFile)
err := godotenv.Load(*envFile)
if err != nil {
log.Fatalln("Error loading .env file")
}
}
}
func main() {
if err := sentry.Init(sentry.ClientOptions{
Dsn: os.Getenv("SENTRY_DSN"),
EnableTracing: true,
TracesSampleRate: 1.0,
ProfilesSampleRate: 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()
}