aboutsummaryrefslogtreecommitdiff
path: root/dbstore/dbstore.go
diff options
context:
space:
mode:
authorPaul Duncan <pabs@pablotron.org>2022-02-20 10:36:52 -0500
committerPaul Duncan <pabs@pablotron.org>2022-02-20 10:36:52 -0500
commit4cbd88b2387f12b9052033fc05445e2c6b54ab96 (patch)
tree9dbf95b13d58e6b77d3c417ead8821b418b18fe9 /dbstore/dbstore.go
parentbcfce83f66a04154ad54769b4bf8de21fd425c3f (diff)
downloadcvez-4cbd88b2387f12b9052033fc05445e2c6b54ab96.tar.bz2
cvez-4cbd88b2387f12b9052033fc05445e2c6b54ab96.zip
dbstore: add AddCveFeeds(), fix bugs, fix TestAddCveFeed
Diffstat (limited to 'dbstore/dbstore.go')
-rw-r--r--dbstore/dbstore.go46
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
}
-