class CreateWorkflowProcesses

Public Instance Methods

change() click to toggle source
# File lib/generators/rails_workflow/install/templates/create_workflow_processes.rb, line 4
def change
  create_tables
  create_columns
  check_json_columns
  create_indexes
end
check_json_columns() click to toggle source
# File lib/generators/rails_workflow/install/templates/create_workflow_processes.rb, line 139
def check_json_columns
  [
    [RailsWorkflow::Operation, :dependencies],
    [RailsWorkflow::OperationTemplate, :dependencies],
    [RailsWorkflow::Context, :body]
  ].map do |check|
    if check[0].columns_hash[check[1].to_s].sql_type == 'json'
      # change_column check[0].table_name, check[1], "JSON USING #{check[1]}::JSON"
      change_column check[0].table_name, check[1], :text
    end
  end
end
create_columns() click to toggle source
# File lib/generators/rails_workflow/install/templates/create_workflow_processes.rb, line 40
def create_columns
  {
    rails_workflow_contexts: [
      %i[integer parent_id],
      %i[string parent_type],
      %i[text body],
      %i[datetime created_at],
      %i[datetime updated_at]
    ],

    rails_workflow_errors: [
      %i[string message],
      %i[text stack_trace],
      %i[integer parent_id],
      %i[string parent_type],
      %i[datetime created_at],
      %i[datetime updated_at],
      %i[boolean resolved]
    ],

    rails_workflow_operation_templates: [
      %i[string title],
      %i[string version],
      %i[string uuid],
      %i[string tag],
      %i[text source],
      %i[text dependencies],
      %i[string operation_class],
      %i[integer process_template_id],
      %i[datetime created_at],
      %i[datetime updated_at],
      %i[boolean async],
      %i[integer child_process_id],
      %i[integer assignment_id],
      %i[string assignment_type],
      %i[string kind],
      %i[string role],
      %i[string group],
      %i[text instruction],
      %i[boolean is_background],
      %i[string type],
      %i[string partial_name]
    ],

    rails_workflow_operations: [
      %i[integer status],
      %i[boolean async],
      %i[string version],
      %i[string tag],
      %i[string title],
      %i[datetime created_at],
      %i[datetime updated_at],
      %i[integer process_id],
      %i[integer template_id],
      %i[text dependencies],
      %i[integer child_process_id],
      %i[integer assignment_id],
      %i[string assignment_type],
      %i[datetime assigned_at],
      %i[string type],
      %i[boolean is_active],
      %i[datetime completed_at],
      %i[boolean is_background]
    ],

    rails_workflow_process_templates: [
      %i[string title],
      %i[text source],
      %i[string uuid],
      %i[string version],
      %i[string tag],
      %i[string manager_class],
      %i[string process_class],
      %i[datetime created_at],
      %i[datetime updated_at],
      %i[string type],
      %i[string partial_name]
    ],

    rails_workflow_processes: [
      %i[integer status],
      %i[string version],
      %i[string tag],
      %i[boolean async],
      %i[string title],
      %i[datetime created_at],
      %i[datetime updated_at],
      %i[integer template_id],
      %i[string type]
    ]
  }.each do |table, columns|
    columns.map do |column|
      unless column_exists? table, column[1]
        add_column table, column[1], column[0]
      end
    end
  end
end
create_indexes() click to toggle source
# File lib/generators/rails_workflow/install/templates/create_workflow_processes.rb, line 26
def create_indexes
  [
    [:rails_workflow_contexts, %i[parent_id parent_type], :rw_context_parents],
    [:rails_workflow_errors, %i[parent_id parent_type], :rw_error_parents],
    %i[rails_workflow_operation_templates process_template_id rw_ot_to_pt],
    %i[rails_workflow_operation_templates uuid rw_ot_uuids],
    %i[rails_workflow_process_templates uuid rw_pt_uuids],
    %i[rails_workflow_operations process_id rw_o_process_ids],
    %i[rails_workflow_operations template_id rw_o_template_ids]
  ].each do |idx|
    add_index idx[0], idx[1], name: idx[2] unless index_exists? idx[0], idx[1]
  end
end
create_tables() click to toggle source
# File lib/generators/rails_workflow/install/templates/create_workflow_processes.rb, line 11
def create_tables
  [
    %i[workflow_processes rails_workflow_processes],
    %i[workflow_operations rails_workflow_operations],
    %i[workflow_process_templates rails_workflow_process_templates],
    %i[workflow_operation_templates rails_workflow_operation_templates],
    %i[workflow_contexts rails_workflow_contexts],
    %i[workflow_errors rails_workflow_errors]
  ].map do |names|
    rename_table names[0], names[1] if table_exists? names[0]

    create_table names[1] unless table_exists? names[1]
  end
end