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