Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
148 changes: 148 additions & 0 deletions src/database/migrations/1733963572035_add_ossf_scorecard_results.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,148 @@
exports.up = async (knex) => {
await knex.schema.createTable('ossf_scorecard_results', (table) => {
table.increments('id').primary() // Primary key
table.float('analysis_score').notNullable()
table.timestamp('analysis_time').notNullable()
table.string('analysis_execution_time').notNullable()
table.string('repo_commit').notNullable()
table.string('scorecard_version').notNullable()
table.string('scorecard_commit').notNullable()
// binary_artifacts
table.string('binary_artifacts_reason')
table.float('binary_artifacts_score')
table.string('binary_artifacts_documentation_url')
table.string('binary_artifacts_documentation')
table.text('binary_artifacts_details')
// branch_protection
table.string('branch_protection_reason')
table.float('branch_protection_score')
table.string('branch_protection_documentation_url')
table.string('branch_protection_documentation')
table.text('branch_protection_details')
// ci_tests
table.string('ci_tests_reason')
table.float('ci_tests_score')
table.string('ci_tests_documentation_url')
table.string('ci_tests_documentation')
table.text('ci_tests_details')
// cii_best_practices
table.string('cii_best_practices_reason')
table.float('cii_best_practices_score')
table.string('cii_best_practices_documentation_url')
table.string('cii_best_practices_documentation')
table.text('cii_best_practices_details')
// code_review
table.string('code_review_reason')
table.float('code_review_score')
table.string('code_review_documentation_url')
table.string('code_review_documentation')
table.text('code_review_details')
// contributors
table.string('contributors_reason')
table.float('contributors_score')
table.string('contributors_documentation_url')
table.string('contributors_documentation')
table.text('contributors_details')
// dangerous_workflow
table.string('dangerous_workflow_reason')
table.float('dangerous_workflow_score')
table.string('dangerous_workflow_documentation_url')
table.string('dangerous_workflow_documentation')
table.text('dangerous_workflow_details')
// dependency_update_tool
table.string('dependency_update_tool_reason')
table.float('dependency_update_tool_score')
table.string('dependency_update_tool_documentation_url')
table.string('dependency_update_tool_documentation')
table.text('dependency_update_tool_details')
// fuzzing
table.string('fuzzing_reason')
table.float('fuzzing_score')
table.string('fuzzing_documentation_url')
table.string('fuzzing_documentation')
table.text('fuzzing_details')
// license
table.string('license_reason')
table.float('license_score')
table.string('license_documentation_url')
table.string('license_documentation')
table.text('license_details')
// maintained
table.string('maintained_reason')
table.float('maintained_score')
table.string('maintained_documentation_url')
table.string('maintained_documentation')
table.text('maintained_details')
// packaging
table.string('packaging_reason')
table.float('packaging_score')
table.string('packaging_documentation_url')
table.string('packaging_documentation')
table.text('packaging_details')
// pinned_dependencies
table.string('pinned_dependencies_reason')
table.float('pinned_dependencies_score')
table.string('pinned_dependencies_documentation_url')
table.string('pinned_dependencies_documentation')
table.text('pinned_dependencies_details')
// sast
table.string('sast_reason')
table.float('sast_score')
table.string('sast_documentation_url')
table.string('sast_documentation')
table.text('sast_details')
// security_policy
table.string('security_policy_reason')
table.float('security_policy_score')
table.string('security_policy_documentation_url')
table.string('security_policy_documentation')
table.text('security_policy_details')
// signed_releases
table.string('signed_releases_reason')
table.float('signed_releases_score')
table.string('signed_releases_documentation_url')
table.string('signed_releases_documentation')
table.text('signed_releases_details')
// token_permissions
table.string('token_permissions_reason')
table.float('token_permissions_score')
table.string('token_permissions_documentation_url')
table.string('token_permissions_documentation')
table.text('token_permissions_details')
// vulnerabilities
table.string('vulnerabilities_reason')
table.float('vulnerabilities_score')
table.string('vulnerabilities_documentation_url')
table.string('vulnerabilities_documentation')
table.text('vulnerabilities_details')

// Foreign key to 'projects' table
table
.integer('github_repository_id')
.unsigned()
.references('id')
.inTable('github_repositories')
.onDelete('CASCADE') // Deletes repository if the organization is deleted
.onUpdate('CASCADE') // Updates repository if the organization ID is updated
.notNullable()

// Timestamps
table.timestamp('created_at').defaultTo(knex.fn.now()).notNullable()
table.timestamp('updated_at').defaultTo(knex.fn.now()).notNullable()
})

// Add trigger to automatically update the 'updated_at' column
await knex.raw(`
CREATE TRIGGER set_updated_at_ossf_scorecard_results
BEFORE UPDATE ON ossf_scorecard_results
FOR EACH ROW
EXECUTE FUNCTION update_updated_at_column();
`)
}

exports.down = async (knex) => {
// Drop trigger
await knex.raw('DROP TRIGGER IF EXISTS set_updated_at_ossf_scorecard_results ON ossf_scorecard_results;')
// Drop table
await knex.schema.dropTableIfExists('ossf_scorecard_results')
}
158 changes: 158 additions & 0 deletions src/database/schema/schema.sql
Original file line number Diff line number Diff line change
Expand Up @@ -443,6 +443,134 @@ CREATE SEQUENCE public.knex_migrations_lock_index_seq
ALTER SEQUENCE public.knex_migrations_lock_index_seq OWNED BY public.knex_migrations_lock.index;


--
-- Name: ossf_scorecard_results; Type: TABLE; Schema: public; Owner: -
--

CREATE TABLE public.ossf_scorecard_results (
id integer NOT NULL,
analysis_score real NOT NULL,
analysis_time timestamp with time zone NOT NULL,
analysis_execution_time character varying(255) NOT NULL,
repo_commit character varying(255) NOT NULL,
scorecard_version character varying(255) NOT NULL,
scorecard_commit character varying(255) NOT NULL,
binary_artifacts_reason character varying(255),
binary_artifacts_score real,
binary_artifacts_documentation_url character varying(255),
binary_artifacts_documentation character varying(255),
binary_artifacts_details text,
branch_protection_reason character varying(255),
branch_protection_score real,
branch_protection_documentation_url character varying(255),
branch_protection_documentation character varying(255),
branch_protection_details text,
ci_tests_reason character varying(255),
ci_tests_score real,
ci_tests_documentation_url character varying(255),
ci_tests_documentation character varying(255),
ci_tests_details text,
cii_best_practices_reason character varying(255),
cii_best_practices_score real,
cii_best_practices_documentation_url character varying(255),
cii_best_practices_documentation character varying(255),
cii_best_practices_details text,
code_review_reason character varying(255),
code_review_score real,
code_review_documentation_url character varying(255),
code_review_documentation character varying(255),
code_review_details text,
contributors_reason character varying(255),
contributors_score real,
contributors_documentation_url character varying(255),
contributors_documentation character varying(255),
contributors_details text,
dangerous_workflow_reason character varying(255),
dangerous_workflow_score real,
dangerous_workflow_documentation_url character varying(255),
dangerous_workflow_documentation character varying(255),
dangerous_workflow_details text,
dependency_update_tool_reason character varying(255),
dependency_update_tool_score real,
dependency_update_tool_documentation_url character varying(255),
dependency_update_tool_documentation character varying(255),
dependency_update_tool_details text,
fuzzing_reason character varying(255),
fuzzing_score real,
fuzzing_documentation_url character varying(255),
fuzzing_documentation character varying(255),
fuzzing_details text,
license_reason character varying(255),
license_score real,
license_documentation_url character varying(255),
license_documentation character varying(255),
license_details text,
maintained_reason character varying(255),
maintained_score real,
maintained_documentation_url character varying(255),
maintained_documentation character varying(255),
maintained_details text,
packaging_reason character varying(255),
packaging_score real,
packaging_documentation_url character varying(255),
packaging_documentation character varying(255),
packaging_details text,
pinned_dependencies_reason character varying(255),
pinned_dependencies_score real,
pinned_dependencies_documentation_url character varying(255),
pinned_dependencies_documentation character varying(255),
pinned_dependencies_details text,
sast_reason character varying(255),
sast_score real,
sast_documentation_url character varying(255),
sast_documentation character varying(255),
sast_details text,
security_policy_reason character varying(255),
security_policy_score real,
security_policy_documentation_url character varying(255),
security_policy_documentation character varying(255),
security_policy_details text,
signed_releases_reason character varying(255),
signed_releases_score real,
signed_releases_documentation_url character varying(255),
signed_releases_documentation character varying(255),
signed_releases_details text,
token_permissions_reason character varying(255),
token_permissions_score real,
token_permissions_documentation_url character varying(255),
token_permissions_documentation character varying(255),
token_permissions_details text,
vulnerabilities_reason character varying(255),
vulnerabilities_score real,
vulnerabilities_documentation_url character varying(255),
vulnerabilities_documentation character varying(255),
vulnerabilities_details text,
github_repository_id integer NOT NULL,
created_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL,
updated_at timestamp with time zone DEFAULT CURRENT_TIMESTAMP NOT NULL
);


--
-- Name: ossf_scorecard_results_id_seq; Type: SEQUENCE; Schema: public; Owner: -
--

CREATE SEQUENCE public.ossf_scorecard_results_id_seq
AS integer
START WITH 1
INCREMENT BY 1
NO MINVALUE
NO MAXVALUE
CACHE 1;


--
-- Name: ossf_scorecard_results_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: -
--

ALTER SEQUENCE public.ossf_scorecard_results_id_seq OWNED BY public.ossf_scorecard_results.id;


--
-- Name: projects; Type: TABLE; Schema: public; Owner: -
--
Expand Down Expand Up @@ -569,6 +697,13 @@ ALTER TABLE ONLY public.knex_migrations ALTER COLUMN id SET DEFAULT nextval('pub
ALTER TABLE ONLY public.knex_migrations_lock ALTER COLUMN index SET DEFAULT nextval('public.knex_migrations_lock_index_seq'::regclass);


--
-- Name: ossf_scorecard_results id; Type: DEFAULT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.ossf_scorecard_results ALTER COLUMN id SET DEFAULT nextval('public.ossf_scorecard_results_id_seq'::regclass);


--
-- Name: projects id; Type: DEFAULT; Schema: public; Owner: -
--
Expand Down Expand Up @@ -687,6 +822,14 @@ ALTER TABLE ONLY public.knex_migrations
ADD CONSTRAINT knex_migrations_pkey PRIMARY KEY (id);


--
-- Name: ossf_scorecard_results ossf_scorecard_results_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.ossf_scorecard_results
ADD CONSTRAINT ossf_scorecard_results_pkey PRIMARY KEY (id);


--
-- Name: projects projects_pkey; Type: CONSTRAINT; Schema: public; Owner: -
--
Expand Down Expand Up @@ -745,6 +888,13 @@ CREATE TRIGGER set_updated_at_github_organizations BEFORE UPDATE ON public.githu
CREATE TRIGGER set_updated_at_github_repositories BEFORE UPDATE ON public.github_repositories FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();


--
-- Name: ossf_scorecard_results set_updated_at_ossf_scorecard_results; Type: TRIGGER; Schema: public; Owner: -
--

CREATE TRIGGER set_updated_at_ossf_scorecard_results BEFORE UPDATE ON public.ossf_scorecard_results FOR EACH ROW EXECUTE FUNCTION public.update_updated_at_column();


--
-- Name: projects set_updated_at_projects; Type: TRIGGER; Schema: public; Owner: -
--
Expand Down Expand Up @@ -823,6 +973,14 @@ ALTER TABLE ONLY public.github_repositories
ADD CONSTRAINT github_repositories_github_organization_id_foreign FOREIGN KEY (github_organization_id) REFERENCES public.github_organizations(id) ON UPDATE CASCADE ON DELETE CASCADE;


--
-- Name: ossf_scorecard_results ossf_scorecard_results_github_repository_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
--

ALTER TABLE ONLY public.ossf_scorecard_results
ADD CONSTRAINT ossf_scorecard_results_github_repository_id_foreign FOREIGN KEY (github_repository_id) REFERENCES public.github_repositories(id) ON UPDATE CASCADE ON DELETE CASCADE;


--
-- Name: software_design_training software_design_training_project_id_foreign; Type: FK CONSTRAINT; Schema: public; Owner: -
--
Expand Down
Loading