Files
arc-evilsocket/db/setup.go
2019-11-20 12:07:36 +01:00

71 lines
1.3 KiB
Go

/*
* Arc - Copyleft of Simone 'evilsocket' Margaritelli.
* evilsocket at protonmail dot com
* https://www.evilsocket.net/
*
* See LICENSE.
*/
package db
import (
"github.com/evilsocket/arc/config"
"github.com/evilsocket/arc/utils"
"github.com/evilsocket/islazy/log"
"github.com/evilsocket/islazy/tui"
"os"
"time"
)
var (
dbIndex = (*Index)(nil)
dbNextId = uint64(0)
Size = uint64(0)
)
func Setup() (created bool, err error) {
started := time.Now()
if config.Conf.Database, err = utils.ExpandPath(config.Conf.Database); err != nil {
return false, err
}
if _, err = os.Stat(config.Conf.Database); os.IsNotExist(err) {
created = true
log.Warning("Creating database %s ...", tui.Bold(config.Conf.Database))
} else {
created = false
log.Info("Loading database %s ...", tui.Bold(config.Conf.Database))
}
dbIndex, err = LoadIndex(config.Conf.Database)
if err != nil {
return false, err
}
for id := range dbIndex.Records() {
if id > dbNextId {
dbNextId = id + 1
}
}
elapsed := time.Since(started)
log.Debug(" dbNextId=%d", dbNextId)
log.Info("%s of records loaded in %s.", utils.FormatBytes(Size), elapsed)
return created, nil
}
func Lock() {
dbIndex.Lock()
}
func Unlock() {
dbIndex.Unlock()
}
func GetStores() map[uint64]*Record {
return dbIndex.Records()
}