* Add ability to add oneself to lists * Change search results to include oneself when searching through followers * Mark follow relation as optional in ListAccountmaster^2
@@ -429,6 +429,8 @@ class Account < ApplicationRecord | |||||
SELECT target_account_id | SELECT target_account_id | ||||
FROM follows | FROM follows | ||||
WHERE account_id = ? | WHERE account_id = ? | ||||
UNION ALL | |||||
SELECT ? | |||||
) | ) | ||||
SELECT | SELECT | ||||
accounts.*, | accounts.*, | ||||
@@ -444,7 +446,7 @@ class Account < ApplicationRecord | |||||
LIMIT ? OFFSET ? | LIMIT ? OFFSET ? | ||||
SQL | 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 | else | ||||
sql = <<-SQL.squish | sql = <<-SQL.squish | ||||
SELECT | SELECT | ||||
@@ -6,13 +6,13 @@ | |||||
# id :bigint(8) not null, primary key | # id :bigint(8) not null, primary key | ||||
# list_id :bigint(8) not null | # list_id :bigint(8) not null | ||||
# account_id :bigint(8) not null | # account_id :bigint(8) not null | ||||
# follow_id :bigint(8) not null | |||||
# follow_id :bigint(8) | |||||
# | # | ||||
class ListAccount < ApplicationRecord | class ListAccount < ApplicationRecord | ||||
belongs_to :list | belongs_to :list | ||||
belongs_to :account | belongs_to :account | ||||
belongs_to :follow | |||||
belongs_to :follow, optional: true | |||||
validates :account_id, uniqueness: { scope: :list_id } | validates :account_id, uniqueness: { scope: :list_id } | ||||
@@ -21,6 +21,6 @@ class ListAccount < ApplicationRecord | |||||
private | private | ||||
def set_follow | 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 | ||||
end | end |
@@ -127,7 +127,7 @@ class AccountSearchService < BaseService | |||||
end | end | ||||
def following_ids | def following_ids | ||||
@following_ids ||= account.active_relationships.pluck(:target_account_id) | |||||
@following_ids ||= account.active_relationships.pluck(:target_account_id) + [account.id] | |||||
end | end | ||||
def limit_for_non_exact_results | 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. | # 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 | # These are extensions that must be enabled in order to support this database | ||||
enable_extension "plpgsql" | enable_extension "plpgsql" | ||||
@@ -373,7 +373,7 @@ ActiveRecord::Schema.define(version: 2019_10_07_013357) do | |||||
create_table "list_accounts", force: :cascade do |t| | create_table "list_accounts", force: :cascade do |t| | ||||
t.bigint "list_id", null: false | t.bigint "list_id", null: false | ||||
t.bigint "account_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 ["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 ["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" | t.index ["list_id", "account_id"], name: "index_list_accounts_on_list_id_and_account_id" | ||||