FEATURE: Add external_id to topics (#15825)

* FEATURE: Add external_id to topics

This commit allows for topics to be created and fetched by an
external_id. These changes are API only for now as there aren't any
front changes.

* add annotations

* add external_id to this spec

* Several PR feedback changes

- Add guardian to find topic
- 403 is returned for not found as well now
- add `include_external_id?`
- external_id is now case insensitive
- added test for posts_controller
- added test for topic creator
- created constant for max length
- check that it redirects to the correct path
- restrain external id in routes file

* remove puts

* fix tests

* only check for external_id in webhook if exists

* Update index to exclude external_id if null

* annotate

* Update app/controllers/topics_controller.rb

We need to check whether the topic is present first before passing it to the guardian.

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>

* Apply suggestions from code review

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>

Co-authored-by: Alan Guo Xiang Tan <gxtan1990@gmail.com>
This commit is contained in:
Blake Erickson
2022-02-08 20:55:32 -07:00
committed by GitHub
parent 59343c3057
commit 71f7f7ed49
13 changed files with 145 additions and 1 deletions

View File

@@ -0,0 +1,8 @@
# frozen_string_literal: true
class AddExternalIdToTopics < ActiveRecord::Migration[6.1]
def change
add_column :topics, :external_id, :string, null: true
add_index :topics, :external_id, unique: true, where: 'external_id IS NOT NULL'
end
end