Skip to content

Commit

Permalink
Merge pull request #1 from Jetlum/wals-without-mock
Browse files Browse the repository at this point in the history
Implement database connection and error handling and also add database migrations for Event and UserPreference models
  • Loading branch information
Jetlum authored Nov 30, 2024
2 parents 06beba2 + f4212d0 commit cfe1afa
Showing 1 changed file with 14 additions and 45 deletions.
59 changes: 14 additions & 45 deletions database/database.go
Original file line number Diff line number Diff line change
@@ -1,58 +1,27 @@
package database

import (
"errors"
"io"
"log"
"os"
"sync"
"fmt"

"github.com/Jetlum/WalletAlertService/models"
"gorm.io/driver/postgres"
"gorm.io/gorm"
)

var (
DB *gorm.DB
IsMockMode bool
ErrMockMode = errors.New("database is in mock mode")
logger = log.New(os.Stdout, "", log.LstdFlags)
mu sync.Mutex
)
var DB *gorm.DB

func init() {
// Setup mock DB in test mode
if os.Getenv("GO_ENV") == "test" {
SetupMockDB()
logger.SetOutput(io.Discard) // Use SetOutput instead of creating new logger
func InitDB(dsn string) error {
var err error
DB, err = gorm.Open(postgres.Open(dsn), &gorm.Config{})
if err != nil {
return fmt.Errorf("failed to connect to database: %w", err)
}
}

func InitDB(dsn string) (*gorm.DB, error) {
IsMockMode = true
mu.Lock()
defer mu.Unlock()

// Skip DB initialization in mock mode
if IsMockMode {
return nil, nil
// Run migrations
err = DB.AutoMigrate(&models.Event{}, &models.UserPreference{})
if err != nil {
return fmt.Errorf("failed to run migrations: %w", err)
}

return nil, nil
}

func SetupMockDB() {
mu.Lock()
defer mu.Unlock()

IsMockMode = true
DB = nil
logger = log.New(io.Discard, "", 0)
}

func ResetMockDB() {
mu.Lock()
defer mu.Unlock()

IsMockMode = false
DB = nil
logger = log.New(os.Stdout, "", log.LstdFlags)
return nil
}

0 comments on commit cfe1afa

Please sign in to comment.