You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

37 rivejä
880 B

  1. package database
  2. import (
  3. "fmt"
  4. "log/slog"
  5. "github.com/AFASystems/presence/internal/pkg/common/appcontext"
  6. "github.com/AFASystems/presence/internal/pkg/config"
  7. "github.com/AFASystems/presence/internal/pkg/model"
  8. "gorm.io/driver/postgres"
  9. "gorm.io/gorm"
  10. )
  11. func Connect(cfg *config.Config) (*gorm.DB, error) {
  12. // Connect to PostgreSQL database
  13. dsn := fmt.Sprintf(
  14. "host=%s user=%s password=%s dbname=%s port=5432 sslmode=disable",
  15. cfg.DBHost,
  16. cfg.DBUser,
  17. cfg.DBPass,
  18. cfg.DBName,
  19. )
  20. db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
  21. if err != nil {
  22. return nil, err
  23. }
  24. if err := db.AutoMigrate(&model.Gateway{}, model.Zone{}, model.TrackerZones{}, model.Tracker{}, model.Config{}, appcontext.Settings{}, model.Tracks{}, &model.Alert{}); err != nil {
  25. return nil, err
  26. }
  27. msg := "Database connection established"
  28. slog.Info(msg)
  29. return db, nil
  30. }