bolt: support open as readonly
This commit is contained in:
parent
2b309fbda7
commit
a14e58297a
10
db_bolt.go
10
db_bolt.go
@ -107,9 +107,15 @@ var _ loadedDatabase = &boltLoadedDatabase{} // interface assertion
|
||||
|
||||
//
|
||||
|
||||
func (f *TMainForm) boltAddDatabaseFromFile(path string) {
|
||||
func (f *TMainForm) boltAddDatabaseFromFile(path string, readonly bool) {
|
||||
// TODO load in background thread to stop blocking the UI
|
||||
db, err := bbolt.Open(path, 0644, &bbolt.Options{Timeout: 1 * time.Second})
|
||||
|
||||
opts := bbolt.Options{
|
||||
Timeout: 1 * time.Second,
|
||||
ReadOnly: readonly,
|
||||
}
|
||||
|
||||
db, err := bbolt.Open(path, 0644, &opts)
|
||||
if err != nil {
|
||||
vcl.ShowMessage(fmt.Sprintf("Failed to load database '%s': %s", path, err.Error()))
|
||||
return
|
||||
|
13
main.go
13
main.go
@ -65,6 +65,7 @@ func (f *TMainForm) OnFormCreate(sender vcl.IObject) {
|
||||
mnuFile.Add(mnuFileBolt)
|
||||
|
||||
vcl_menuitem(mnuFileBolt, "Open database...", imgDatabaseAdd, f.OnMnuFileBoltOpenClick)
|
||||
vcl_menuitem(mnuFileBolt, "Open database (read-only)...", imgDatabaseAdd, f.OnMnuFileBoltOpenReadonlyClick)
|
||||
|
||||
//
|
||||
|
||||
@ -251,7 +252,17 @@ func (f *TMainForm) OnMnuFileBoltOpenClick(sender vcl.IObject) {
|
||||
dlg.SetFilter("Bolt database|*.db|All files|*.*")
|
||||
ret := dlg.Execute() // Fake blocking
|
||||
if ret {
|
||||
f.boltAddDatabaseFromFile(dlg.FileName())
|
||||
f.boltAddDatabaseFromFile(dlg.FileName(), false)
|
||||
}
|
||||
}
|
||||
|
||||
func (f *TMainForm) OnMnuFileBoltOpenReadonlyClick(sender vcl.IObject) {
|
||||
dlg := vcl.NewOpenDialog(f)
|
||||
dlg.SetTitle("Select a database file...")
|
||||
dlg.SetFilter("Bolt database|*.db|All files|*.*")
|
||||
ret := dlg.Execute() // Fake blocking
|
||||
if ret {
|
||||
f.boltAddDatabaseFromFile(dlg.FileName(), true)
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user