add timestamps to github advisories so upsert_all works the best
This commit is contained in:
parent
9154a9cb9c
commit
ef3a454a26
3 changed files with 21 additions and 1 deletions
|
@ -15,6 +15,7 @@ class CreateGithubAdvisories < ActiveRecord::Migration[7.0]
|
||||||
t.jsonb :affected
|
t.jsonb :affected
|
||||||
t.jsonb :references
|
t.jsonb :references
|
||||||
t.jsonb :database_specific
|
t.jsonb :database_specific
|
||||||
|
t.timestamps
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
|
@ -77,6 +77,8 @@ ActiveRecord::Schema[7.0].define(version: 2022_04_11_181501) do
|
||||||
t.jsonb "affected"
|
t.jsonb "affected"
|
||||||
t.jsonb "references"
|
t.jsonb "references"
|
||||||
t.jsonb "database_specific"
|
t.jsonb "database_specific"
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "updated_at", null: false
|
||||||
t.index ["ghsa_id"], name: "index_github_advisories_on_ghsa_id", unique: true
|
t.index ["ghsa_id"], name: "index_github_advisories_on_ghsa_id", unique: true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,22 @@ class GithubAdvisoryImporter < GithubRepo
|
||||||
# repo has years that begin with 2017 as first GHSA
|
# repo has years that begin with 2017 as first GHSA
|
||||||
YEAR_RANGE = (2017..Date.today.year).freeze
|
YEAR_RANGE = (2017..Date.today.year).freeze
|
||||||
|
|
||||||
|
EXPECTED_KEYS = %i[
|
||||||
|
schema_version
|
||||||
|
ghsa_id
|
||||||
|
modified
|
||||||
|
published
|
||||||
|
aliases
|
||||||
|
summary
|
||||||
|
details
|
||||||
|
severity
|
||||||
|
affected
|
||||||
|
references
|
||||||
|
database_specific
|
||||||
|
].freeze
|
||||||
|
|
||||||
|
EMPTY_HASH = EXPECTED_KEYS.map { |k| [k, nil] }.to_h.freeze
|
||||||
|
|
||||||
def initialize
|
def initialize
|
||||||
super(repo_url = 'https://github.com/github/advisory-database.git', repo_path = '/data_importer/data/github_advisories')
|
super(repo_url = 'https://github.com/github/advisory-database.git', repo_path = '/data_importer/data/github_advisories')
|
||||||
end
|
end
|
||||||
|
@ -56,7 +72,8 @@ class GithubAdvisoryImporter < GithubRepo
|
||||||
YEAR_RANGE.each do |year|
|
YEAR_RANGE.each do |year|
|
||||||
puts "Importing advisory data from #{year}"
|
puts "Importing advisory data from #{year}"
|
||||||
jsons = read_jsons_for_year(year)
|
jsons = read_jsons_for_year(year)
|
||||||
GithubAdvisory.upsert_all(jsons, unique_by: :ghsa_id)
|
hashes = jsons.map { |h| h.slice(*EXPECTED_KEYS).reverse_merge(EMPTY_HASH) }
|
||||||
|
GithubAdvisory.upsert_all(hashes, unique_by: :ghsa_id)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Add table
Reference in a new issue