status-go/appdatabase/database.go

52 lines
1.3 KiB
Go
Raw Normal View History

2019-07-25 05:35:09 +00:00
package appdatabase
import (
"database/sql"
"github.com/status-im/status-go/appdatabase/migrations"
migrationsprevnodecfg "github.com/status-im/status-go/appdatabase/migrationsprevnodecfg"
"github.com/status-im/status-go/nodecfg"
2019-07-25 05:35:09 +00:00
"github.com/status-im/status-go/sqlite"
)
// InitializeDB creates db file at a given path and applies migrations.
func InitializeDB(path, password string) (*sql.DB, error) {
db, err := sqlite.OpenDB(path, password)
if err != nil {
return nil, err
}
err = migrationsprevnodecfg.Migrate(db)
if err != nil {
return nil, err
}
// NodeConfig migration cannot be done with SQL
err = nodecfg.MigrateNodeConfig(db)
if err != nil {
return nil, err
}
2019-07-25 05:35:09 +00:00
err = migrations.Migrate(db)
if err != nil {
return nil, err
}
return db, nil
}
2021-01-07 11:15:02 +00:00
// DecryptDatabase creates an unencrypted copy of the database and copies it
// over to the given directory
func DecryptDatabase(oldPath, newPath, password string) error {
return sqlite.DecryptDB(oldPath, newPath, password)
}
// EncryptDatabase creates an encrypted copy of the database and copies it to the
// user path
func EncryptDatabase(oldPath, newPath, password string) error {
return sqlite.EncryptDB(oldPath, newPath, password)
}
func ChangeDatabasePassword(path, password, newPassword string) error {
return sqlite.ChangeEncryptionKey(path, password, newPassword)
}