42 lines
1.2 KiB
Ruby
42 lines
1.2 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
class CreateDirectoryColumns < ActiveRecord::Migration[6.1]
|
||
|
def up
|
||
|
create_table :directory_columns do |t|
|
||
|
t.string :name, null: true
|
||
|
t.integer :automatic_position, null: true
|
||
|
t.string :icon, null: true
|
||
|
t.integer :user_field_id, null: true
|
||
|
t.boolean :automatic, null: false
|
||
|
t.boolean :enabled, null: false
|
||
|
t.integer :position, null: false
|
||
|
t.datetime :created_at, default: -> { 'CURRENT_TIMESTAMP' }
|
||
|
end
|
||
|
|
||
|
add_index :directory_columns, [:enabled, :position, :user_field_id], name: "directory_column_index"
|
||
|
|
||
|
create_automatic_columns
|
||
|
end
|
||
|
|
||
|
def down
|
||
|
drop_table :directory_columns
|
||
|
end
|
||
|
|
||
|
def create_automatic_columns
|
||
|
DB.exec(
|
||
|
<<~SQL
|
||
|
INSERT INTO directory_columns (
|
||
|
name, automatic, enabled, automatic_position, position, icon
|
||
|
)
|
||
|
VALUES
|
||
|
( 'likes_received', true, true, 1, 1, 'heart' ),
|
||
|
( 'likes_given', true, true, 2, 2, 'heart' ),
|
||
|
( 'topic_count', true, true, 3, 3, NULL ),
|
||
|
( 'post_count', true, true, 4, 4, NULL ),
|
||
|
( 'topics_entered', true, true, 5, 5, NULL ),
|
||
|
( 'posts_read', true, true, 6, 6, NULL ),
|
||
|
( 'days_visited', true, true, 7, 7, NULL );
|
||
|
SQL
|
||
|
)
|
||
|
end
|
||
|
end
|