mirror of
https://git.sr.ht/~phw/scotty
synced 2025-04-16 10:09:28 +02:00
Fixed import error handling
This commit is contained in:
parent
3e9ebfb9af
commit
b07c393a22
1 changed files with 18 additions and 18 deletions
|
@ -24,7 +24,7 @@ import (
|
|||
type ImportProcessor[T models.ListensResult | models.LovesResult] interface {
|
||||
ImportBackend() models.ImportBackend
|
||||
Process(results chan T, out chan models.ImportResult, progress chan models.Progress)
|
||||
Import(export T, result models.ImportResult, out chan models.ImportResult, progress chan models.Progress) models.ImportResult
|
||||
Import(export T, result models.ImportResult, out chan models.ImportResult, progress chan models.Progress) (models.ImportResult, error)
|
||||
}
|
||||
|
||||
type ListensImportProcessor struct {
|
||||
|
@ -39,10 +39,9 @@ func (p ListensImportProcessor) Process(results chan models.ListensResult, out c
|
|||
process(p, results, out, progress)
|
||||
}
|
||||
|
||||
func (p ListensImportProcessor) Import(export models.ListensResult, result models.ImportResult, out chan models.ImportResult, progress chan models.Progress) models.ImportResult {
|
||||
func (p ListensImportProcessor) Import(export models.ListensResult, result models.ImportResult, out chan models.ImportResult, progress chan models.Progress) (models.ImportResult, error) {
|
||||
if export.Error != nil {
|
||||
handleError(result, export.Error, out, progress)
|
||||
return result
|
||||
return handleError(result, export.Error, progress), export.Error
|
||||
}
|
||||
|
||||
if export.Total > 0 {
|
||||
|
@ -52,10 +51,9 @@ func (p ListensImportProcessor) Import(export models.ListensResult, result model
|
|||
}
|
||||
importResult, err := p.Backend.ImportListens(export, result, progress)
|
||||
if err != nil {
|
||||
handleError(importResult, err, out, progress)
|
||||
return result
|
||||
return handleError(result, err, progress), err
|
||||
}
|
||||
return importResult
|
||||
return importResult, nil
|
||||
}
|
||||
|
||||
type LovesImportProcessor struct {
|
||||
|
@ -70,10 +68,9 @@ func (p LovesImportProcessor) Process(results chan models.LovesResult, out chan
|
|||
process(p, results, out, progress)
|
||||
}
|
||||
|
||||
func (p LovesImportProcessor) Import(export models.LovesResult, result models.ImportResult, out chan models.ImportResult, progress chan models.Progress) models.ImportResult {
|
||||
func (p LovesImportProcessor) Import(export models.LovesResult, result models.ImportResult, out chan models.ImportResult, progress chan models.Progress) (models.ImportResult, error) {
|
||||
if export.Error != nil {
|
||||
handleError(result, export.Error, out, progress)
|
||||
return result
|
||||
return handleError(result, export.Error, progress), export.Error
|
||||
}
|
||||
|
||||
if export.Total > 0 {
|
||||
|
@ -83,10 +80,9 @@ func (p LovesImportProcessor) Import(export models.LovesResult, result models.Im
|
|||
}
|
||||
importResult, err := p.Backend.ImportLoves(export, result, progress)
|
||||
if err != nil {
|
||||
handleError(importResult, err, out, progress)
|
||||
return result
|
||||
return handleError(importResult, err, progress), err
|
||||
}
|
||||
return importResult
|
||||
return importResult, nil
|
||||
}
|
||||
|
||||
func process[R models.LovesResult | models.ListensResult, P ImportProcessor[R]](processor P, results chan R, out chan models.ImportResult, progress chan models.Progress) {
|
||||
|
@ -96,19 +92,23 @@ func process[R models.LovesResult | models.ListensResult, P ImportProcessor[R]](
|
|||
|
||||
err := processor.ImportBackend().StartImport()
|
||||
if err != nil {
|
||||
handleError(result, err, out, progress)
|
||||
out <- handleError(result, err, progress)
|
||||
return
|
||||
}
|
||||
|
||||
for exportResult := range results {
|
||||
importResult := processor.Import(exportResult, result, out, progress)
|
||||
importResult, err := processor.Import(exportResult, result, out, progress)
|
||||
if err != nil {
|
||||
out <- handleError(result, err, progress)
|
||||
return
|
||||
}
|
||||
result.Update(importResult)
|
||||
progress <- models.Progress{}.FromImportResult(result)
|
||||
}
|
||||
|
||||
err = processor.ImportBackend().FinishImport()
|
||||
if err != nil {
|
||||
handleError(result, err, out, progress)
|
||||
out <- handleError(result, err, progress)
|
||||
return
|
||||
}
|
||||
|
||||
|
@ -116,8 +116,8 @@ func process[R models.LovesResult | models.ListensResult, P ImportProcessor[R]](
|
|||
out <- result
|
||||
}
|
||||
|
||||
func handleError(result models.ImportResult, err error, out chan models.ImportResult, progress chan models.Progress) {
|
||||
func handleError(result models.ImportResult, err error, progress chan models.Progress) models.ImportResult {
|
||||
result.Error = err
|
||||
progress <- models.Progress{}.FromImportResult(result).Complete()
|
||||
out <- result
|
||||
return result
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue