TagName サニタイズ(#281) (#289)
#281 #281 Merge remote-tracking branch 'origin/main' into feature/281 #281 #281 テストまだ通ってないので要確認 Co-authored-by: miteruzo <miteruzo@naver.com> Reviewed-on: #289
This commit was merged in pull request #289.
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
class CreateTagNameSanitisationRules < ActiveRecord::Migration[8.0]
|
||||
def up
|
||||
create_table :tag_name_sanitisation_rules, id: :integer, primary_key: :priority do |t|
|
||||
t.string :source_pattern, null: false
|
||||
t.string :replacement, null: false
|
||||
t.timestamps
|
||||
t.datetime :discarded_at
|
||||
t.index :source_pattern, unique: true
|
||||
t.index :discarded_at
|
||||
end
|
||||
|
||||
now = ActiveRecord::Base.connection.quote(Time.current)
|
||||
execute <<~SQL
|
||||
INSERT INTO
|
||||
tag_name_sanitisation_rules(priority, source_pattern, replacement, created_at, updated_at)
|
||||
VALUES
|
||||
(10, '\\\\*', '_', #{ now }, #{ now })
|
||||
, (20, '\\\\?', '_', #{ now }, #{ now })
|
||||
, (25, '\\\\/', '_', #{ now }, #{ now })
|
||||
, (30, '_+', '_', #{ now }, #{ now })
|
||||
, (40, '_$', '', #{ now }, #{ now })
|
||||
, (45, '^([^:]+\\\\:)?_', '\\\\1', #{ now }, #{ now })
|
||||
, (50, '^([^:]+\\\\:)?$', '\\\\1null', #{ now }, #{ now })
|
||||
;
|
||||
SQL
|
||||
end
|
||||
|
||||
def down
|
||||
drop_table :tag_name_sanitisation_rules
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
class AddDiscardedAtToTagNames < ActiveRecord::Migration[8.0]
|
||||
def change
|
||||
add_column :tag_names, :discarded_at, :datetime
|
||||
add_index :tag_names, :discarded_at
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,6 @@
|
||||
class AddDiscardedAtToWikiPages < ActiveRecord::Migration[8.0]
|
||||
def change
|
||||
add_column :wiki_pages, :discarded_at, :datetime
|
||||
add_index :wiki_pages, :discarded_at
|
||||
end
|
||||
end
|
||||
Generated
+5
-1
@@ -10,7 +10,7 @@
|
||||
#
|
||||
# It's strongly recommended that you check this file into your version control system.
|
||||
|
||||
ActiveRecord::Schema[8.0].define(version: 2026_03_11_123100) do
|
||||
ActiveRecord::Schema[8.0].define(version: 2026_03_11_232300) do
|
||||
create_table "active_storage_attachments", charset: "utf8mb4", collation: "utf8mb4_0900_ai_ci", force: :cascade do |t|
|
||||
t.string "name", null: false
|
||||
t.string "record_type", null: false
|
||||
@@ -142,7 +142,9 @@ ActiveRecord::Schema[8.0].define(version: 2026_03_11_123100) do
|
||||
t.bigint "canonical_id"
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.datetime "discarded_at"
|
||||
t.index ["canonical_id"], name: "index_tag_names_on_canonical_id"
|
||||
t.index ["discarded_at"], name: "index_tag_names_on_discarded_at"
|
||||
t.index ["name"], name: "index_tag_names_on_name", unique: true
|
||||
end
|
||||
|
||||
@@ -204,7 +206,9 @@ ActiveRecord::Schema[8.0].define(version: 2026_03_11_123100) do
|
||||
t.bigint "updated_user_id", null: false
|
||||
t.datetime "created_at", null: false
|
||||
t.datetime "updated_at", null: false
|
||||
t.datetime "discarded_at"
|
||||
t.index ["created_user_id"], name: "index_wiki_pages_on_created_user_id"
|
||||
t.index ["discarded_at"], name: "index_wiki_pages_on_discarded_at"
|
||||
t.index ["tag_name_id"], name: "index_wiki_pages_on_tag_name_id", unique: true
|
||||
t.index ["updated_user_id"], name: "index_wiki_pages_on_updated_user_id"
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user