# frozen_string_literal: true class DirectoryColumn < ActiveRecord::Base # TODO(2021-06-18): Remove automatic column self.ignored_columns = ["automatic"] self.inheritance_column = nil enum type: { automatic: 0, user_field: 1, plugin: 2 }, _scopes: false def self.automatic_column_names @automatic_column_names ||= [:likes_received, :likes_given, :topics_entered, :topic_count, :post_count, :posts_read, :days_visited] end def self.active_column_names DirectoryColumn.where(type: [:automatic, :plugin]).where(enabled: true).pluck(:name).map(&:to_sym) end @@plugin_directory_columns = [] def self.plugin_directory_columns @@plugin_directory_columns end belongs_to :user_field def self.clear_plugin_directory_columns @@plugin_directory_columns = [] end def self.find_or_create_plugin_directory_column(attrs) directory_column = find_or_create_by( name: attrs[:column_name], icon: attrs[:icon], type: DirectoryColumn.types[:plugin] ) do |column| column.position = DirectoryColumn.maximum("position") + 1 column.enabled = false end unless @@plugin_directory_columns.include?(directory_column.name) @@plugin_directory_columns << directory_column.name DirectoryItem.add_plugin_query(attrs[:query]) end end end # == Schema Information # # Table name: directory_columns # # id :bigint not null, primary key # name :string # automatic_position :integer # icon :string # user_field_id :integer # enabled :boolean not null # position :integer not null # created_at :datetime # type :integer default("automatic"), not null # # Indexes # # directory_column_index (enabled,position,user_field_id) #