Add abilityto add oneself to lists (#12271)
* Add ability to add oneself to lists * Change search results to include oneself when searching through followers * Mark follow relation as optional in ListAccount
This commit is contained in:
		
							parent
							
								
									1a12943924
								
							
						
					
					
						commit
						65e13cfacf
					
				
					 5 changed files with 14 additions and 7 deletions
				
			
		|  | @ -429,6 +429,8 @@ class Account < ApplicationRecord | |||
|             SELECT target_account_id | ||||
|             FROM follows | ||||
|             WHERE account_id = ? | ||||
|             UNION ALL | ||||
|             SELECT ? | ||||
|           ) | ||||
|           SELECT | ||||
|             accounts.*, | ||||
|  | @ -444,7 +446,7 @@ class Account < ApplicationRecord | |||
|           LIMIT ? OFFSET ? | ||||
|         SQL | ||||
| 
 | ||||
|         records = find_by_sql([sql, account.id, account.id, account.id, limit, offset]) | ||||
|         records = find_by_sql([sql, account.id, account.id, account.id, account.id, limit, offset]) | ||||
|       else | ||||
|         sql = <<-SQL.squish | ||||
|           SELECT | ||||
|  |  | |||
|  | @ -6,13 +6,13 @@ | |||
| #  id         :bigint(8)        not null, primary key | ||||
| #  list_id    :bigint(8)        not null | ||||
| #  account_id :bigint(8)        not null | ||||
| #  follow_id  :bigint(8)        not null | ||||
| #  follow_id  :bigint(8) | ||||
| # | ||||
| 
 | ||||
| class ListAccount < ApplicationRecord | ||||
|   belongs_to :list | ||||
|   belongs_to :account | ||||
|   belongs_to :follow | ||||
|   belongs_to :follow, optional: true | ||||
| 
 | ||||
|   validates :account_id, uniqueness: { scope: :list_id } | ||||
| 
 | ||||
|  | @ -21,6 +21,6 @@ class ListAccount < ApplicationRecord | |||
|   private | ||||
| 
 | ||||
|   def set_follow | ||||
|     self.follow = Follow.find_by(account_id: list.account_id, target_account_id: account.id) | ||||
|     self.follow = Follow.find_by!(account_id: list.account_id, target_account_id: account.id) unless list.account_id == account.id | ||||
|   end | ||||
| end | ||||
|  |  | |||
|  | @ -127,7 +127,7 @@ class AccountSearchService < BaseService | |||
|   end | ||||
| 
 | ||||
|   def following_ids | ||||
|     @following_ids ||= account.active_relationships.pluck(:target_account_id) | ||||
|     @following_ids ||= account.active_relationships.pluck(:target_account_id) + [account.id] | ||||
|   end | ||||
| 
 | ||||
|   def limit_for_non_exact_results | ||||
|  |  | |||
|  | @ -0,0 +1,5 @@ | |||
| class ChangeListAccountFollowNullable < ActiveRecord::Migration[5.1] | ||||
|   def change | ||||
|     change_column_null :list_accounts, :follow_id, true | ||||
|   end | ||||
| end | ||||
|  | @ -10,7 +10,7 @@ | |||
| # | ||||
| # It's strongly recommended that you check this file into your version control system. | ||||
| 
 | ||||
| ActiveRecord::Schema.define(version: 2019_10_07_013357) do | ||||
| ActiveRecord::Schema.define(version: 2019_10_31_163205) do | ||||
| 
 | ||||
|   # These are extensions that must be enabled in order to support this database | ||||
|   enable_extension "plpgsql" | ||||
|  | @ -373,7 +373,7 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do | |||
|   create_table "list_accounts", force: :cascade do |t| | ||||
|     t.bigint "list_id", null: false | ||||
|     t.bigint "account_id", null: false | ||||
|     t.bigint "follow_id", null: false | ||||
|     t.bigint "follow_id" | ||||
|     t.index ["account_id", "list_id"], name: "index_list_accounts_on_account_id_and_list_id", unique: true | ||||
|     t.index ["follow_id"], name: "index_list_accounts_on_follow_id" | ||||
|     t.index ["list_id", "account_id"], name: "index_list_accounts_on_list_id_and_account_id" | ||||
|  |  | |||
		Reference in a new issue