Compare commits
No commits in common. "850e4a27d8577f9e4135f8c9c96e2064fa13903d" and "94ae36305aa7b9d0e6519e2c659d978d82d9a42d" have entirely different histories.
850e4a27d8
...
94ae36305a
@ -8,9 +8,8 @@ import (
|
||||
|
||||
// Db holds a connection to a SQLite database.
|
||||
type Db struct {
|
||||
Db *sqlite.Conn
|
||||
source string
|
||||
lock sync.Mutex
|
||||
Db *sqlite.Conn
|
||||
lock sync.Mutex
|
||||
}
|
||||
|
||||
// OpenDb opens a new connection to a SQLite database.
|
||||
@ -22,7 +21,7 @@ func OpenDb(databaseSource string) (*Db, error) {
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &Db{Db: conn, source: databaseSource}, nil
|
||||
return &Db{Db: conn}, nil
|
||||
}
|
||||
|
||||
// Close closes the database.
|
||||
|
15
migrator.go
15
migrator.go
@ -4,7 +4,6 @@ import (
|
||||
"fmt"
|
||||
"io/fs"
|
||||
"log"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
"strings"
|
||||
@ -41,20 +40,6 @@ func (d *Db) MigrateDb(filesystem ReadDirFileFS, directory string) error {
|
||||
}
|
||||
log.Printf("Current version is %d, max migration version is %d", currentVersion, latestVersion)
|
||||
|
||||
// Create a backup if we're not on the latest version
|
||||
if currentVersion != latestVersion && d.source != ":memory:" {
|
||||
target := d.source + ".backup." + strconv.Itoa(currentVersion)
|
||||
log.Printf("Creating backup of database to %s", target)
|
||||
data, err := d.Db.Serialize("main")
|
||||
if err != nil {
|
||||
return fmt.Errorf("error serializing database: %v", err)
|
||||
}
|
||||
err = os.WriteFile(target, data, 0644)
|
||||
if err != nil {
|
||||
return fmt.Errorf("error writing backup: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// If we are no up-to-date, bring the db up-to-date
|
||||
for currentVersion != latestVersion {
|
||||
targetVersion := currentVersion + 1
|
||||
|
@ -110,26 +110,3 @@ func TestQueryWithPointerStringArgumentsCanSetToNull(t *testing.T) {
|
||||
require.NoError(t, err)
|
||||
require.Nil(t, result)
|
||||
}
|
||||
|
||||
func TestDeleteQuery(t *testing.T) {
|
||||
db := openTestDb(t)
|
||||
db.Query("delete from mytable where key = 'foo'").MustExec()
|
||||
|
||||
var count int
|
||||
db.Query("select count(*) from mytable where key = 'foo'").MustScanSingle(&count)
|
||||
require.Equal(t, 0, count, "expected row to be deleted")
|
||||
}
|
||||
|
||||
func TestTransactionRollback(t *testing.T) {
|
||||
db := openTestDb(t)
|
||||
func() {
|
||||
tx := db.MustBegin()
|
||||
defer tx.MustRollback()
|
||||
tx.Query("update mytable set value = 'ipsum' where key = 'foo'").MustExec()
|
||||
// Intentionally not committing the transaction
|
||||
}()
|
||||
|
||||
var value string
|
||||
db.Query("select value from mytable where key = 'foo'").MustScanSingle(&value)
|
||||
require.Equal(t, "bar", value, "expected original value after rollback")
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user