Skip to content

Commit fc9946f

Browse files
committed
DEV: Add converter & importer for permalink_normalizations
1 parent 8f89e28 commit fc9946f

File tree

5 files changed

+69
-0
lines changed

5 files changed

+69
-0
lines changed
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
CREATE TABLE permalink_normalizations
2+
(
3+
normalization TEXT NOT NULL PRIMARY KEY
4+
);
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# frozen_string_literal: true
2+
3+
module Migrations::Converters::Discourse
4+
class PermalinkNormalizations < ::Migrations::Converters::Base::Step
5+
attr_accessor :source_db
6+
7+
def execute
8+
normalizations = @source_db.query_value <<~SQL
9+
SELECT value
10+
FROM site_settings
11+
WHERE name = 'permalink_normalizations'
12+
SQL
13+
14+
return if normalizations.blank?
15+
16+
normalizations
17+
.split("|")
18+
.each { |normalization| IntermediateDB::PermalinkNormalization.create(normalization:) }
19+
end
20+
end
21+
end
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
# frozen_string_literal: true
2+
3+
module Migrations::Database::IntermediateDB
4+
module PermalinkNormalization
5+
SQL = <<~SQL
6+
INSERT INTO permalink_normalizations (normalization)
7+
VALUES (?)
8+
SQL
9+
10+
def self.create(normalization:)
11+
::Migrations::Database::IntermediateDB.insert(SQL, normalization)
12+
end
13+
end
14+
end
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# frozen_string_literal: true
2+
3+
module Migrations::Importer::Steps
4+
class PermalinkNormalizations < ::Migrations::Importer::Step
5+
def execute
6+
super
7+
8+
normalizations = SiteSetting.permalink_normalizations
9+
normalizations = normalizations.blank? ? [] : normalizations.split("|")
10+
11+
rows = @intermediate_db.query <<~SQL
12+
SELECT normalization
13+
FROM permalink_normalizations
14+
ORDER BY ROWID
15+
SQL
16+
17+
rows.each do |row|
18+
normalization = row[:normalization]
19+
normalizations << normalization if normalizations.exclude?(normalization)
20+
end
21+
22+
SiteSetting.permalink_normalizations = normalizations.join("|")
23+
end
24+
end
25+
end
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
# frozen_string_literal: true
2+
3+
RSpec.describe ::Migrations::Database::IntermediateDB::PermalinkNormalization do
4+
it_behaves_like "a database entity"
5+
end

0 commit comments

Comments
 (0)