52 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			2.2 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| # frozen_string_literal: true
 | |
| 
 | |
| # License: AGPL-3.0-or-later WITH WTO-AP-3.0-or-later
 | |
| Full license explanation at https://github.com/houdiniproject/houdini/blob/master/LICENSE
 | |
| class <%= migration_class_name %> < ActiveRecord::Migration[<%= ActiveRecord::Migration.current_version %>]
 | |
| <%- if migration_action == 'add' -%>
 | |
|   def change
 | |
| <% 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
 | |
|     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
 | |
| <% 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
 | 
