Class: PgObjects::Parser
- Inherits:
-
Object
- Object
- PgObjects::Parser
- Defined in:
- lib/pg_objects/parser.rb
Overview
Reads directives from SQL-comments
--!depends_on [name_of_dependency]
name_of_dependency: short or full name of object as well as object_name
Constant Summary collapse
- ROUTES =
rubocop: disable Style/WordArray
[ ['DefineStmt', 'defnames', 0, 'String', 'str'], ['CreateFunctionStmt', 'funcname', 0, 'String', 'str'], ['CreateTrigStmt', 'trigname'], ['CreateEventTrigStmt', 'trigname'], ['CompositeTypeStmt', 'typevar', 'RangeVar', 'relname'], ['ViewStmt', 'view', 'RangeVar', 'relname'], ['CreateConversionStmt', 'conversion_name', 0, 'String', 'str'], ['CreateTableAsStmt', 'into', 'IntoClause', 'rel', 'RangeVar', 'relname'], ['CreateOpClassStmt', 'opclassname', 0, 'String', 'str'] ].freeze
Class Method Summary collapse
Class Method Details
.fetch_directives(text) ⇒ Object
27 28 29 30 31 |
# File 'lib/pg_objects/parser.rb', line 27 def fetch_directives(text) { depends_on: fetch_dependencies(text) } end |
.fetch_object_name(text) ⇒ Object
33 34 35 36 37 38 |
# File 'lib/pg_objects/parser.rb', line 33 def fetch_object_name(text) parsed = PgQuery.parse(text).tree.dig(0, 'RawStmt', 'stmt') ROUTES.map { |route| parsed.dig(*route) }.compact[0] rescue PgQuery::ParseError, NoMethodError nil end |