This commit is contained in:
2021-12-22 20:21:24 +01:00
parent a24d39d657
commit a8bd48e09f
17 changed files with 344 additions and 31 deletions

View File

@@ -1,6 +1,7 @@
package _default
import (
"context"
"downloader/internal/core/entities"
"downloader/internal/core/ports/download_request"
"downloader/internal/core/services/download"
@@ -18,12 +19,13 @@ func NewLocalBackgroundService(repository download_request.Repository, logger *z
return &localBackgroundService{repository: repository, logger: logger, downloader: downloader}
}
func (l localBackgroundService) Run(download *entities.Download) error {
func (l localBackgroundService) Run(ctx context.Context, download *entities.Download) error {
logger := l.logger.With("downloadId", download.ID)
go func() {
longRunningCtx := context.TODO()
download.Status = "started"
_ = l.repository.Update(download)
_ = l.repository.Update(longRunningCtx, download)
err := l.downloader.Download(download.Link, download.ID)
download.Status = "done"
@@ -33,13 +35,13 @@ func (l localBackgroundService) Run(download *entities.Download) error {
download.Status = "failed"
}
err = l.repository.Update(download)
err = l.repository.Update(longRunningCtx, download)
if err != nil {
logger.Errorw("download request failed",
"downloadLink", download.Link)
download.Status = "failed"
if updateErr := l.repository.Update(download); updateErr != nil {
if updateErr := l.repository.Update(longRunningCtx, download); updateErr != nil {
panic(updateErr)
}
} else {

View File

@@ -1,6 +1,7 @@
package _default
import (
"context"
"downloader/internal/core/entities"
"downloader/internal/core/ports/download_request"
"downloader/internal/core/services/download"
@@ -24,7 +25,7 @@ func NewLocalService(repository download_request.Repository, uuidGen uuid.Gen, b
}
}
func (l *localService) Schedule(link string) (*entities.Download, error) {
func (l *localService) Schedule(ctx context.Context, link string) (*entities.Download, error) {
download, err := entities.NewDownload(link)(l.uuidGen)
if err != nil {
l.logger.Warn("Could not parse download")
@@ -33,13 +34,13 @@ func (l *localService) Schedule(link string) (*entities.Download, error) {
logger := l.logger.With("downloadId", download.ID)
persistedDownloadRequest, uploadErr := l.repository.Create(download)
persistedDownloadRequest, uploadErr := l.repository.Create(ctx, download)
if uploadErr != nil {
logger.Error("failed to insert download request")
return nil, uploadErr
}
err = l.BackgroundService.Run(persistedDownloadRequest)
err = l.BackgroundService.Run(ctx, persistedDownloadRequest)
if err != nil {
logger.Error("failed to run download request")
return nil, err
@@ -48,10 +49,10 @@ func (l *localService) Schedule(link string) (*entities.Download, error) {
return persistedDownloadRequest, nil
}
func (l *localService) Get(id string) (*entities.Download, error) {
return l.repository.GetById(id)
func (l *localService) Get(ctx context.Context, id string) (*entities.Download, error) {
return l.repository.GetById(ctx, id)
}
func (l *localService) GetAll(active bool) ([]*entities.Download, error) {
return l.repository.Get(active)
func (l *localService) GetAll(ctx context.Context, active bool) ([]*entities.Download, error) {
return l.repository.Get(ctx, active)
}