Skip to content

Commit 58a01d1

Browse files
authored
DEV: Check if IntermediateDB schema is valid (#32975)
1 parent 233c54b commit 58a01d1

File tree

2 files changed

+28
-0
lines changed

2 files changed

+28
-0
lines changed

migrations/lib/cli/schema_sub_command.rb

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ def generate
2222
write_db_schema(config, header, schema)
2323
write_db_models(config, header, schema)
2424

25+
validate_schema(db)
26+
2527
puts "Done"
2628
end
2729

@@ -83,6 +85,19 @@ def load_config_file(db)
8385
YAML.load_file(config_path, symbolize_names: true)
8486
end
8587

88+
def validate_schema(type)
89+
Tempfile.create do |tempfile|
90+
begin
91+
::Migrations::Database.migrate(
92+
tempfile,
93+
migrations_path: ::Migrations::Database.schema_path(type),
94+
)
95+
rescue Extralite::SQLError => e
96+
print_error("Invalid schema: #{e.message}")
97+
end
98+
end
99+
end
100+
86101
def print_error(message)
87102
$stderr.puts "ERROR: ".red + message
88103
end

migrations/lib/database.rb

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,19 @@ def self.connect(path)
3131
nil
3232
end
3333

34+
def self.schema_path(type)
35+
case type
36+
when "intermediate_db"
37+
INTERMEDIATE_DB_SCHEMA_PATH
38+
when "mappings_db"
39+
MAPPINGS_DB_SCHEMA_PATH
40+
when "uploads_db"
41+
UPLOADS_DB_SCHEMA_PATH
42+
else
43+
raise "Unknown type: #{type}"
44+
end
45+
end
46+
3447
def self.format_datetime(value)
3548
value&.utc&.iso8601
3649
end

0 commit comments

Comments
 (0)