Просмотр исходного кода

Maintenance: Improve handling of migration classes.

Martin Gruner 1 год назад
Родитель
Сommit
9ce231b703
1 измененных файлов с 60 добавлено и 0 удалено
  1. 60 0
      lib/templates/active_record/migration/migration.rb.tt

+ 60 - 0
lib/templates/active_record/migration/migration.rb.tt

@@ -0,0 +1,60 @@
+class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
+<%- if migration_action == 'add' -%>
+  def change
+<%# Begin Zammad customization -%>
+    # return if it's a new setup
+    return if !Setting.exists?(name: 'system_init_done')
+<%# End Zammad customization -%>
+<% attributes.each do |attribute| -%>
+  <%- if attribute.reference? -%>
+    add_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %><%= foreign_key_type %>
+  <%- elsif attribute.token? -%>
+    add_column :<%= table_name %>, :<%= attribute.name %>, :string<%= attribute.inject_options %>
+    add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>, unique: true
+  <%- elsif !attribute.virtual? -%>
+    add_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
+    <%- if attribute.has_index? -%>
+    add_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
+    <%- end -%>
+  <%- end -%>
+<%- end -%>
+  end
+<%- elsif migration_action == 'join' -%>
+  def change
+<%# Begin Zammad customization -%>
+    # return if it's a new setup
+    return if !Setting.exists?(name: 'system_init_done')
+<%# End Zammad customization -%>
+    create_join_table :<%= join_tables.first %>, :<%= join_tables.second %> do |t|
+    <%- attributes.each do |attribute| -%>
+      <%- if attribute.reference? -%>
+      t.references :<%= attribute.name %><%= attribute.inject_options %><%= foreign_key_type %>
+      <%- elsif !attribute.virtual? -%>
+      <%= '# ' unless attribute.has_index? -%>t.index <%= attribute.index_name %><%= attribute.inject_index_options %>
+      <%- end -%>
+    <%- end -%>
+    end
+  end
+<%- else -%>
+  def change
+<%# Begin Zammad customization -%>
+    # return if it's a new setup
+    return if !Setting.exists?(name: 'system_init_done')
+<%# End Zammad customization -%>
+<% attributes.each do |attribute| -%>
+<%- if migration_action -%>
+  <%- if attribute.reference? -%>
+    remove_reference :<%= table_name %>, :<%= attribute.name %><%= attribute.inject_options %><%= foreign_key_type %>
+  <%- else -%>
+    <%- if attribute.has_index? -%>
+    remove_index :<%= table_name %>, :<%= attribute.index_name %><%= attribute.inject_index_options %>
+    <%- end -%>
+    <%- if !attribute.virtual? -%>
+    remove_column :<%= table_name %>, :<%= attribute.name %>, :<%= attribute.type %><%= attribute.inject_options %>
+    <%- end -%>
+  <%- end -%>
+<%- end -%>
+<%- end -%>
+  end
+<%- end -%>
+end