diff --git a/server/internal/memory_db.go b/server/internal/memory_db.go index 195384b..9b56bcb 100644 --- a/server/internal/memory_db.go +++ b/server/internal/memory_db.go @@ -4,6 +4,7 @@ import ( "encoding/gob" "errors" "fmt" + "log/slog" "os" "path/filepath" "sync" @@ -115,7 +116,7 @@ func (m *MemoryDB) Persist() error { } // WIP: Restore a persisted state -func (m *MemoryDB) Restore() { +func (m *MemoryDB) Restore(logger *slog.Logger) { fd, err := os.Open("session.dat") if err != nil { return @@ -136,6 +137,7 @@ func (m *MemoryDB) Restore() { Progress: proc.Progress, Output: proc.Output, Params: proc.Params, + Logger: logger, } m.table.Store(proc.Id, restored) diff --git a/server/internal/playlist.go b/server/internal/playlist.go index 422e8e9..c37477e 100644 --- a/server/internal/playlist.go +++ b/server/internal/playlist.go @@ -91,7 +91,11 @@ func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger return err } - proc := &Process{Url: req.URL, Params: req.Params} + proc := &Process{ + Url: req.URL, + Params: req.Params, + Logger: logger, + } mq.Publish(proc) logger.Info("sending new process to message queue", slog.String("url", proc.Url)) diff --git a/server/rest/service.go b/server/rest/service.go index c038a3a..84b9baa 100644 --- a/server/rest/service.go +++ b/server/rest/service.go @@ -4,6 +4,7 @@ import ( "context" "database/sql" "errors" + "log/slog" "os" "github.com/google/uuid" @@ -11,9 +12,10 @@ import ( ) type Service struct { - mdb *internal.MemoryDB - db *sql.DB - mq *internal.MessageQueue + mdb *internal.MemoryDB + db *sql.DB + mq *internal.MessageQueue + logger *slog.Logger } func (s *Service) Exec(req internal.DownloadRequest) (string, error) { @@ -24,6 +26,7 @@ func (s *Service) Exec(req internal.DownloadRequest) (string, error) { Path: req.Path, Filename: req.Rename, }, + Logger: s.logger, } id := s.mdb.Set(p) diff --git a/server/rpc/service.go b/server/rpc/service.go index 2df2c32..f21e01a 100644 --- a/server/rpc/service.go +++ b/server/rpc/service.go @@ -71,7 +71,7 @@ func (s *Service) Progess(args Args, progress *internal.DownloadProgress) error // Progess retrieves available format for a given resource func (s *Service) Formats(args Args, meta *internal.DownloadFormats) error { var err error - p := internal.Process{Url: args.URL} + p := internal.Process{Url: args.URL, Logger: s.logger} *meta, err = p.GetFormatsSync() return err } diff --git a/server/server.go b/server/server.go index e57086b..610cf75 100644 --- a/server/server.go +++ b/server/server.go @@ -41,7 +41,6 @@ type serverConfig struct { func RunBlocking(host string, port int, frontend fs.FS, dbPath string) { var mdb internal.MemoryDB - mdb.Restore() logger := slog.New( slog.NewTextHandler( @@ -50,6 +49,8 @@ func RunBlocking(host string, port int, frontend fs.FS, dbPath string) { ), ) + mdb.Restore(logger) + db, err := sql.Open("sqlite", dbPath) if err != nil { logger.Error("failed to open database", slog.String("err", err.Error()))