diff options
author | Paul Duncan <pabs@pablotron.org> | 2022-02-20 10:36:52 -0500 |
---|---|---|
committer | Paul Duncan <pabs@pablotron.org> | 2022-02-20 10:36:52 -0500 |
commit | 4cbd88b2387f12b9052033fc05445e2c6b54ab96 (patch) | |
tree | 9dbf95b13d58e6b77d3c417ead8821b418b18fe9 /dbstore/dbstore.go | |
parent | bcfce83f66a04154ad54769b4bf8de21fd425c3f (diff) | |
download | cvez-4cbd88b2387f12b9052033fc05445e2c6b54ab96.tar.bz2 cvez-4cbd88b2387f12b9052033fc05445e2c6b54ab96.zip |
dbstore: add AddCveFeeds(), fix bugs, fix TestAddCveFeed
Diffstat (limited to 'dbstore/dbstore.go')
-rw-r--r-- | dbstore/dbstore.go | 46 |
1 files changed, 32 insertions, 14 deletions
diff --git a/dbstore/dbstore.go b/dbstore/dbstore.go index d1e44ba..840f268 100644 --- a/dbstore/dbstore.go +++ b/dbstore/dbstore.go @@ -693,6 +693,7 @@ var addCveFeedQueryIds = []string { "feed/insert-assigner", "feed/insert-cve", "feed/insert-cve-desc", + "feed/insert-cve-fts-refresh", "feed/insert-cve-problem", "feed/insert-cve-problem-desc", "feed/insert-cve-ref", @@ -703,29 +704,47 @@ var addCveFeedQueryIds = []string { "feed/insert-item-cvss-v3", } -// Import CVE feed. -func (me DbStore) AddCveFeed(ctx context.Context, feed nvd_feed.Feed) (int64, error) { - // feed ID - var feedId int64 +// Refresh CVE FTS index. +func (me DbStore) refreshCveFts(ctx context.Context, tx Tx) error { + _, err := tx.Exec(ctx, "feed/insert-cve-fts-refresh") + return err +} + +// Import CVE feeds. +func (me DbStore) AddCveFeeds(ctx context.Context, feeds []nvd_feed.Feed) ([]int64, error) { + feedIds := make([]int64, len(feeds)) // lazy-init db if err := me.Init(ctx); err != nil { - return feedId, err + return feedIds, err } // begin transaction err := me.Tx(ctx, addCveFeedQueryIds, func(tx Tx) error { - // add feed, get feed ID - if id, err := me.addFeed(ctx, tx, feed); err != nil { - return err - } else { - feedId = id - return nil + for i, feed := range(feeds) { + // add feed, get feed ID + if id, err := me.addFeed(ctx, tx, feed); err != nil { + return err + } else { + feedIds[i] = id + } } + + // refresh the cve fts index + return me.refreshCveFts(ctx, tx) }) - // return result - return feedId, err + // return results + return feedIds, err +} + +// Import single CVE feed. +func (me DbStore) AddCveFeed(ctx context.Context, feed nvd_feed.Feed) (int64, error) { + if r, err := me.AddCveFeeds(ctx, []nvd_feed.Feed { feed }); err != nil { + return 0, err + } else { + return r[0], nil + } } // search CVEs @@ -755,4 +774,3 @@ func (me DbStore) CveSearch( // return results return r, err } - |