package Database
|
|
|
|
import (
|
|
"database/sql"
|
|
"time"
|
|
|
|
_ "github.com/mattn/go-sqlite3"
|
|
bolt "go.etcd.io/bbolt"
|
|
|
|
"PackageManager/Variables"
|
|
)
|
|
|
|
var (
|
|
DB *sql.DB
|
|
FsDB *bolt.DB
|
|
)
|
|
|
|
func init() {
|
|
var e error
|
|
// Initialise sqlite3 database for package versioning
|
|
DB, e = sql.Open("sqlite3", Variables.DatabaseName)
|
|
if e != nil {
|
|
panic(e)
|
|
}
|
|
|
|
// Initialise bolt db for filesystem hashing
|
|
FsDB, e = bolt.Open(Variables.FsHashDatabaseName, 0600, &bolt.Options{
|
|
Timeout: 5 * time.Second,
|
|
})
|
|
if e != nil {
|
|
panic(e)
|
|
}
|
|
}
|
|
|
|
func InitDB() error {
|
|
var (
|
|
tx *bolt.Tx
|
|
e error
|
|
)
|
|
|
|
tx, e = FsDB.Begin(true)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
defer tx.Rollback()
|
|
|
|
_, e = tx.CreateBucketIfNotExists(Variables.FsHashIndexBucket)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
|
|
_, e = tx.CreateBucketIfNotExists(Variables.FsHashPicksBucket)
|
|
if e != nil {
|
|
return e
|
|
}
|
|
|
|
e = tx.Commit()
|
|
|
|
return e
|
|
}
|