forked from electricdusk/rushlink
Refactor main into subdirs
This commit is contained in:
28
db/db.go
28
db/db.go
@@ -1,6 +1,7 @@
|
||||
package db
|
||||
|
||||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"log"
|
||||
"time"
|
||||
@@ -11,6 +12,7 @@ import (
|
||||
"gitea.hashru.nl/dsprenkels/rushlink/gobmarsh"
|
||||
)
|
||||
|
||||
var path = flag.String("database", "", "Location of the database file")
|
||||
var DB *bolt.DB
|
||||
|
||||
// The current database version
|
||||
@@ -31,15 +33,35 @@ const BUCKET_PASTES = "pastes"
|
||||
const KEY_MIGRATE_VERSION = "migrate_version"
|
||||
|
||||
// Open the bolt database
|
||||
func Init(name string) error {
|
||||
func Open() error {
|
||||
if *path == "" {
|
||||
return errors.New("database not set")
|
||||
}
|
||||
|
||||
var err error
|
||||
DB, err = bolt.Open(name, 0666, &bolt.Options{Timeout: 1 * time.Second})
|
||||
DB, err = bolt.Open(*path, 0666, &bolt.Options{Timeout: 1 * time.Second})
|
||||
if err != nil {
|
||||
return errors.Wrapf(err, "failed to open database at '%v'", name)
|
||||
return errors.Wrapf(err, "failed to open database at '%v'", *path)
|
||||
}
|
||||
return DB.Update(migrateDatabase)
|
||||
}
|
||||
|
||||
// Close the bolt database
|
||||
func Close() error {
|
||||
if DB == nil {
|
||||
panic("no open database")
|
||||
}
|
||||
return DB.Close()
|
||||
}
|
||||
|
||||
// Get the database path (as was set by flags)
|
||||
func Path() string {
|
||||
if path == nil {
|
||||
return ""
|
||||
}
|
||||
return *path
|
||||
}
|
||||
|
||||
// Initialize and migrate the database to the current version
|
||||
func migrateDatabase(tx *bolt.Tx) error {
|
||||
dbVersion, err := dbVersion(tx)
|
||||
|
||||
Reference in New Issue
Block a user