All checks were successful
Build / build (push) Successful in 1m35s
49 lines
1015 B
Go
49 lines
1015 B
Go
package mysqlite
|
|
|
|
import (
|
|
"fmt"
|
|
"sync"
|
|
"zombiezen.com/go/sqlite"
|
|
)
|
|
|
|
// Db holds a connection to a SQLite database.
|
|
type Db struct {
|
|
Db *sqlite.Conn
|
|
source string
|
|
lock sync.Mutex
|
|
}
|
|
|
|
// OpenDb opens a new connection to a SQLite database.
|
|
// The databaseSource specifies the database to use. Set it to `:memory:` to use
|
|
// an in-memory database.
|
|
// Any database that was successfully opened should afterwards be closed using Db.Close
|
|
func OpenDb(databaseSource string) (*Db, error) {
|
|
conn, err := sqlite.OpenConn(databaseSource)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
return &Db{Db: conn, source: databaseSource}, nil
|
|
}
|
|
|
|
// Close closes the database.
|
|
func (d *Db) Close() error {
|
|
return d.Db.Close()
|
|
}
|
|
|
|
// MustClose closes the database. If an error occurs, it panics instead of
|
|
// returning the error.
|
|
func (d *Db) MustClose() {
|
|
err := d.Close()
|
|
if err != nil {
|
|
panic(fmt.Sprintf("error closing db: %v", err))
|
|
}
|
|
}
|
|
|
|
func (d *Db) Lock() {
|
|
d.lock.Lock()
|
|
}
|
|
|
|
func (d *Db) Unlock() {
|
|
d.lock.Unlock()
|
|
}
|