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 {
|
type ImportProcessor[T models.ListensResult | models.LovesResult] interface {
|
||||||
ImportBackend() models.ImportBackend
|
ImportBackend() models.ImportBackend
|
||||||
Process(results chan T, out chan models.ImportResult, progress chan models.Progress)
|
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 {
|
type ListensImportProcessor struct {
|
||||||
|
@ -39,10 +39,9 @@ func (p ListensImportProcessor) Process(results chan models.ListensResult, out c
|
||||||
process(p, results, out, progress)
|
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 {
|
if export.Error != nil {
|
||||||
handleError(result, export.Error, out, progress)
|
return handleError(result, export.Error, progress), export.Error
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if export.Total > 0 {
|
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)
|
importResult, err := p.Backend.ImportListens(export, result, progress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleError(importResult, err, out, progress)
|
return handleError(result, err, progress), err
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
return importResult
|
return importResult, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
type LovesImportProcessor struct {
|
type LovesImportProcessor struct {
|
||||||
|
@ -70,10 +68,9 @@ func (p LovesImportProcessor) Process(results chan models.LovesResult, out chan
|
||||||
process(p, results, out, progress)
|
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 {
|
if export.Error != nil {
|
||||||
handleError(result, export.Error, out, progress)
|
return handleError(result, export.Error, progress), export.Error
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if export.Total > 0 {
|
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)
|
importResult, err := p.Backend.ImportLoves(export, result, progress)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleError(importResult, err, out, progress)
|
return handleError(importResult, err, progress), err
|
||||||
return result
|
|
||||||
}
|
}
|
||||||
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) {
|
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()
|
err := processor.ImportBackend().StartImport()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleError(result, err, out, progress)
|
out <- handleError(result, err, progress)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
for exportResult := range results {
|
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)
|
result.Update(importResult)
|
||||||
progress <- models.Progress{}.FromImportResult(result)
|
progress <- models.Progress{}.FromImportResult(result)
|
||||||
}
|
}
|
||||||
|
|
||||||
err = processor.ImportBackend().FinishImport()
|
err = processor.ImportBackend().FinishImport()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
handleError(result, err, out, progress)
|
out <- handleError(result, err, progress)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,8 +116,8 @@ func process[R models.LovesResult | models.ListensResult, P ImportProcessor[R]](
|
||||||
out <- result
|
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
|
result.Error = err
|
||||||
progress <- models.Progress{}.FromImportResult(result).Complete()
|
progress <- models.Progress{}.FromImportResult(result).Complete()
|
||||||
out <- result
|
return result
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue