From b4c518c683b5acd33f0016e5e95d125731563dec Mon Sep 17 00:00:00 2001 From: Brett Kyle Date: Fri, 3 Jan 2025 22:53:05 +0000 Subject: [PATCH] Set up keydata table and save datetimed entries --- build-filtered-data.mjs | 4 ++- helpers/database.mjs | 57 ++++++++++++++++++++++++++++++++++++++++- 2 files changed, 59 insertions(+), 2 deletions(-) diff --git a/build-filtered-data.mjs b/build-filtered-data.mjs index 833e476f..5dbc9640 100644 --- a/build-filtered-data.mjs +++ b/build-filtered-data.mjs @@ -72,7 +72,9 @@ async function filterDeps () { ) console.log('Getting key data') - const keyData = await db.getKeyData() + const keyData = await db.getKeyDataFromResults() + keyData.date = new Date().toISOString() + db.insertKeyData(keyData) await appendFileSync( `data/${yyyymmdd}-${timestamp}-key-data.json`, JSON.stringify(keyData, null, 2) diff --git a/helpers/database.mjs b/helpers/database.mjs index b455130c..76621237 100644 --- a/helpers/database.mjs +++ b/helpers/database.mjs @@ -25,6 +25,25 @@ export class RepoDB { `) setup.run() + const keyDataSetup = this.db.prepare(` + CREATE TABLE IF NOT EXISTS keyData ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + date TEXT, + Total INTEGER, + NumberBuiltByGovernment INTEGER, + VersionUnknown INTEGER, + version0 INTEGER, + version1 INTEGER, + version2 INTEGER, + version3 INTEGER, + version4 INTEGER, + version5 INTEGER, + prototypes INTEGER, + activeRepos INTEGER, + errors INTEGER + )`) + keyDataSetup.run() + // Create an index on repoOwner and repoName for faster lookups const indexSetup = this.db.prepare(` CREATE INDEX IF NOT EXISTS idx_repo_owner_name ON repos (repoOwner, repoName) @@ -98,7 +117,43 @@ export class RepoDB { } } - getKeyData () { + insertKeyData (stats) { + const insertKeyData = this.db.prepare(` + INSERT OR REPLACE INTO keyData ( + date, + Total, + NumberBuiltByGovernment, + VersionUnknown, + version0, + version1, + version2, + version3, + version4, + version5, + prototypes, + activeRepos, + errors + ) VALUES ( + @date, + @Total, + @NumberBuiltByGovernment, + @VersionUnknown, + @version0, + @version1, + @version2, + @version3, + @version4, + @version5, + @prototypes, + @activeRepos, + @errors + ) + `) + + insertKeyData.run(stats) + } + + getKeyDataFromResults () { const query = this.db.prepare(` SELECT (SELECT COUNT(*) FROM repos) AS Total,