/* Copyright © 2023 Philipp Wolfer This file is part of Scotty. Scotty is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Scotty is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with Scotty. If not, see . */ package backends import "go.uploadedlobster.com/scotty/internal/models" func ProcessListensImports(importer models.ListensImport, results chan models.ListensResult, out chan models.ImportResult, progress chan models.Progress) { defer close(out) defer close(progress) result := models.ImportResult{} err := importer.StartImport() if err != nil { handleError(result, err, out, progress) return } for exportResult := range results { if exportResult.Error != nil { handleError(result, exportResult.Error, out, progress) return } if exportResult.Total > 0 { result.TotalCount = exportResult.Total } else { result.TotalCount += len(exportResult.Items) } importResult, err := importer.ImportListens(exportResult, result, progress) if err != nil { handleError(importResult, err, out, progress) return } result.Update(importResult) progress <- models.Progress{}.FromImportResult(result) } err = importer.FinishImport() if err != nil { handleError(result, err, out, progress) return } progress <- models.Progress{}.FromImportResult(result).Complete() out <- result } func ProcessLovesImports(importer models.LovesImport, results chan models.LovesResult, out chan models.ImportResult, progress chan models.Progress) { defer close(out) defer close(progress) result := models.ImportResult{} err := importer.StartImport() if err != nil { handleError(result, err, out, progress) return } for exportResult := range results { if exportResult.Error != nil { handleError(result, exportResult.Error, out, progress) return } if exportResult.Total > 0 { result.TotalCount = exportResult.Total } else { result.TotalCount += len(exportResult.Items) } importResult, err := importer.ImportLoves(exportResult, result, progress) if err != nil { handleError(importResult, err, out, progress) return } result.Update(importResult) progress <- models.Progress{}.FromImportResult(result) } err = importer.FinishImport() if err != nil { handleError(result, err, out, progress) return } progress <- models.Progress{}.FromImportResult(result).Complete() out <- result } func handleError(result models.ImportResult, err error, out chan models.ImportResult, progress chan models.Progress) { result.Error = err progress <- models.Progress{}.FromImportResult(result).Complete() out <- result }