Move setup of executable workers to function
- Fix startup crash if no site_info row was found
This commit is contained in:
parent
d09bb3b99e
commit
44a00c7415
|
@ -4,7 +4,7 @@ import (
|
|||
"database/sql"
|
||||
)
|
||||
|
||||
func InitializeSiteInfoRow(db *sql.DB) error {
|
||||
func initializeSiteInfoRow(db *sql.DB) error {
|
||||
_, err := db.Exec("INSERT INTO site_info (initial_setup) VALUES (true)")
|
||||
if err != nil {
|
||||
return err
|
||||
|
@ -25,7 +25,7 @@ func GetSiteInfo(db *sql.DB) (*SiteInfo, error) {
|
|||
|
||||
if !rows.Next() {
|
||||
// Entry does not exist
|
||||
if err := InitializeSiteInfoRow(db); err != nil {
|
||||
if err := initializeSiteInfoRow(db); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
initialSetup = true
|
||||
|
|
|
@ -10,8 +10,13 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
var DarktableCli = newDarktableWorker()
|
||||
var FfmpegCli = newFfmpegWorker()
|
||||
func InitializeExecutableWorkers() {
|
||||
DarktableCli = newDarktableWorker()
|
||||
FfmpegCli = newFfmpegWorker()
|
||||
}
|
||||
|
||||
var DarktableCli *DarktableWorker = nil
|
||||
var FfmpegCli *FfmpegWorker = nil
|
||||
|
||||
type ExecutableWorker interface {
|
||||
Path() string
|
||||
|
@ -25,38 +30,42 @@ type FfmpegWorker struct {
|
|||
path string
|
||||
}
|
||||
|
||||
func newDarktableWorker() DarktableWorker {
|
||||
func newDarktableWorker() *DarktableWorker {
|
||||
path, err := exec.LookPath("darktable-cli")
|
||||
if err != nil {
|
||||
log.Println("Executable worker not found: darktable")
|
||||
} else {
|
||||
log.Println("Found executable worker: darktable")
|
||||
|
||||
return &DarktableWorker{
|
||||
path: path,
|
||||
}
|
||||
}
|
||||
|
||||
return DarktableWorker{
|
||||
path: path,
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func newFfmpegWorker() FfmpegWorker {
|
||||
func newFfmpegWorker() *FfmpegWorker {
|
||||
path, err := exec.LookPath("ffmpeg")
|
||||
if err != nil {
|
||||
log.Println("Executable worker not found: ffmpeg")
|
||||
} else {
|
||||
log.Println("Found executable worker: ffmpeg")
|
||||
|
||||
return &FfmpegWorker{
|
||||
path: path,
|
||||
}
|
||||
}
|
||||
|
||||
return FfmpegWorker{
|
||||
path: path,
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func (worker *DarktableWorker) IsInstalled() bool {
|
||||
return worker.path != ""
|
||||
return worker != nil
|
||||
}
|
||||
|
||||
func (worker *FfmpegWorker) IsInstalled() bool {
|
||||
return worker.path != ""
|
||||
return worker != nil
|
||||
}
|
||||
|
||||
func (worker *DarktableWorker) EncodeJpeg(inputPath string, outputPath string, jpegQuality int) error {
|
||||
|
|
|
@ -40,9 +40,12 @@ var global_scanner_queue ScannerQueue
|
|||
func InitializeScannerQueue(db *sql.DB) error {
|
||||
|
||||
var concurrentWorkers int
|
||||
row := db.QueryRow("SELECT concurrent_workers FROM site_info")
|
||||
if err := row.Scan(&concurrentWorkers); err != nil {
|
||||
return errors.Wrap(err, "get current workers from database")
|
||||
{
|
||||
site_info, err := models.GetSiteInfo(db)
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "get current workers from database")
|
||||
}
|
||||
concurrentWorkers = site_info.ConcurrentWorkers
|
||||
}
|
||||
|
||||
global_scanner_queue = ScannerQueue{
|
||||
|
|
|
@ -49,6 +49,8 @@ func main() {
|
|||
log.Panicf("Could not initialize periodic scanner: %s", err)
|
||||
}
|
||||
|
||||
scanner.InitializeExecutableWorkers()
|
||||
|
||||
rootRouter := mux.NewRouter()
|
||||
|
||||
rootRouter.Use(auth.Middleware(db))
|
||||
|
|
Loading…
Reference in New Issue