@@ -4,6 +4,7 @@ import (
|
|||||||
"encoding/gob"
|
"encoding/gob"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"log/slog"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"sync"
|
"sync"
|
||||||
@@ -115,7 +116,7 @@ func (m *MemoryDB) Persist() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// WIP: Restore a persisted state
|
// WIP: Restore a persisted state
|
||||||
func (m *MemoryDB) Restore() {
|
func (m *MemoryDB) Restore(logger *slog.Logger) {
|
||||||
fd, err := os.Open("session.dat")
|
fd, err := os.Open("session.dat")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return
|
return
|
||||||
@@ -136,6 +137,7 @@ func (m *MemoryDB) Restore() {
|
|||||||
Progress: proc.Progress,
|
Progress: proc.Progress,
|
||||||
Output: proc.Output,
|
Output: proc.Output,
|
||||||
Params: proc.Params,
|
Params: proc.Params,
|
||||||
|
Logger: logger,
|
||||||
}
|
}
|
||||||
|
|
||||||
m.table.Store(proc.Id, restored)
|
m.table.Store(proc.Id, restored)
|
||||||
|
|||||||
@@ -91,7 +91,11 @@ func PlaylistDetect(req DownloadRequest, mq *MessageQueue, db *MemoryDB, logger
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
proc := &Process{Url: req.URL, Params: req.Params}
|
proc := &Process{
|
||||||
|
Url: req.URL,
|
||||||
|
Params: req.Params,
|
||||||
|
Logger: logger,
|
||||||
|
}
|
||||||
|
|
||||||
mq.Publish(proc)
|
mq.Publish(proc)
|
||||||
logger.Info("sending new process to message queue", slog.String("url", proc.Url))
|
logger.Info("sending new process to message queue", slog.String("url", proc.Url))
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"database/sql"
|
"database/sql"
|
||||||
"errors"
|
"errors"
|
||||||
|
"log/slog"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
"github.com/google/uuid"
|
"github.com/google/uuid"
|
||||||
@@ -11,9 +12,10 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
type Service struct {
|
type Service struct {
|
||||||
mdb *internal.MemoryDB
|
mdb *internal.MemoryDB
|
||||||
db *sql.DB
|
db *sql.DB
|
||||||
mq *internal.MessageQueue
|
mq *internal.MessageQueue
|
||||||
|
logger *slog.Logger
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *Service) Exec(req internal.DownloadRequest) (string, error) {
|
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,
|
Path: req.Path,
|
||||||
Filename: req.Rename,
|
Filename: req.Rename,
|
||||||
},
|
},
|
||||||
|
Logger: s.logger,
|
||||||
}
|
}
|
||||||
|
|
||||||
id := s.mdb.Set(p)
|
id := s.mdb.Set(p)
|
||||||
|
|||||||
@@ -71,7 +71,7 @@ func (s *Service) Progess(args Args, progress *internal.DownloadProgress) error
|
|||||||
// Progess retrieves available format for a given resource
|
// Progess retrieves available format for a given resource
|
||||||
func (s *Service) Formats(args Args, meta *internal.DownloadFormats) error {
|
func (s *Service) Formats(args Args, meta *internal.DownloadFormats) error {
|
||||||
var err error
|
var err error
|
||||||
p := internal.Process{Url: args.URL}
|
p := internal.Process{Url: args.URL, Logger: s.logger}
|
||||||
*meta, err = p.GetFormatsSync()
|
*meta, err = p.GetFormatsSync()
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ type serverConfig struct {
|
|||||||
|
|
||||||
func RunBlocking(host string, port int, frontend fs.FS, dbPath string) {
|
func RunBlocking(host string, port int, frontend fs.FS, dbPath string) {
|
||||||
var mdb internal.MemoryDB
|
var mdb internal.MemoryDB
|
||||||
mdb.Restore()
|
|
||||||
|
|
||||||
logger := slog.New(
|
logger := slog.New(
|
||||||
slog.NewTextHandler(
|
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)
|
db, err := sql.Open("sqlite", dbPath)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Error("failed to open database", slog.String("err", err.Error()))
|
logger.Error("failed to open database", slog.String("err", err.Error()))
|
||||||
|
|||||||
Reference in New Issue
Block a user