github.com/status-im/status-go@v1.1.0/walletdatabase/database.go (about)

     1  package walletdatabase
     2  
     3  import (
     4  	"database/sql"
     5  
     6  	"github.com/status-im/status-go/sqlite"
     7  	"github.com/status-im/status-go/walletdatabase/migrations"
     8  )
     9  
    10  type DbInitializer struct {
    11  }
    12  
    13  func (a DbInitializer) Initialize(path, password string, kdfIterationsNumber int) (*sql.DB, error) {
    14  	return InitializeDB(path, password, kdfIterationsNumber)
    15  }
    16  
    17  var walletCustomSteps = []*sqlite.PostStep{}
    18  
    19  func doMigration(db *sql.DB) error {
    20  	// Run all the new migrations
    21  	return migrations.Migrate(db, walletCustomSteps)
    22  }
    23  
    24  // InitializeDB creates db file at a given path and applies migrations.
    25  func InitializeDB(path, password string, kdfIterationsNumber int) (*sql.DB, error) {
    26  	db, err := sqlite.OpenDB(path, password, kdfIterationsNumber)
    27  	if err != nil {
    28  		return nil, err
    29  	}
    30  
    31  	err = doMigration(db)
    32  	if err != nil {
    33  		return nil, err
    34  	}
    35  
    36  	return db, nil
    37  }