package mysqlite import ( "fmt" "sync" "zombiezen.com/go/sqlite" ) // Db holds a connection to a SQLite database. type Db struct { Db *sqlite.Conn 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}, 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() }