From de96851d8eb0a0b45d7bf0cee67339fea54349f0 Mon Sep 17 00:00:00 2001 From: Adam Mathes Date: Thu, 12 Feb 2026 21:35:46 -0800 Subject: wip: tui updates (buggy) --- importer/importer.go | 33 +++++++++++++++++++++------------ importer/importer_test.go | 22 +++++++++++++++++++++- 2 files changed, 42 insertions(+), 13 deletions(-) (limited to 'importer') diff --git a/importer/importer.go b/importer/importer.go index 4c48bb0..73a2cd8 100644 --- a/importer/importer.go +++ b/importer/importer.go @@ -6,9 +6,10 @@ import ( //"fmt" "io" "log" + "os" + "adammathes.com/neko/models/feed" "adammathes.com/neko/models/item" - "os" ) type IItem struct { @@ -31,12 +32,13 @@ type IDate struct { Date string `json:"$date"` } -func ImportJSON(filename string) { +func ImportJSON(filename string) error { f, err := os.Open(filename) if err != nil { - log.Fatal(err) + return err } + defer f.Close() dec := json.NewDecoder(f) for { @@ -44,24 +46,31 @@ func ImportJSON(filename string) { if err := dec.Decode(&ii); err == io.EOF { break } else if err != nil { - log.Println(err) + return err } else { - InsertIItem(&ii) + err := InsertIItem(&ii) + if err != nil { + log.Println(err) + } } } + return nil } -func InsertIItem(ii *IItem) { +func InsertIItem(ii *IItem) error { var f feed.Feed if ii.Feed == nil { - return + return nil } err := f.ByUrl(ii.Feed.Url) if err != nil { f.Url = ii.Feed.Url f.Title = ii.Feed.Title - f.Create() + err = f.Create() + if err != nil { + return err + } } var i item.Item @@ -70,11 +79,11 @@ func InsertIItem(ii *IItem) { i.Url = ii.Url i.Description = ii.Description - i.PublishDate = ii.Date.Date + if ii.Date != nil { + i.PublishDate = ii.Date.Date + } err = i.Create() log.Printf("inserted %s\n", i.Url) - if err != nil { - log.Println(err) - } + return err } diff --git a/importer/importer_test.go b/importer/importer_test.go index 00ab822..59f06f1 100644 --- a/importer/importer_test.go +++ b/importer/importer_test.go @@ -11,7 +11,7 @@ import ( func setupTestDB(t *testing.T) { t.Helper() - config.Config.DBFile = ":memory:" + config.Config.DBFile = filepath.Join(t.TempDir(), "test.db") models.InitDB() t.Cleanup(func() { if models.DB != nil { @@ -127,3 +127,23 @@ func TestImportJSON(t *testing.T) { t.Errorf("Expected 1 feed after import, got %d", feedCount) } } + +func TestImportJSONInvalid(t *testing.T) { + setupTestDB(t) + dir := t.TempDir() + jsonFile := filepath.Join(dir, "invalid.json") + os.WriteFile(jsonFile, []byte("not json"), 0644) + + err := ImportJSON(jsonFile) + if err == nil { + t.Error("ImportJSON should error on invalid JSON") + } +} + +func TestImportJSONNonexistent(t *testing.T) { + setupTestDB(t) + err := ImportJSON("/nonexistent/file.json") + if err == nil { + t.Error("ImportJSON should error on nonexistent file") + } +} -- cgit v1.2.3