Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/gitlab/database/schema_validation/structure_sql.rb')
-rw-r--r--lib/gitlab/database/schema_validation/structure_sql.rb16
1 files changed, 16 insertions, 0 deletions
diff --git a/lib/gitlab/database/schema_validation/structure_sql.rb b/lib/gitlab/database/schema_validation/structure_sql.rb
index cb62af8d8b8..687b3b73ec8 100644
--- a/lib/gitlab/database/schema_validation/structure_sql.rb
+++ b/lib/gitlab/database/schema_validation/structure_sql.rb
@@ -19,6 +19,14 @@ module Gitlab
triggers.find { |trigger| trigger.name == trigger_name }.present?
end
+ def fetch_table_by_name(table_name)
+ tables.find { |table| table.name == table_name }
+ end
+
+ def table_exists?(table_name)
+ fetch_table_by_name(table_name).present?
+ end
+
def indexes
@indexes ||= map_with_default_schema(index_statements, SchemaObjects::Index)
end
@@ -27,6 +35,10 @@ module Gitlab
@triggers ||= map_with_default_schema(trigger_statements, SchemaObjects::Trigger)
end
+ def tables
+ @tables ||= table_statements.map { |stmt| SchemaObjects::Table.new(stmt.relation.relname) }
+ end
+
private
attr_reader :structure_file_path, :schema_name
@@ -39,6 +51,10 @@ module Gitlab
statements.filter_map { |s| s.stmt.create_trig_stmt }
end
+ def table_statements
+ statements.filter_map { |s| s.stmt.create_stmt }
+ end
+
def statements
@statements ||= parsed_structure_file.tree.stmts
end