Skip to content

Add requirement type and expression to compliance_requirements

Hitesh Raghuvanshi requested to merge 482489-columns-requirements into master

What does this MR do and why?

Adding following columns to compliance_requirements table:

  1. requirement_type: It will be internal only for now.
  2. control_expression: It will be a text field which will store a json object for now.

This MR also has changes in the model corresponding to columns addition and validation of control expression json via json schema which adheres to https://handbook.gitlab.com/handbook/engineering/architecture/design-documents/compliance-adherence-reporting/decisions/003_custom_controls/.

MR acceptance checklist

Please evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.

Database


### up

bundle exec rake db:migrate:up:main VERSION=20241014154409
main: == [advisory_lock_connection] object_id: 129820, pg_backend_pid: 71369
main: == 20241014154409 AddColumnsTypeExpressionToComplianceRequirements: migrating =
main: -- add_column(:compliance_requirements, :requirement_type, :smallint, {:null=>false, :default=>0})
main:    -> 0.0060s
main: -- add_column(:compliance_requirements, :control_expression, :text)
main:    -> 0.0006s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- transaction_open?(nil)
main:    -> 0.0000s
main: -- execute("ALTER TABLE compliance_requirements\nADD CONSTRAINT check_be5c3cfc16\nCHECK ( char_length(control_expression) <= 32768 )\nNOT VALID;\n")
main:    -> 0.0008s
main: -- execute("SET statement_timeout TO 0")
main:    -> 0.0003s
main: -- execute("ALTER TABLE compliance_requirements VALIDATE CONSTRAINT check_be5c3cfc16;")
main:    -> 0.0008s
main: -- execute("RESET statement_timeout")
main:    -> 0.0005s
main: == 20241014154409 AddColumnsTypeExpressionToComplianceRequirements: migrated (0.0435s) 

main: == [advisory_lock_connection] object_id: 129820, pg_backend_pid: 71369


### down

bundle exec rake db:migrate:down:main VERSION=20241014154409              
main: == [advisory_lock_connection] object_id: 129820, pg_backend_pid: 67073
main: == 20241014154409 AddColumnsTypeExpressionToComplianceRequirements: reverting =
main: -- remove_column(:compliance_requirements, :requirement_type)
main:    -> 0.0144s
main: -- remove_column(:compliance_requirements, :control_expression)
main:    -> 0.0031s
main: == 20241014154409 AddColumnsTypeExpressionToComplianceRequirements: reverted (0.0232s) 

main: == [advisory_lock_connection] object_id: 129820, pg_backend_pid: 67073

Related to #482489

Edited by Hitesh Raghuvanshi

Merge request reports

Loading