diff options
| -rw-r--r-- | db/migrate/20171003123007_change_control_attributes_format_in_compliance_control_and_in_compliance_check.rb | 20 | ||||
| -rw-r--r-- | db/schema.rb | 8 | 
2 files changed, 24 insertions, 4 deletions
| diff --git a/db/migrate/20171003123007_change_control_attributes_format_in_compliance_control_and_in_compliance_check.rb b/db/migrate/20171003123007_change_control_attributes_format_in_compliance_control_and_in_compliance_check.rb new file mode 100644 index 000000000..cf1e31970 --- /dev/null +++ b/db/migrate/20171003123007_change_control_attributes_format_in_compliance_control_and_in_compliance_check.rb @@ -0,0 +1,20 @@ +class ChangeControlAttributesFormatInComplianceControlAndInComplianceCheck < ActiveRecord::Migration +  def change + +    execute <<-SQL +      CREATE OR REPLACE FUNCTION my_json_to_hstore(json) +            RETURNS hstore +            IMMUTABLE +            STRICT +            LANGUAGE sql +          AS $func$ +            SELECT hstore(array_agg(key), array_agg(value)) +            FROM   json_each_text($1) +          $func$; +      SQL + +    change_column :compliance_controls, :control_attributes, 'hstore USING my_json_to_hstore(control_attributes)' +    change_column :compliance_checks, :control_attributes, 'hstore USING my_json_to_hstore(control_attributes)'  +    execute "DROP FUNCTION my_json_to_hstore(json)" +  end +end diff --git a/db/schema.rb b/db/schema.rb index 91ffdd60c..608a611a3 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@  #  # It's strongly recommended that you check this file into your version control system. -ActiveRecord::Schema.define(version: 20171002080526) do +ActiveRecord::Schema.define(version: 20171003123007) do    # These are extensions that must be enabled in order to support this database    enable_extension "plpgsql" @@ -205,7 +205,7 @@ ActiveRecord::Schema.define(version: 20171002080526) do      t.integer  "compliance_check_set_id"      t.integer  "compliance_check_block_id"      t.string   "type" -    t.json     "control_attributes" +    t.hstore   "control_attributes"      t.string   "name"      t.string   "code"      t.integer  "criticity" @@ -240,7 +240,7 @@ ActiveRecord::Schema.define(version: 20171002080526) do    create_table "compliance_controls", id: :bigserial, force: :cascade do |t|      t.integer  "compliance_control_set_id"      t.string   "type" -    t.json     "control_attributes" +    t.hstore   "control_attributes"      t.string   "name"      t.string   "code"      t.string   "criticity" @@ -402,9 +402,9 @@ ActiveRecord::Schema.define(version: 20171002080526) do      t.string   "type"      t.integer  "parent_id",             limit: 8      t.string   "parent_type" -    t.datetime "notified_parent_at"      t.integer  "current_step",                    default: 0      t.integer  "total_steps",                     default: 0 +    t.datetime "notified_parent_at"      t.string   "creator"    end | 
