Skip to content
Snippets Groups Projects
Select Git revision
  • 166959a173569ce996f605209bc1d711f54bcae7
  • master default protected
  • 1.31
  • 4.38.8
  • 4.38.7
  • 4.38.6
  • 4.38.5
  • 4.38.4
  • 4.38.3
  • 4.38.2
  • 4.38.1
  • 4.38.0
  • 4.37.2
  • 4.37.1
  • 4.37.0
  • 4.36.0
  • 4.35.0
  • 4.34.1
  • 4.34.0
  • 4.33.1
  • 4.33.0
  • 4.32.2
  • 4.32.1
23 results

monster.iml

  • runnable-gorm.go 962 B
    package jobqueue
    
    import (
    	"gorm.io/driver/mysql"
    	"gorm.io/gorm"
    )
    
    // DBResult is a result of a db query
    type DBResult struct {
    	RowsAffected int
    }
    
    type DBRunnable struct {
    	Type  string
    	DSN   string
    	Query string
    	db    *gorm.DB // internal for testing
    }
    
    func (d *DBRunnable) Run() (RunResult[DBResult], error) {
    	var db *gorm.DB
    	var err error
    
    	if d.db == nil {
    
    		switch d.Type {
    		case "mysql":
    			db, err = gorm.Open(mysql.Open(d.DSN), &gorm.Config{})
    
    		default:
    			return RunResult[DBResult]{Status: ResultStatusFailed}, ErrUnsupportedDatabaseType
    		}
    	} else {
    		db = d.db
    	}
    
    	if err != nil {
    		return RunResult[DBResult]{Status: ResultStatusFailed}, err
    	}
    
    	var result *gorm.DB
    
    	result = db.Exec(d.Query)
    
    	if result.Error != nil {
    		return RunResult[DBResult]{Status: ResultStatusFailed}, result.Error
    	}
    
    	return RunResult[DBResult]{
    		Status: ResultStatusSuccess,
    		Data: DBResult{
    			RowsAffected: int(result.RowsAffected),
    		},
    	}, nil
    }