1
Fork 0

Move setup of executable workers to function

- Fix startup crash if no site_info row was found
This commit is contained in:
viktorstrate 2020-09-23 14:34:26 +02:00
parent d09bb3b99e
commit 44a00c7415
4 changed files with 31 additions and 17 deletions

View File

@ -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

View File

@ -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 {

View File

@ -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{

View File

@ -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))