package context

// railsEquivalenceClasses returns equivalence classes for rails.
func railsEquivalenceClasses() []EquivalenceClass {
	return []EquivalenceClass{
		{
		Concept:    "RAILS_ACTIVE_RECORD",
		Phrases:    []string{"active record", "model association", "has_many", "belongs_to", "has_one", "association"},
		Targets:    []string{"HasManyAssociation", "BelongsToAssociation", "HasOneAssociation", "CollectionProxy", "AssociationScope", "JoinDependency"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_CALLBACKS",
		Phrases:    []string{"callback", "before_save", "after_save", "callback chain", "around callback"},
		Targets:    []string{"Callbacks", "CallbackChain", "before_save", "after_save", "before_create", "after_create", "around_save"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_VALIDATION",
		Phrases:    []string{"rails validation", "custom validation", "validates", "model validation"},
		Targets:    []string{"EachValidator", "ActiveModel::Validations", "validates", "validate", "Validator", "PresenceValidator", "FormatValidator"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_SCOPE",
		Phrases:    []string{"named scope", "scope", "query scope", "default scope", "chain scope"},
		Targets:    []string{"scope", "default_scope", "Relation", "QueryMethods", "WhereChain", "SpawnMethods"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_CONTROLLER",
		Phrases:    []string{"controller action", "before_action", "controller filter", "action controller"},
		Targets:    []string{"ActionController", "BaseController", "before_action", "after_action", "around_action", "AbstractController"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_ACTIVE_JOB",
		Phrases:    []string{"background job", "active job", "async job", "job queue", "enqueue"},
		Targets:    []string{"ActiveJob", "ApplicationJob", "perform_later", "perform_now", "QueueAdapter", "Enqueuing"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_MAILER",
		Phrases:    []string{"action mailer", "send email", "mailer", "email notification"},
		Targets:    []string{"ActionMailer", "ApplicationMailer", "MessageDelivery", "deliver_now", "deliver_later", "mail"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_ACTION_CABLE",
		Phrases:    []string{"action cable", "websocket", "channel", "broadcast", "subscription", "real-time"},
		Targets:    []string{"ActionCable", "Channel", "Connection", "broadcast", "stream_from", "stream_for", "Subscription"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_CONNECTION_POOL",
		Phrases:    []string{"connection pool", "database connection", "connection checkout", "connection reaping"},
		Targets:    []string{"ConnectionPool", "ConnectionHandler", "checkout", "checkin", "reap", "ConnectionAdapter"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_ENUM",
		Phrases:    []string{"enum field", "enum attribute", "model enum", "status enum"},
		Targets:    []string{"ActiveRecord::Enum", "enum", "detect_enum_conflict!"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_REDIRECT",
		Phrases:    []string{"redirect", "redirect_to", "controller redirect", "redirect response"},
		Targets:    []string{"ActionController::Redirecting", "redirect_to", "_compute_redirect_to_location", "ActionController::Rendering"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_ACTIVE_STORAGE",
		Phrases:    []string{"active storage", "file upload", "image variant", "direct upload", "attached file"},
		Targets:    []string{"ActiveStorage::Attached", "has_one_attached", "has_many_attached", "ActiveStorage::Variant", "ActiveStorage::Service"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_MIGRATION",
		Phrases:    []string{"database migration", "add column", "polymorphic association", "migration file", "schema change"},
		Targets:    []string{"ActiveRecord::Migration", "add_column", "add_reference", "add_index", "change_table", "create_table"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_FORM_BUILDER",
		Phrases:    []string{"form builder", "custom form", "form helper", "form field"},
		Targets:    []string{"FormBuilder", "ActionView::Helpers::FormHelper", "form_for", "form_with", "fields_for"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_CONCERN",
		Phrases:    []string{"concern", "shared concern", "active support concern", "soft delete"},
		Targets:    []string{"ActiveSupport::Concern", "included", "class_methods", "extend"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
		{
		Concept:    "RAILS_SAVE_CALLBACKS",
		Phrases:    []string{"save callback", "before save", "after save", "callback chain", "around save", "persistence"},
		Targets:    []string{"ActiveRecord::Callbacks", "ActiveSupport::Callbacks", "set_callback", "run_callbacks", "ActiveRecord::Persistence", "create_or_update", "save"},
		TargetType: "symbol",
		Weight:     0.9,
		Source:     "framework",
		Lang:       "ruby",
		},
	}
}
